La tarea es simple: imprima The quick brown fox jumps over the lazy dog
utilizando la menor cantidad posible de caracteres distintos en su código fuente.
print "The quick brown fox jumps over the lazy dog"
tiene una puntuación de 29 caracteres, ya que las 26 letras minúsculas aparecen al menos una vez, así como una T mayúscula, espacios y comillas. ¡Sin embargo, estoy seguro de que puedes ser más creativo que eso!
Brainfuck, espacios en blanco y lenguajes similares (a mi discreción) no están permitidos. Los saltos de línea cuentan como un carácter. El código puede ser tan largo como sea necesario. Aceptaré una solución el 21 de abril a las 11:59 p.m. EST. En caso de empate, se aceptará la respuesta más corta.
code-challenge
Fraxtil
fuente
fuente
least-characters
un criterio oficial y una etiqueta, comocode-golf
Respuestas:
dc: 4 caracteres distintos (
384375363361360350 caracteres en total)Una respuesta corta (pero lejos de ser lo más breve posible, todavía estoy trabajando en ello) usando solo 4 caracteres distintos y
384375363361360350 caracteres en total, espero que lo encuentres completamente explicativo:La respuesta anterior que es un poco más detallada (contiene 13916 1's):
¡Ah, tienes que amar la vieja calculadora de escritorio!
fuente
Código de máquina Intel de 64 bits para Linux en binario: 2 caracteres distintos
Me niego a reescribirlo en unario.
fuente
Lua, 8 personajes distintos
Todos los caracteres de nueva línea deben eliminarse de este código para obtener una sola línea de longitud 1998.
Requiere Lua 5.2
Cómo se podría escribir el programa arbitrario de Lua usando solo 8 caracteres
load"\05
Al tener caracteres
05\
, es posible escribir cadenas literales para cualquier cadena que conste de caracteres0257\
. De hecho,"\\"
significa barra invertida"2" == "\50"
y"7" == "\55"
("\ddd"
en Lua significa char con código decimalddd
).Al tener caracteres
0257\
, es posible escribir cadenas literales para cualquier cadena que conste de caracteres024579\
(como"4" == "\52"
y"9" == "\57"
)En el siguiente paso, los caracteres
01245679\
estarán disponibles.Se requiere un paso más para obtener todos los dígitos decimales.
Lua tiene una función
load
que trata una cadena como código Lua y la convierte en una función.Por ejemplo,
load("print\"Hello\"")()
impresionesHello
.Podría escribirse sin paréntesis:
load"print\"Hello\""""
(las dos últimas comillas significan una cadena vacía que se pasa como parámetro opcional a la función).Cualquier programa Lua podría convertirse a un alfabeto reducido en un máximo de 5 pasos.
Ejemplo: si nuestro programa consta de un solo dígito
9
, solo se requieren dos pasos:paso 0:
9
paso 1:
load"\57"""
paso 2:
load"load\"\\5\55\"\"\""""
fuente
Python, 9
Usando esta idea . (Los saltos de línea están ahí para facilitar la lectura y se pueden eliminar).
Esto construye la cadena
'print"The quick brown fox jumps over the lazy dog"'
y la ejecuta.fuente
exec
, digamos que lo ejecuta en el shell de Python y reclamar 7 caracteres.dc - 5 caracteres distintos (2, i, 1,0, P)
fuente
Tcl 10 caracteres diferentes.
Caracteres utilizados:
,
0
,1
,2
,3
,4
,5
,6
,7
,\
Es solo cada parte del comando codificado como \ ooo secuencia. Para Tcl, no importa si haces cosas tan divertidas en el nombre del comando o en sus argumentos, de hecho,
$object configure
es muy común en Tcl / Tk.Con esta técnica e
eval
incluso podría escribir cada programa en Tcl con 10 bytes diferentes :)Programa de prueba:
fuente
\uXXXX
18 bytes diferentes.GolfScript (4 caracteres distintos, 441 caracteres en total)
Caracteres utilizados:
]1(+
Explicación: en GolfScript, agregar una cadena a una matriz de enteros convierte la matriz en una cadena con los enteros como puntos de código y luego concatena las dos cadenas. Si no se proporciona nada en stdin, la pila comienza con una cadena vacía. Por lo tanto, podemos construir una matriz de enteros con los puntos de código correctos y luego concatenar esa cadena vacía.
Necesitaremos
+
la concatenación,]
como mínimo, para crear la matriz (y[
para evitar que la cadena vacía se incluya en ella o alguna forma de extraerla después), y alguna forma de separar los enteros. Así que utilizo el operador de decremento(
para separar los enteros, lo que requiere algunas adiciones adicionales para compensar en algunos casos, pero proporciona una forma rápida de obtener, por ejemplo, 110; y ese operador también es el operador que extrae el primer elemento de una matriz, por lo que sirve para recuperar la cadena vacía para la concatenación.fuente
Ruby: 7 personajes distintos
(Con agradecimiento a randomra por su comentario ).
Ejecución de muestra:
Contando:
fuente
Java: 18 caracteres distintos
Un programa Java puede escribirse en notación UNC ... ¡Pero sigue siendo detallado!
fuente
J, 6 caracteres distintos
6 versiones distintas de char (
u:10 +
) usando alguna idea flornquake utilizada. El método es agregar vectores de0
1
11
y111
juntos para sumar al84 104 101 32 113 117 ...
vector deseado :Editar :
1+:1
es0
así que tal vez haya una solución de 5 caracteres aquí ... (También+:
como doble podría usarse para acortar la solución).13 versiones distintas de char:
Mejora del usuario anónimo (DirkL):
u:23 |
es posible una solución más corta pero aún utilizando 6 caracteres ( ). Uso|
como operador de residuos para decimales, por ejemplo223 | 2333333 = 84
.fuente
Befunge-98, 3 personajes distintos
Usando este intérprete Befunge-98. Al principio, me uní a la competencia de 4 personajes con un
@
final para terminar. Este programa emite repetidamenteThe quick brown fox jumps over the lazy dog\r
, donde la terminación\r
elimina la oración anterior. Por lo tanto, la oración se escribe una vez.Befunge-98, 4 caracteres distintos (1047 caracteres en total)
La versión menos tramposa. Este termina normalmente.
fuente
JavaScript (en Chrome Console) 17
Tuve la misma idea que flornquake pero él también me ganó. ¡Así que fui por la forma fea de hacer esto!
fuente
constructor+[]
es diferente a lo que obtengo. Diferentes versiones de cromo, supongo. Te dije que era feoC, 15 caracteres distintos
Un poco de inspiración de la respuesta de Fors (que supero por un personaje) y el comentario de ecatmur a esa respuesta.
Los espacios y las nuevas líneas son solo para mayor claridad y no se cuentan.
¿Cómo funciona?
1. Cada grupo de 3 caracteres está representado en un número. Un puntero a este número, tratado como un puntero de caracteres, es un puntero a una cadena de estos 3 caracteres, más un nulo de terminación. Asume little-endian.
2. La función
a
ayuda a obtener la dirección de un número literal, sin definir una variable.fuente
{}
una de las líneas, lo que lo hacía sensible ala
valor de retorno.vba (
168 caracteres distintos)(usando ideas de matatwork y AutomatedChaos)
Tenga en cuenta que si desea poner esto, tendría que dividir la línea en 2, ya que es demasiado largo para el editor de VBA
fuente
Chr()
? Parece que funciona bien sin:?Chr(&0124);Chr(&0150);Chr(&0145);…
.?chr(1+)
será algo así como?chr(11+11+11+11+11+11+11+1+1+1+1+1+1+1)+chr(11+11+11+11+11+11+11+11+11+1+1+1+1+1)+ .... etc.
?Chr(&0124)Chr(&0150)Chr(&0145)…
.C: 16 caracteres distintos
fuente
if(putchar(...)+putchar(...)){}
elimina;
pero agregaf
(pero se basa en el orden de evaluación no especificado).if(putchar(...)){}if(putchar(...)){}
etc.if(putchar(...))if(putchar(...)){}
oif(putchar(putchar(...)+...){}
, pero aún así este enfoque no salva a un personaje.Posdata (19 caracteres distintos)
Utiliza los dígitos hexadecimales 0-9, af, delimitadores de cadena hexadecimal <> y = para imprimir.
(13 caracteres distintos)
Los números de radix binarios obtienen los datos en 4 caracteres (0,1,2, #), pero necesita una cadena vacía () y algunas letras (put, dup (-up), print (-pt)) para insertar el número binario ahí.
fuente
APL 8
El siguiente comando convierte una cadena de caracteres a su equivalente binario:
Si asignamos el binario resultante al vector s para evitar tener que mostrar todos los ceros y unos, entonces podemos imprimir el resultado invirtiendo el proceso aplicando:
Entonces, los 8 caracteres únicos son 8,2, ⎕, d, r, espacio y el 0 y 1 en el vector binario s.
fuente
k
12 personajes distintos
Los personajes son
10h$2/:'(b;)
fuente
PHP 10 personajes distintos.
e, c, h, o, r, (, 1, +, ), ;
(Se pueden eliminar los saltos de línea).fuente
echo(chr(1+1+1+...));
, así que vuelves a los 10 caracteres nuevamente.Bash:
1816 caracteres distintosEjecución de muestra:
Contando:
fuente
cat
es solo una solución de 3 caracteres. El problema es que necesitas canalizarlo"The quick brown fox jumps over the lazy dog"
.K, 9
1 @ 0 h $ (+;)
fuente
Perl, 10 caracteres
Básicamente, una estafa de la solución Python de flornquake.
Usar la sustitución con
ee
es una forma más económica de obtenereval
. Desafortunadamente, Perl usa.
para la concatenación, que agrega un carácter.Esperaba eliminar los paréntesis (que son opcionales para las funciones en Perl), usando una sintaxis como esta:
(Sí,
s
es un delimitador de expresiones regulares válido). Sin embargo, no pude hacerlo funcionar porque la precedencia de.
es demasiado alta, tratando de concatenar antes de que llame a la función.fuente
Erlang 8 caracteres distintos
Caracteres usados:
012#<>:.
fuente
C (23 caracteres distintos)
Nota: No incluí nuevas líneas en el recuento de caracteres distintos, pero se pueden eliminar fácilmente si es necesario, a expensas de la legibilidad.
fuente