ぜのぜ

しりとりしようぜのぜのぜのぜ

29日目 FizzBuzz

日記

最近ロシア語を喋りたくなってきたのでロシア語コンテンツをYouTubeで観てるんだけど,聞き取れるようになる気がしない.何で俺は英語がある程度聞き取れるのかめちゃくちゃ不思議.やっぱ義務教育ってすごいんですね.

今日書いたコード

今日は何もやる気が出なかったのでFizzBuzzを書いた.

❯ echo -n '(1...100).map{($0 % 3==0 ?"fizz":($0 % 5==0 ?"":"\($0)"))+($0 % 5==0 ?"buzz":"")}' | wc -m
      81

言語化できたレギュレーションは以下の通り

  • let actual =以降の文字列を最小化する
  • playground上で走らせられる
  • check(_ actual:)assertで落ちない
func check(_ actual: [String]) {
    var expected: [String] = []
    for i in 1...100 {
        let tmp: String = {
            if i % 3 == 0 {
                return i % 5 == 0 ? "fizzbuzz" : "fizz"
            } else  if i % 5 == 0 {
                return "buzz"
            } else {
                return "\(i)"
            }
        }()
        expected.append(tmp)
    }

    for (e, a) in zip(expected, actual) {
        print(e, a, separator: " ")
    }

    assert(expected.elementsEqual(actual))
}

//let actual = (1...100).map {"\($0 % 3 == 0 ? "fizz" : ($0 % 5 != 0 ? "\($0)" : ""))\($0 % 5 == 0 ? "buzz" : "")" }
let actual = (1...100).map{($0 % 3==0 ?"fizz":($0 % 5==0 ?"":"\($0)"))+($0 % 5==0 ?"buzz":"")}
//let actual = (1...100).map {"\($0 % 3 == 0 ? "fizz" : ($0 % 5 != 0 ? "\($0)" : ""))\($0 % 5 == 0 ? "buzz" : "")" }

check(actual)

初めて知ったこと

🍐