Swiftでズンドコキヨシ(ビット演算版)

  • 1
    Like
  • 0
    Comment
More than 1 year has passed since last update.

晩飯食おうと思ったら謎のブームが来ていたので一つ書いてみました。
元ネタ→http://qiita.com/shunsugai@github/items/971a15461de29563bf90

ソースと解説

import UIKit
var his = UInt8.max
repeat {
    let doko = UInt8(arc4random_uniform(2))
    his = (his << 1) | doko
    print(doko == 1 ? "ドコ" : "ズン")
} while (his & 0x1f) != 1
print("キ・ヨ・シ!!")

変数hisに0(ズン)か1(ドコ)かを溜めていって、
ズンズンズンズンドコ、つまり変数hisの下位5ビットが00001になったらループを抜けてキヨシを出力する感じです。

また、変数his11111111で初期化することで、いきなりドコが来た時などの誤判定を防いでいます(無理矢理感あります)。

出力例

ドコ
ズン
ズン
ドコ
ズン
ドコ
ドコ
ドコ
ドコ
ズン
ドコ
ズン
ドコ
ズン
ドコ
ドコ
ズン
ドコ
ドコ
ドコ
ドコ
ズン
ズン
ズン
ドコ
ズン
ズン
ドコ
ズン
ドコ
ドコ
ズン
ドコ
ドコ
ズン
ドコ
ズン
ズン
ズン
ドコ
ドコ
ドコ
ズン
ドコ
ズン
ズン
ドコ
ドコ
ズン
ドコ
ズン
ズン
ドコ
ズン
ズン
ドコ
ズン
ドコ
ドコ
ドコ
ズン
ドコ
ズン
ズン
ドコ
ドコ
ズン
ドコ
ズン
ドコ
ズン
ドコ
ズン
ドコ
ドコ
ズン
ドコ
ズン
ドコ
ドコ
ズン
ドコ
ドコ
ズン
ドコ
ドコ
ドコ
ズン
ズン
ズン
ズン
ドコ
キ・ヨ・シ!!