Best Layout

最高のレイアウト

受賞者:Dean Swift

引用元:https://www.ioccc.org/1996/gandalf.c

審査員・作者による説明:https://github.com/ioccc-src/winner/blob/main/1996/gandalf.hint

動作

ASCII表を出す。

$ gcc -o gandalf gandalf.c

$ ./gandalf
   0123456789ABCDEF

2   !"#$%&'()*+,-./
3  0123456789:;<=>?
4  @ABCDEFGHIJKLMNO
5  PQRSTUVWXYZ[\]^_
6  `abcdefghijklmno
7  pqrstuvwxyz{|}~
8  ����������������
9  ����������������
A  ����������������
B  ����������������
C  ����������������
D  ����������������
E  ����������������
F  ����������������

argv[0]の先頭の文字がASCIIコードで偶数のときは8 bit文字の範囲を表示しなくなる。

$ PATH=. hatcat
   0123456789ABCDEF

2   !"#$%&'()*+,-./
3  0123456789:;<=>?
4  @ABCDEFGHIJKLMNO
5  PQRSTUVWXYZ[\]^_
6  `abcdefghijklmno
7  pqrstuvwxyz{|}~

解説

このプログラムについては、ネタもコードもあまり理解できていない。

英語圏で著名な絵本作家である、Dr. Seussの絵本がネタになっている。 冒頭のdo you like (green eggs and ham++)?のあたりはGreen Eggs and Hamのセリフで、アスキーアートになっているのはThe Cat in the Hatの猫。 しかしこれらが「ASCII表を表示する」という挙動と関係があるのかはわからなかった。

パッチ前の状態では、マクロ定義に#が含まれているなどでコンパイルエラーになる。 他にもいろいろと壊れたプログラムになっていて、C89からすでに7年経っていた当時、どういうコンパイラがこのコードをコンパイルできていたのかわからない。 おそらく、doで始まる行は無視されることが想定されているように見える。 少なくとも実行には意味がなさそうなので、関連箇所を削除することでコンパイルはできた。

パッチ

パッチをダウンロード