A02 - Linear Search

入出力

1
2
3
let N,X = stdin.ReadLine().Split() |> Array.map int |> (fun x -> x.[0],x.[1])
let Ia = stdin.ReadLine().Split() |> Array.map int
solve N X Ia |> stdout.WriteLine

解説

線型探索だから先頭から調べます. 命令型言語ではforで見つかり次第breakします. F#でもほぼ同じように書けるもののbreakがありません. 見つかり次第breakするには再帰関数で処理を書くしかありません.

1
2
3
4
5
6
let solve N X Ia =
  let rec lsearch i =
    if i = N-1 then "No"
    elif Array.get Ia i = X then "Yes"
    else lsearch (i+1)
  lsearch 0

最後まで見つからなかったら"No"を返すのを忘れないようにしましょう. 上記のように停止条件を忘れないように条件分岐の一番最初に書いておくのがベターです.