この質問は、本「Godel、Escher、Bach」の表紙から着想を得ています。
ここでの課題は、指定された3つの文字が3辺から読み取ることができる3D彫刻を生成できるかどうかを示す関数を記述することです。
この演習で使用できる文字は、26個の5px * 5pxビットマップのみです。
またはバイナリ(AからZ):
01110 11110 01111 11110 11111 11111 11111 10001 11111 11111 10001 10000 10001 10001 01110 11110 01110 11110 01111 11111 10001 10001 10001 10001 10001 11111
10001 10001 10000 10001 10000 10000 10000 10001 00100 00100 10010 10000 11011 11001 10001 10001 10001 10001 10000 00100 10001 10001 10001 01010 01010 00010
10001 11110 10000 10001 11100 11110 10011 11111 00100 00100 11100 10000 10101 10101 10001 10001 10001 11111 01110 00100 10001 01010 10001 00100 00100 00100
11111 10001 10000 10001 10000 10000 10001 10001 00100 10100 10010 10000 10001 10011 10001 11110 10011 10010 00001 00100 10001 01010 10101 01010 00100 01000
10001 11110 01111 11110 11111 10000 11111 10001 11111 11100 10001 11111 10001 10001 01110 10000 01111 10001 11110 00100 01110 00100 01010 10001 00100 11111
彫刻は、次の順序で3文字で構成されています。
- 上の文字1、
- 左側の文字2
- 右側の文字3
- 文字1の下部は文字2の上部にバインドされます。
例:
関数は、入力として3つの大文字(3文字または1文字の3文字列)を受け入れ、対応する彫刻が存在できるかどうかを示すブール値(true / falseまたは0/1)を出力します。
例:
f("B","E","G") // true (because if you "sculpt out" B on top + E on the left + G on the right, and watch the three sides of the sculpture, you'll see exactly B, E and G as they are defined)
f("B","G","E") // false (because if you "sculpt out" B on top + G on the left + E on the right, and watch the three sides of the sculpture, you won't see a complete G and a complete E. Their shapes bother each other)
注:彫刻に「フライングピクセル」(何にも接続されていないキューブまたはキューブのグループ)が含まれている場合でも、trueを返すことがあります。
標準の抜け穴が適用されます。
より正確には、3文字以外の外部入力を使用することはできません。また、ソースコードで17576の可能な回答をハードコードすることはできません。
どの言語の文字でも最短回答が勝ちます!
楽しむ :)