今日も1日がんばるぞい!

こういう話がある

これをF#でやりたい。

open System
let dic = [ [|"今日"; "ぞい"|]; [|"も"|]; [|"1"; "ぞい"|]; [|"日"; "ぞい"|]; [|"がん"; "ぞい"|]; [|"ばる"; "ぞい"|]; [|"ぞい!"|]]
let rnd = new System.Random()
let make_zoi (x : string [] list) =
    let rec make_zoi_inner (lst : string [] list) = 
        match lst with
        | head::tail ->
            head.[rnd.Next(Array.length head)] + make_zoi_inner(tail)
        | [] -> ""
    make_zoi_inner x  
let count_zoi(x : string [] list) = 
    let rec count_zoi_inner count = 
        let zoi = make_zoi(x)
        printfn "%s" zoi
        match zoi with
        | "今日も1日がんばるぞい!" -> count + 1
        | _ ->     count_zoi_inner(count+1)
    count_zoi_inner 0

printfn "🌟 がんばるまで %d zoiでした🌟" (count_zoi dic)

実行すると以下。

> 
ぞいもぞいぞいがんぞいぞい!
ぞいも1日ぞいばるぞい!
今日も1日ぞいばるぞい!
今日もぞい日ぞいぞいぞい!
ぞいもぞい日ぞいばるぞい!
今日もぞいぞいぞいぞいぞい!
今日も1日がんばるぞい!
🌟 がんばるまで 7 zoiでした🌟
val it : unit = ()