TovTovTov (une mutation de Poulet ): 810147050 octets
Vous trouverez ci-dessous deux solutions suggérées: une solution complète à la question nécessitant de nombreux octets et une seconde solution partielle (ne résolvant que les valeurs N + N et N * N). parties , ne nécessitant que 484 octets), chacune adoptant une approche différente et la sienne propre. ensemble d'astuces cool! :)
1. Solution complète (810147050 octets)
En utilisant TovTovTov(TOV='hi',SEP=',')
, les TOV
éléments sont immunisés contre la duplication de caractères sur place (les deux "hihihi"
et "hhiihhiihhii"
ont trois "hi"
s en eux, et tout ce qui TovTovTov
importe est le nombre de TOV
s qui apparaissent entreSEP
).
Si nous l'utilisions SEP=', '
, l'ensemble du programme serait à l'abri de la duplication de caractères (ce qui est cool, mais ne résoudra pas la question). Donc nous utilisonsSEP=','
.
Ainsi, le programme "hihihi,hi"
, par exemple, compile dans le tableau ints [3,1]
, pendant qu'il "hhiihhiihhii,,hhii"
compile vers [3,0,1]
et "hhiihhiihhii,,hhii"
vers [3,0,0,1]
. Cela signifie que les commandes elles-mêmes ne changent pas de signification après la duplication, mais que la longueur totale change avec la duplication de caractères. La solution ci-dessous demande la longueur du programme et l’utilise pour décider d’imprimer N+N
, N*N
ou deN^N
.
La solution complète suggérée, en tant que tableau ints, est la suivante: [6, 12, 9, 18, 9, 142, 11, 38, 8, 9, 260, 11, 73, 8, 22, 75, 7, 10, 14, 3, 1, 22, 24, 18, 15, 8, 10, 16, 3, 1, 22, 24, 18, 15, 8, 10, 45, 16, 7, 22, 3, 1, 22, 24, 18, 15, 8, 22, 3, 1, 22, 24, 18, 15, 8, 25, 3, 1, 22, 24, 18, 15, 8, 48, 3, 1, 22, 24, 18, 15, 8, 277, 3, 1, 22, 24, 18, 15, 8, 3146, 3, 1, 22, 24, 18, 15, 8, 46677, 3, 1, 22, 24, 18, 15, 8, 823564, 3, 1, 22, 24, 18, 15, 8, 16777237, 3, 1, 22, 24, 18, 15, 8, 387420510, 3, 1, 22, 24, 18, 15, 8]
En tant que chaîne, il s'agit d'un programme assez long, composé de 810147050 caractères, commençant par:
hihihihihihi,hihihihihihihihihihihihi,hihihihihihihihihi,hihihihihihihihihihihihihihihihihihi,hihihihihihihihihi,hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihih...
2. Résoudre uniquement les parties N + N et N * N de la question (484 octets)
En utilisant TovTovTov(TOV='1',SEP=', ')
, cette fois, les SEP
s sont immunisés contre la duplication (il ",, "
n'en reste qu'une ", "
), de sorte que la solution suggérée suivante contiendra toujours 33 commandes, même après la duplication de caractères:
1111, 111111111111111111111111111111111111111111111111, 1111111111, 1111111111, 1111111111, 111111, 111111111111, 111111111, 11111111111111, 111, 1, 1111111111111111111111, 111111111111111111111111, 111111111111111111, 111111111111111, 11111111, 111111111111, 1111111111111111, 111111111111111, 1111111111111111111111, 111111111111111111111111111111111111, 11, 1111111111111111111111111111, 111111, 111, 111111, 11111111111, 111111111111111111111111111, 1111, 1, 11111111, 1, 11111111
Le tableau ints correspondant (le nombre de TOV
s (1
s) dans chacune des 33 commandes ci-dessus) est le suivant:[4,48,10,10,10,6,12,9,14,3,1,22,24,18,15,8,12,16,15,22,36,2,28,6,3,6,11,27,4,1,8,1,8]
La duplication des caractères sur place résulte en une liste de 33 commandes totalement différentes :
[8,96,20,20,20,12,24,18,28,6,2,44,48,36,30,16,24,32,30,44,72,4,56,12,6,12,22,54,8,2,16,2,16]
Le tableau ints original (qui calcule N + N ) a été conçu avec soin afin que , après les commandes changent de sens, le programme a encore un sens, mais calcule N * N . Par exemple, le premier 4
(qui TovTovTov
comprend comme "traite l'opération suivante comme un code ascii à convertir en caractère") change après la duplication de caractère 8
, ce qui est une commande totalement différente ("change le compteur de programme en la première valeur pile, si la valeur affichée immédiatement après est vraie ").