ブレインファック-680
ここでテストしてください:ideone.com/Wi9ftB
>>>++++[>+++++++++[>+++[<<<<+<+>>>>>-]<<<+<<<+<+>>>>>>-]<-]+<++++++++<+++<---------<++++++++
++++<----<++++++++++<+++[>>>+.>>>.<<<<.>>>>>>[>[<<<<<<--------.-.>>>.<<<<.>+..<.>>>.>-----.<
------------.+++++++++.+++.------------.++++++++.++++>+++++.<<<<.>.+.>>>>->>-]+<<+>-]+<[<<<<
+.>>>.<<<<.>+.<.>>>.>-----.<<.>---.+++.<.>----.++++>+++++.<<<<.>+.>>>>-]<<<<<.>>>.>-----.<<.
>---.+++.<.>----.<<<.>>>+++++++.---.<.>----.++++>+++++.<<<<<.<-]>[>>++++<<-]>>---.[-]<[>+<-]
>>++.>>-----.<+++.<.<.>++.>---.-..<------.<.>>++++.---.<++.>----.<<.>--.>+++++++.---.++++++.
-------.<+++.<.>>++++++.<++++.---.<.>--.>--------.+++.<.>----.<<.>>+++++++++.-----.-.-----.-
-.+.>[>+++<-]>-.<<<---[>>+<<--]>>--.
私が約束したように、こちらがより良いバージョンです。私の脳のように感じる..ああ、それは名前の由来です。
説明:(メンテナンスできないため、どのように機能するかを忘れたくないので)
まず、この課題に最適なデータレイアウトを選択する必要があります。思いついた
-4 outmost loop
-3 newline char
-2 space
-1 numbers
1 lowercase #1
2 lowercase #2
3 comma, apostrophe, period
4 condition (outmost loop < 3)
5 inner loop
6 second inner loop
シフトが多すぎる場合を除き、これが最適であると信じる必要があります(この場合、レイアウトを再配置する必要があります)
その後、4x9x3ループを使用して、改行、数値、2つの小文字、およびコンマの開始値を設定しました。(より小さいASCIIコードはすべて4x9 = 36を取得し、2つの小文字は4x9x3 = 108を取得し、実際の値を取得するためにいくつかを追加および減算しました)
プリセットが完了すると、コードは3回循環する最も外側のループに入ります。擬似コードで説明します。
for 3 to 1 where i = numbers
print '++i, '
while inner_loop != 0 # this is true after the first loop
while second_inner_loop != 0 # and this is true after the second
print '10, 11 o'clock, 12' # prints the difference
condition = 0 # it prevents the printing below
second_inner_loop += 1
inner_loop += 1
while condition != 0
print '++i, ++i o'clock, ++i'
print ' o'clock rock,\n'
このセクションが完了したら、最後の行を印刷するだけです。しかし、大文字のWは、あまり多くの文字を使用せずに生成する必要があります。この時点でここにいます:
Address Value Pointer
-4 0 <--
-3 10
-2 32
-1 50
1 99
2 111
3 44
[-1]に4回[-3]を入力し、87(W)を得るために3を減算します。>[>>++++<<-]>>---.
その後、消去して[-]
[-2]をこの場所[-1]に移動し、スペースが小文字に近くなるようにします。<[>+<-]
その後、文字を印刷するだけです。小文字#1は下部97-107用で、小文字#2は上記の領域用です。