Brainfuck - 680
testez-le ici: ideone.com/Wi9ftB
>>>++++[>+++++++++[>+++[<<<<+<+>>>>>-]<<<+<<<+<+>>>>>>-]<-]+<++++++++<+++<---------<++++++++
++++<----<++++++++++<+++[>>>+.>>>.<<<<.>>>>>>[>[<<<<<<--------.-.>>>.<<<<.>+..<.>>>.>-----.<
------------.+++++++++.+++.------------.++++++++.++++>+++++.<<<<.>.+.>>>>->>-]+<<+>-]+<[<<<<
+.>>>.<<<<.>+.<.>>>.>-----.<<.>---.+++.<.>----.++++>+++++.<<<<.>+.>>>>-]<<<<<.>>>.>-----.<<.
>---.+++.<.>----.<<<.>>>+++++++.---.<.>----.++++>+++++.<<<<<.<-]>[>>++++<<-]>>---.[-]<[>+<-]
>>++.>>-----.<+++.<.<.>++.>---.-..<------.<.>>++++.---.<++.>----.<<.>--.>+++++++.---.++++++.
-------.<+++.<.>>++++++.<++++.---.<.>--.>--------.+++.<.>----.<<.>>+++++++++.-----.-.-----.-
-.+.>[>+++<-]>-.<<<---[>>+<<--]>>--.
comme je l'ai promis, voici une meilleure version. mon cerveau se sent comme .. ooh alors c'est de là que vient le nom.
explication: (parce que c'est intolérable et que je ne veux pas oublier comment ça marche)
Tout d'abord, vous devez choisir la meilleure structure de données pour ce défi. Je suis venu avec
-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
Nous devons croire que c'est optimal à moins qu'il y ait trop de changements (dans ce cas, vous devez réorganiser la mise en page).
Après cela, j’ai utilisé une boucle 4x9x3 pour définir les valeurs de départ de la nouvelle ligne, du nombre, des deux lettres minuscules et de la virgule. (Tous les codes ascii plus petits ont 4x9 = 36 et les deux lettres minuscules ont 4x9x3 = 108, puis j'en ai ajouté et soustrait quelques-uns pour obtenir leur valeur réelle)
Lorsque le préréglage est terminé, le code entre dans la boucle la plus à l'extérieur qui effectue 3 cycles. Je l'explique par 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'
Lorsque cette section est terminée, il ne me reste plus qu'à imprimer la dernière ligne. Mais nous avons un W majuscule qui doit être produit sans utiliser trop de caractères. À ce stade, nous sommes ici:
Address Value Pointer
-4 0 <--
-3 10
-2 32
-1 50
1 99
2 111
3 44
donc je mets [-3] 4 fois à [-1] et soustrais 3 pour obtenir 87 (W): >[>>++++<<-]>>---.
puis effacez-le [-]
et déplacez [-2] vers cet emplacement [-1] afin que l'espace soit proche des lettres minuscules.<[>+<-]
Après cela, il n’imprime que les lettres. les minuscules n ° 1 correspondent aux parties inférieures 97-107 et les minuscules n ° 2 à la région ci-dessus.