1. Qiita
  2. 投稿
  3. C

ズンドコキヨシ with C

  • 14
    いいね
  • 2
    コメント

http://qiita.com/shunsugai@github/items/971a15461de29563bf90

C言語版がなかったので:

#include <stdlib.h>
#include <stdio.h>

int main()
{
  int nlz = 0, c = 0;
  do {
    nlz = c ? (nlz + 1) : 0;
    c = (rand() >> 3) & 1;  /* DIRTY HACK */
    printf("%s ", c ? "ズン" : "ドコ");
  } while (nlz < 4 || c);
  puts("キ・ヨ・シ!");
}

/* nlz == number of leading ZUN */

短くしたやつ

int n,c;main(){while(n<4||c){n=c?(n+1):0;puts((c=rand()&1)?"ズン":"ドコ");}puts("キ・ヨ・シ!");}

もう一歩(-5b)

int n,c;main(){for(;n<4||c;puts(c?"ズン":"ドコ"))n=c?n+1:0,c=rand()&1;puts("キ・ヨ・シ!");}

GCC 4.8.2とClang 3.3で実行可能(ただし各種警告は無視するものとする)。変数n,cは静的記憶域期間を持つため0初期化が保証される。rand()が返す下位1ビットで擬似乱数系列分布の質が悪いと、プログラムが終了しない可能性もある。

Comments Loading...