Brainfuck - 680
testalo qui: ideone.com/Wi9ftB
>>>++++[>+++++++++[>+++[<<<<+<+>>>>>-]<<<+<<<+<+>>>>>>-]<-]+<++++++++<+++<---------<++++++++
++++<----<++++++++++<+++[>>>+.>>>.<<<<.>>>>>>[>[<<<<<<--------.-.>>>.<<<<.>+..<.>>>.>-----.<
------------.+++++++++.+++.------------.++++++++.++++>+++++.<<<<.>.+.>>>>->>-]+<<+>-]+<[<<<<
+.>>>.<<<<.>+.<.>>>.>-----.<<.>---.+++.<.>----.++++>+++++.<<<<.>+.>>>>-]<<<<<.>>>.>-----.<<.
>---.+++.<.>----.<<<.>>>+++++++.---.<.>----.++++>+++++.<<<<<.<-]>[>>++++<<-]>>---.[-]<[>+<-]
>>++.>>-----.<+++.<.<.>++.>---.-..<------.<.>>++++.---.<++.>----.<<.>--.>+++++++.---.++++++.
-------.<+++.<.>>++++++.<++++.---.<.>--.>--------.+++.<.>----.<<.>>+++++++++.-----.-.-----.-
-.+.>[>+++<-]>-.<<<---[>>+<<--]>>--.
come ho promesso, ecco una versione migliore. il mio cervello sembra .. ooh, ecco da dove viene il nome.
spiegazione: (perché non è sostenibile e non voglio dimenticare come funziona)
in primo luogo devi scegliere il miglior layout di dati per questa sfida. mi è venuta in mente
-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
Dobbiamo credere che questo sia ottimale a meno che non ci siano troppi turni (nel qual caso devi riorganizzare il layout)
Successivamente ho usato un ciclo 4x9x3 per impostare i valori iniziali per newline, numero, le due lettere minuscole e la virgola. (tutti i codici ASCII più piccoli hanno ottenuto 4x9 = 36 e le due lettere minuscole hanno ottenuto 4x9x3 = 108, quindi ho aggiunto e sottratto alcuni per ottenere il loro valore reale)
Al termine della preselezione, il codice entra nel ciclo più esterno che cicla 3 volte. Lo spiego per pseudocodice.
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'
Al termine di questa sezione, devo solo stampare l'ultima riga. Ma abbiamo una W maiuscola che deve essere prodotta senza usare troppi caratteri. A questo punto siamo qui:
Address Value Pointer
-4 0 <--
-3 10
-2 32
-1 50
1 99
2 111
3 44
quindi ho messo [-3] 4 volte su [-1] e ne ho sottratto 3 per ottenere 87 (W): >[>>++++<<-]>>---.
quindi lo cancello [-]
e sposto [-2] in questa posizione [-1] in modo che lo spazio sia vicino alle lettere minuscole.<[>+<-]
Dopodiché stampa solo le lettere. la minuscola n. 1 è per la parte inferiore 97-107 e la minuscola n. 2 è per la regione sopra.