Brainfuck - 680
coba di sini: ideone.com/Wi9ftB
>>>++++[>+++++++++[>+++[<<<<+<+>>>>>-]<<<+<<<+<+>>>>>>-]<-]+<++++++++<+++<---------<++++++++
++++<----<++++++++++<+++[>>>+.>>>.<<<<.>>>>>>[>[<<<<<<--------.-.>>>.<<<<.>+..<.>>>.>-----.<
------------.+++++++++.+++.------------.++++++++.++++>+++++.<<<<.>.+.>>>>->>-]+<<+>-]+<[<<<<
+.>>>.<<<<.>+.<.>>>.>-----.<<.>---.+++.<.>----.++++>+++++.<<<<.>+.>>>>-]<<<<<.>>>.>-----.<<.
>---.+++.<.>----.<<<.>>>+++++++.---.<.>----.++++>+++++.<<<<<.<-]>[>>++++<<-]>>---.[-]<[>+<-]
>>++.>>-----.<+++.<.<.>++.>---.-..<------.<.>>++++.---.<++.>----.<<.>--.>+++++++.---.++++++.
-------.<+++.<.>>++++++.<++++.---.<.>--.>--------.+++.<.>----.<<.>>+++++++++.-----.-.-----.-
-.+.>[>+++<-]>-.<<<---[>>+<<--]>>--.
seperti yang saya janjikan, ini versi yang lebih baik. otakku terasa seperti .. ooh jadi dari situlah nama itu berasal.
PENJELASAN: (karena tidak dapat dipelihara dan saya tidak ingin melupakan cara kerjanya)
pertama Anda harus memilih tata letak data terbaik untuk tantangan ini. saya datang dengan
-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
Kami harus yakin ini optimal kecuali akan ada terlalu banyak shift (yang mana Anda harus mengatur ulang tata letak)
Setelah itu saya menggunakan loop 4x9x3 untuk mengatur nilai awal untuk baris baru, angka, dua huruf kecil dan koma. (semua kode ascii yang lebih kecil mendapat 4x9 = 36 dan dua huruf kecil mendapat 4x9x3 = 108, lalu saya menambahkan dan mengurangi beberapa untuk mendapatkan nilai sebenarnya)
Ketika preset selesai, kode memasuki loop terluar yang berputar 3 kali. Saya menjelaskannya dengan pseudocode.
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'
Ketika bagian ini selesai saya hanya perlu mencetak baris terakhir. Tetapi kami memiliki huruf kapital W yang harus diproduksi tanpa menggunakan terlalu banyak karakter. Pada titik ini kita ada di sini:
Address Value Pointer
-4 0 <--
-3 10
-2 32
-1 50
1 99
2 111
3 44
jadi saya menempatkan [-3] 4 kali ke [-1] dan mengurangi 3 untuk mendapatkan 87 (W): >[>>++++<<-]>>---.
kemudian hapus [-]
dan pindahkan [-2] ke lokasi ini [-1] sehingga ruang akan dekat dengan huruf kecil.<[>+<-]
Setelah itu baru cetak hurufnya. huruf kecil # 1 untuk bagian bawah 97-107 dan huruf kecil # 2 untuk wilayah di atas.