TovTovTov (una mutación de pollo ): 810147050 bytes
A continuación se describen dos soluciones sugeridas: una solución completa a la pregunta que requiere muchos bytes y una segunda solución parcial (que resuelve solo las partes N + N y N * N , que requieren solo 484 bytes), cada una con un enfoque diferente y su propio conjunto de trucos geniales! :)
1. Solución completa (810147050 bytes)
Usando TovTovTov(TOV='hi',SEP=',')
, los TOV
elementos son inmunes a la duplicación de caracteres en su lugar (ambos "hihihi"
y "hhiihhiihhii"
tienen tres "hi"
s en ellos, y lo único que TovTovTov
importa es cuántos TOV
s aparecen entre SEP
s).
Si lo usáramos SEP=', '
, todo el programa sería inmune a la duplicación de caracteres (lo cual es genial, pero no resolverá la pregunta). Entonces lo usamos SEP=','
.
Entonces, el programa "hihihi,hi"
, por ejemplo, compila a la matriz de ints [3,1]
, mientras que "hhiihhiihhii,,hhii"
compila a [3,0,1]
y "hhiihhiihhii,,hhii"
hacia [3,0,0,1]
. Esto significa que los comandos en sí mismos no cambian su significado después de la duplicación, pero la longitud total cambia con la duplicación de caracteres. La solución a continuación consulta la duración del programa y la utiliza para decidir si se debe imprimir N+N
, N*N
o N^N
.
La solución completa sugerida, como matriz de ints, es: [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]
Como una cadena, es un programa bastante largo, que consta de 810147050 caracteres, comenzando con:
hihihihihihi,hihihihihihihihihihihihi,hihihihihihihihihi,hihihihihihihihihihihihihihihihihihi,hihihihihihihihihi,hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihih...
2. Resolver solo las partes N + N y N * N de la pregunta (484 bytes)
Utilizando TovTovTov(TOV='1',SEP=', ')
, esta vez los SEP
s son inmunes a la duplicación ( ",, "
todavía tiene solo uno ", "
), por lo que la siguiente solución sugerida siempre tendrá 33 comandos, incluso después de la duplicación de caracteres:
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
La matriz de ints correspondiente (el número de TOV
s ( 1
s) en cada uno de los 33 comandos anteriores) es la siguiente:[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]
Duplicar los caracteres en el lugar da como resultado una lista de 33 comandos totalmente diferentes :
[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]
La matriz de enteros originales (que calcula N + N ) fue diseñado cuidadosamente para que después de los comandos cambian su significado, el programa todavía tiene sentido, pero calcula N * N . Por ejemplo, el primero 4
(que se TovTovTov
entiende como "tratar la siguiente operación como un código ASCII para convertir a un carácter") cambia después de la duplicación de caracteres 8
, que es un comando totalmente diferente ("cambiar el contador del programa al primer valor emergente del pila, si el valor aparecido inmediatamente después es verdadero ").