ズンドコキヨシをSwiftのAnyGeneratorとlazyで

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

小学生の息子がズンドコキヨシをPythonで作ったので、もうかなり出遅れたけど私はSwiftのAnyGeneratorとlazyを使ってやってみた。

enum Zundoko: String {
    case Zun = "ズン"
    case Doko = "ドコ"
}

var zundoko = Array<Zundoko>()
let gen = anyGenerator { return arc4random_uniform(2) == 0 ? Zundoko.Zun : Zundoko.Doko }
    .lazy
    .map { (zd) -> [Zundoko] in
        zundoko.append(zd)
        if zundoko.count > 5 {
            zundoko.removeFirst()
        }
        return Array(zundoko)
    }
    .filter { (zundoko: [Zundoko]) -> Bool in
        print(zundoko.last!.rawValue)
        let result = zundoko.map { $0.rawValue } .joinWithSeparator("") == "ズンズンズンズンドコ"
        if result { print("キ・ヨ・シ!") }
        return result
}

gen.prefix(1).generate().next()