Supongamos que un desafío de codegolf no cuenta espacios en blanco en la duración de su programa. Haga trampa en este sistema codificando su secuencia de comandos en espacios en blanco y desarrolle una secuencia de comandos que decodifique y ejecute espacios en blanco integrados.
Ejemplo
Mi solución a JBernardo 's Meta desafío del golf fue para codificar código de Sage (o Python) en los espacios en blanco, y el golf el decodificador.
s = ' '
for c in '<lots of whitespace>'.split(s):
s+=chr(len(c))
exec s
La codificación consiste en tomar un guión, anteponer una nueva línea y, para cada carácter c
del guión, generar ord(c)
pestañas seguidas de un espacio. Es necesario anteponer una nueva línea ya que estoy usando Python y comienzo el script s
con un espacio.
Puntuación
Una solución completa contiene una descripción de la codificación que usa (si es complicada, proporcione un script) y un script 'decodificar y ejecutar'. Su puntaje es el número de caracteres que no son espacios en blanco en el script de decodificación y ejecución.
El espacio en blanco (el idioma) está prohibido
Además, no se permite ningún lenguaje que tenga un conjunto completo de operadores que solo usen caracteres de espacio en blanco: aceptaré la puntuación más baja que no sea cero.
fuente
.n/{,}%+~
también funcionaría.CPAN, 16
CPAN lo tiene todo. O al menos, el módulo correcto.
fuente
Perl, 29
Dentro de eso
s///
hay una pestaña y luego un espacio. La codificación es una codificación ultra básica con espacios, precedida de pestañas.Pruebe este en la línea de comando:
Editar: bueno, lol, no puedo encontrar una manera adecuada de copiar y pegar la mezcla de tabulación / espacio. Créeme, funciona en casa :)Actualización: allí, allí, codificado contr
fuente
\t
y creemos que funciona con espacios en blanco ...\t
intérprete interprete y realmente hacer que la maldita cosa funcione de manera demostrable. Haciendo eso en unas pocas horas.JavaScript
Reemplazar
\t
con una pestaña para obtener el recuento de caracteres publicado.Estándar (64 caracteres)
Función de flecha (49 caracteres)
Programa de codificador para ambos
fuente
(s)=>...
en la función de flechas=>...
para guardar dos bytes" t " [ 1 ]
para significar "t")eval("".replace(/ +/g,s=>' []+!()'[s.length]))
Yabasic (88 caracteres)
Use el mismo programa codificador que para mi solución C, pero no elimine el primer carácter. Su código original debe tener la forma de una subrutina
a()
, por ejemplo:fuente
C (99 caracteres)
Probado solo con (y tal vez solo funciona con) GCC.
Programa codificador correspondiente (elimine manualmente el primer carácter de su salida):
fuente
D (101 caracteres)
misma codificación que en la pregunta (no se necesita la nueva línea)
fuente
Bash (solo incorporado, 44 caracteres)
Script codificador correspondiente:
fuente
man
levantarme un poco para asimilar esto.K5, 12 bytes
Ejecute (
.
) la cadena formada a partir de los valores ascii (`c$
) dados por la diferencia entre cada par (-':
) de los índices donde (&
) la entrada es una pestaña (9=" "
).La entrada es una cadena de caracteres con tabulación y sin tabulación, y los valores de los caracteres se codifican en el número de no tabulaciones (espacios o líneas nuevas) entre cada pestaña. Un codificador de ejemplo:
Realice una combinación continua comenzando con un espacio sobre (
" ",/
) x espacios (x#" "
) unidos con una pestaña (,"\t"
) donde X es cada uno de ({...}'
) uno menos los valores de caracteres de la cadena de entrada (-1+
).En acción:
fuente
Rubí, 43
Muy sencillo, la codificación es poner x espacios por línea, donde x es el valor ascii del carácter, la decodificación es inversa.
El siguiente script es solo un conversor unario a ASCII y funciona incluso cuando las cosas que no sean espacios son libres:
Simplemente reemplace la cadena vacía con el programa que le agrade.
La cosa en un formato más reutilizable:
fuente