Escriba un programa que genere las 64 capas de esta representación del número de Graham de Wikipedia:
Su salida debe coincidir exactamente con esta versión ASCII (en la que se ^
representan las flechas hacia arriba de Knuth y las combinaciones de barras y guiones bajos representan los grandes corchetes horizontales):
3^^...............................................................................................................................^3
\_______________________________________________________________ _______________________________________________________________/
\/
3^^.............................................................................................................................^3
\______________________________________________________________ ______________________________________________________________/
\/
3^^...........................................................................................................................^3
\_____________________________________________________________ _____________________________________________________________/
\/
3^^.........................................................................................................................^3
\____________________________________________________________ ____________________________________________________________/
\/
3^^.......................................................................................................................^3
\___________________________________________________________ ___________________________________________________________/
\/
3^^.....................................................................................................................^3
\__________________________________________________________ __________________________________________________________/
\/
3^^...................................................................................................................^3
\_________________________________________________________ _________________________________________________________/
\/
3^^.................................................................................................................^3
\________________________________________________________ ________________________________________________________/
\/
3^^...............................................................................................................^3
\_______________________________________________________ _______________________________________________________/
\/
3^^.............................................................................................................^3
\______________________________________________________ ______________________________________________________/
\/
3^^...........................................................................................................^3
\_____________________________________________________ _____________________________________________________/
\/
3^^.........................................................................................................^3
\____________________________________________________ ____________________________________________________/
\/
3^^.......................................................................................................^3
\___________________________________________________ ___________________________________________________/
\/
3^^.....................................................................................................^3
\__________________________________________________ __________________________________________________/
\/
3^^...................................................................................................^3
\_________________________________________________ _________________________________________________/
\/
3^^.................................................................................................^3
\________________________________________________ ________________________________________________/
\/
3^^...............................................................................................^3
\_______________________________________________ _______________________________________________/
\/
3^^.............................................................................................^3
\______________________________________________ ______________________________________________/
\/
3^^...........................................................................................^3
\_____________________________________________ _____________________________________________/
\/
3^^.........................................................................................^3
\____________________________________________ ____________________________________________/
\/
3^^.......................................................................................^3
\___________________________________________ ___________________________________________/
\/
3^^.....................................................................................^3
\__________________________________________ __________________________________________/
\/
3^^...................................................................................^3
\_________________________________________ _________________________________________/
\/
3^^.................................................................................^3
\________________________________________ ________________________________________/
\/
3^^...............................................................................^3
\_______________________________________ _______________________________________/
\/
3^^.............................................................................^3
\______________________________________ ______________________________________/
\/
3^^...........................................................................^3
\_____________________________________ _____________________________________/
\/
3^^.........................................................................^3
\____________________________________ ____________________________________/
\/
3^^.......................................................................^3
\___________________________________ ___________________________________/
\/
3^^.....................................................................^3
\__________________________________ __________________________________/
\/
3^^...................................................................^3
\_________________________________ _________________________________/
\/
3^^.................................................................^3
\________________________________ ________________________________/
\/
3^^...............................................................^3
\_______________________________ _______________________________/
\/
3^^.............................................................^3
\______________________________ ______________________________/
\/
3^^...........................................................^3
\_____________________________ _____________________________/
\/
3^^.........................................................^3
\____________________________ ____________________________/
\/
3^^.......................................................^3
\___________________________ ___________________________/
\/
3^^.....................................................^3
\__________________________ __________________________/
\/
3^^...................................................^3
\_________________________ _________________________/
\/
3^^.................................................^3
\________________________ ________________________/
\/
3^^...............................................^3
\_______________________ _______________________/
\/
3^^.............................................^3
\______________________ ______________________/
\/
3^^...........................................^3
\_____________________ _____________________/
\/
3^^.........................................^3
\____________________ ____________________/
\/
3^^.......................................^3
\___________________ ___________________/
\/
3^^.....................................^3
\__________________ __________________/
\/
3^^...................................^3
\_________________ _________________/
\/
3^^.................................^3
\________________ ________________/
\/
3^^...............................^3
\_______________ _______________/
\/
3^^.............................^3
\______________ ______________/
\/
3^^...........................^3
\_____________ _____________/
\/
3^^.........................^3
\____________ ____________/
\/
3^^.......................^3
\___________ ___________/
\/
3^^.....................^3
\__________ __________/
\/
3^^...................^3
\_________ _________/
\/
3^^.................^3
\________ ________/
\/
3^^...............^3
\_______ _______/
\/
3^^.............^3
\______ ______/
\/
3^^...........^3
\_____ _____/
\/
3^^.........^3
\____ ____/
\/
3^^.......^3
\___ ___/
\/
3^^.....^3
\__ __/
\/
3^^...^3
\_ _/
\/
3^^^^3
Observe que hay 64 capas, que no hay espacios finales, y que dos ^
ocurren antes de los puntos y solo uno ocurre después.
El hash MD5 de su salida debe ser precisamente c84d0e20eac2a7f891ab42a8eb77759f
, o 1ad3b10d06e38693436c14958b2c47a8
si hay una nueva línea final (que está bien).
El código más corto en bytes gana. Salida a stdout. No hay entrada
code-golf
kolmogorov-complexity
Pasatiempos de Calvin
fuente
fuente
1ad3b10d06e38693436c14958b2c47a8
tal como lo proporciona grc, oc84d0e20eac2a7f891ab42a8eb77759f
si se puede omitir el carácter de nueva línea final.Respuestas:
CJam - 64
Pruébalo en http://cjam.aditsu.net/
fuente
Python, 122
Ejemplo:
fuente
Perl - 113 (112 + 1 para -E)
Golfizado:
Sin golf:
EDITAR: Hubo un error en la interpolación de cadenas donde Perl pensó que $ m3 era una variable, por lo que tuve que agregar 2 caracteres para solucionarlo.Resuelto cambiando $ m a $.NINJA EDIT: Instancias reemplazadas de "" con $ ". Guarda 2 caracteres
NINJA EDIT 2: Gracias @chilemagic por señalar que puedo usar say en lugar de imprimir con -E para guardar un personaje.
NOT-SO-NINJA EDIT 3: la solución de @ Nax superó a mi solución anterior, así que la pulí un poco para mantener el terreno.
fuente
say
lugar deprint
y luego ejecutarlo en-E
lugar de-e
(si su versión de Perl es lo suficientemente alta). ¡Aunque se ve genial!Haskell, 152
fuente
+1
y solo agregas el punto antes"^3"
.C 161
182(Creo que aproveché al máximo este método, tal vez debería encontrar uno nuevo que pueda reducirse aún más) ¡
compile como C99!
JS 158
xem.github.io/obfuscatweet/ 124:
fuente
Bash + coreutils, 150
Pensé que podría hacerlo mejor que esto. Oh bien.
Salida:
fuente
STATA 135
fuente
JavaScript 179
Pruébelo en la consola de su navegador o en http://jsfiddle.net/2qwvrvcw/ .
fuente
Javascript (203)
Sin golf:
fuente
C# (
212211).Net Fiddle (parece requerir que la clase y el método Main sean públicos)
Ligeramente incólume:
fuente
Perl,
116112109108 (incluido -E)Mi primer intento de jugar al golf. Tómelo como tal:
Golfizado:
Muy poco intangible (no mantenido ...):
Esencialmente funciona así: para cada línea de 3s y una llave (estos se manejan juntos), escribe su secuencia codificada en RLE , luego la decodifica. La regla es simple: cada personaje seguido de un número se expande a ese personaje ese número de veces. Los personajes sin número se quedan solos. Finalmente, el personaje
!
denota un 3 y unN
significa una nueva línea (3 tuvo que codificarse porque es un número y participaría ansiosamente como el número de repeticiones).Cada línea de 3s y su llave obtienen un elemento en la matriz de 64 elementos que el mapa está generando. Digamos que, al igual que print, puede generar arrays: si se le proporciona un array, imprime todos los elementos (sin separadores).
Usé el truco de chilemagic con
-E
. Gracias por eso.Refuerzos: Dos soluciones de 113 bytes comenzaron a acechar aquí. ¡RLE no sucumbirá sin luchar!
Limpieza de feeds : ahora me he dado cuenta de que no necesito una transliteración especial de \ n, ¡porque todas las cadenas en Perl tienen líneas múltiples automáticamente! ¡Así RLE se aferra a la espalda de Ruby! Ahora a 109 bytes.
Iluminación agonizante : contar personajes correctamente es más difícil de lo que pensaba. Después de un poco de lucha, me decidí por
(-1, porque cuenta un LF al final del guión). Además, he reorganizado mis tareas y guardado 1 carácter, estableciéndome en 108 bytes.fuente
MATLAB (325)
sin golf:
MATLAB (252)
sin golf:
fuente
PHP 214
Pensé que estaba bien hasta que conté los personajes, de todos modos aquí está ...
fuente
->' '
,<br>
->\n
)<?
al comienzo del código; debe ser un programa válido, no una función.<?function a($n,$v=" "){return str_repeat($v, $n);}for($i=64;$i>1;){$b=a($i-1,"_");$v.=a(64-$i)."3^^".a($i*2-1,".")."^3\n".a(65-$i--)."\\$b".a(2)."$b/\n".a(65)."\/\n";}$v.=a(63)."3^^^^3";echo$v;
php grahams.php | md5sum
:c84d0e20eac2a7f891ab42a8eb77759f -
Lua - 174
Antes de eso, obtuve dos soluciones algorítmicamente diferentes (¡ambas 182!):
fuente