074 D - Harlequin

解説

特記事項はなく, 解説通り次のように書けばいいでしょう.

1
2
3
4
5
let solve = Array.forall (fun x -> x%2=0) >> fun b -> if b then "second" else "first"

let N = stdin.ReadLine() |> int
let Aa = Array.init N (fun _ -> stdin.ReadLine() |> int)
solve Aa |> stdout.WriteLine

関数の合成としてsolveの引数を省略して書いています. 関数の合成は>>です. 数学での関数合成は$f \circ g$で$g$を作用させてから$f$を作用させます. F#でこれを書きたいならf << gです. パイプラインの発想と同じく左から右に流して書くにはg >> fです.

上記のsolveは引数をつけると次のように書けます.

1
let solve Aa = Aa |> Array.forall (fun x -> x%2=0) |> fun b -> if b then "second" else "first"

「全て偶数」の代わりに「奇数が存在する」と書きたければ次のようにも書けます.

1
let solve = Array.exists (fun x -> x%2=1) >> fun b -> if b then "first" else "second"