Best One Liner

最高のワンライナー

受賞者:Stephen Sykes

引用元:https://www.ioccc.org/2006/sykes2/sykes2.c

審査員・作者による説明:https://www.ioccc.org/2006/sykes2/hint.text

動作

デジタル時計を表示する。

$ gcc -o sykes2 sykes2.c

$ ./sykes2
    !!  !!!!!!          !!!!!!  !!!!!!          !!!!!!      !!
    !!  !!  !!          !!  !!  !!  !!          !!  !!      !!
    !!  !!  !!          !!  !!  !!  !!          !!  !!      !!
    !!  !!!!!!    !!    !!  !!  !!  !!    !!    !!  !!      !!
    !!      !!          !!  !!  !!  !!          !!  !!      !!
    !!      !!          !!  !!  !!  !!          !!  !!      !!
    !!  !!!!!!          !!!!!!  !!!!!!          !!!!!!      !!

解説

130文字のワンライナー。

">'txiZ^(~z?"7segのフォントデータに相当する。 各文字の2進数表記は次の通り。

      6543210
'0' : 0111111 ('>')
'1' : 0101000 ('\'')
'2' : 1110101 ('t')
'3' : 1111001 ('x')
'4' : 1101010 ('i')
'5' : 1011011 ('Z')
'6' : 1011111 ('^')
'7' : 0101001 ('(')
'8' : 1111111 ('~')
'9' : 1111011 ('z')
':' : 1000000 ('?')

このそれぞれのビットは、次に示す位置を塗るべきかどうかを表現している。

004455
11  55
11  55
116655
22  33
22  33
444433

たとえば0は、6以外の位置を塗りつぶす。 1は、3と5だけを塗りつぶす。 2は、0、2、4、5、6を塗りつぶす。

このレイアウトのマスクは、";;;====~$::199"[(i*2&8)|(i/64)]/(i&2?1:8)%8という式が作り出す。

プログラムは全体的に、極力短いコードでこれらを実現できるよう、計算方法や演算子の選択を非常に巧妙に行っている。 演算子の優先順位表を見たくなるだろう、とのこと。