ズンドコキヨシ with F#

  • 3
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

まだズンドコキヨシタグに投稿されていない言語を探したら F# が残ってたので、全くやったことなかったけど書いてみました

実装

open System

let z, d = "ずん", "どこ"
let r = new Random()
let allEqual = Array.forall2 (fun (x: string) (y: string) -> x.Equals(y))
let terminator = [|z; z; z; z; d|]

let zd ()= [|z; d|].[r.Next(0, 2)]

let rec zundoko (prev : string array) : unit =
    let msg = zd()

    printf "%s" msg

    let current = Array.append prev [|msg|]

    match current with
    | [|_|]
    | [|_; _|]
    | [|_; _; _|]
    | [|_; _; _; _|] ->
        zundoko current
    | [|_; _; _; _; _|] ->
        if (Array.forall2 (fun a b -> a.Equals(b)) current terminator) then
            printfn "キ・ヨ・シ!"
        else
            zundoko current.[1..4]
    | _ -> ()

zundoko [||]

0

実行と結果

fsharpi hoge.fsx
どこずんずんずんずんずんどこキ・ヨ・シ!