Brainfuck - 680
pruébalo aquí: ideone.com/Wi9ftB
>>>++++[>+++++++++[>+++[<<<<+<+>>>>>-]<<<+<<<+<+>>>>>>-]<-]+<++++++++<+++<---------<++++++++
++++<----<++++++++++<+++[>>>+.>>>.<<<<.>>>>>>[>[<<<<<<--------.-.>>>.<<<<.>+..<.>>>.>-----.<
------------.+++++++++.+++.------------.++++++++.++++>+++++.<<<<.>.+.>>>>->>-]+<<+>-]+<[<<<<
+.>>>.<<<<.>+.<.>>>.>-----.<<.>---.+++.<.>----.++++>+++++.<<<<.>+.>>>>-]<<<<<.>>>.>-----.<<.
>---.+++.<.>----.<<<.>>>+++++++.---.<.>----.++++>+++++.<<<<<.<-]>[>>++++<<-]>>---.[-]<[>+<-]
>>++.>>-----.<+++.<.<.>++.>---.-..<------.<.>>++++.---.<++.>----.<<.>--.>+++++++.---.++++++.
-------.<+++.<.>>++++++.<++++.---.<.>--.>--------.+++.<.>----.<<.>>+++++++++.-----.-.-----.-
-.+.>[>+++<-]>-.<<<---[>>+<<--]>>--.
Como prometí, aquí hay una versión mejor. mi cerebro se siente como ... ooh, así que de ahí viene el nombre.
explicación: (porque no se puede mantener y no quiero olvidar cómo funciona)
En primer lugar, debe elegir el mejor diseño de datos para este desafío. se me ocurrio
-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
Tenemos que creer que esto es óptimo a menos que haya demasiados cambios (en cuyo caso tendrá que reorganizar el diseño)
Después de eso, utilicé un bucle 4x9x3 para establecer los valores iniciales de nueva línea, número, las dos letras minúsculas y la coma. (todos los códigos ascii más pequeños obtuvieron 4x9 = 36 y las dos letras minúsculas obtuvieron 4x9x3 = 108, luego agregué y restamos algunos para obtener su valor real)
Cuando se realiza el preajuste, el código ingresa al bucle más externo que realiza ciclos 3 veces. Lo explico por pseudocódigo.
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'
Cuando termine esta sección, solo tengo que imprimir la última línea. Pero tenemos una W mayúscula que debe producirse sin usar demasiados caracteres. En este punto estamos aquí:
Address Value Pointer
-4 0 <--
-3 10
-2 32
-1 50
1 99
2 111
3 44
entonces puse [-3] 4 veces a [-1] y resta 3 para obtener 87 (W): >[>>++++<<-]>>---.
luego lo borro [-]
y muevo [-2] a esta ubicación [-1] para que el espacio esté cerca de las letras minúsculas.<[>+<-]
Después de eso solo imprime las letras. la letra minúscula n. ° 1 corresponde a la parte inferior 97-107 y la letra minúscula n. ° 2 corresponde a la región anterior.