Como gran fanático de la serie Lost TV , siempre me intrigó la secuencia de números que aparece repetidamente en los episodios. Estos números son:
( A104101 )
Usando cualquier lenguaje de programación, escriba un código que genere estos números.
Puntuación:
La respuesta más corta gana
La salida no debe contener ningún otro número o letra. Puede usar cualquier otro carácter como separador, o incluso ningún separador.
No puede separar dígitos del mismo número. es una respuesta válida, pero no lo es.
Debes respetar el orden.
Si su código no contiene ninguno de los números de la secuencia, reduzca su puntaje en un 30%. Esta regla le permite ingresar los dígitos por separado. P.ej:
abcde1fg5h
Es un candidato válido porque la respuesta no contiene el número , solo sus dígitos. Sin embargo, cualquier u 8 invalidará el bono.
Si el código no contiene ningún dígito, reduzca su puntaje en un 50%. Otros personajes como , o siguen siendo válidos para este bono.
fuente
restricted-source
etiqueta que podría haberse usado aquí: aunque la mayoría de las respuestas están evitando soluciones obvias, creo que el desafío habría sido un poco más interesante si el uso de dígitos estuviera totalmente prohibido.Respuestas:
Perdido ,
2927/2 = 13.5 bytesPruébalo en línea! o verificar que es determinista
Parecía el lenguaje correcto para usar.
Explicación:
Lost es un lenguaje 2D donde el puntero comienza en cualquier lugar , yendo en cualquier dirección. Esto generalmente lleva a una doble verificación de que el puntero no haya ingresado a una sección antes.
fuente
Jalea , 7/2 = 3.5 bytes
Imprime los números sin separador, es decir, el entero .4815162342
Pruébalo en línea!
Cómo funciona
“ƲÞIȥ’
es biyectivo base-250 entero literal.Ʋ
,Þ
,I
, Yȥ
tener (1-base) índices , , , y en la página de códigos de jalea, de manera que codifican el número entero .Finalmente,2⋅2407581171=4815162342 .
Ḥ
(unhalve) dobla el número entero, produciendoEs necesario duplicar, porque codificar la salida conduce directamente a
“¡9)Ƙ[’
, que contiene un dígito.fuente
Neim ,
65 bytes,32.5 puntosExplicación:
Pruébalo en línea!
fuente
05AB1E , puntaje:
1097 bytes / 2 = 3.5Pruébalo en línea.
O alternativa de 7 bytes :
Pruébalo en línea.
Ambos emitiendo el entero
4815162342
.Explicación:
Vea esta sugerencia mía 05AB1E (sección ¿Cómo comprimir enteros grandes? ) Para comprender por qué
•‘o]Ê•
es2407581171
y•’µ[%•
es2432615184
.Antigua respuesta de 9 bytes que genera la lista
[4,8,15,16,23,42]
:-1 byte (y por lo tanto -0.5 puntaje) gracias a @Emigna .
Más largo que la otra respuesta 05AB1E , pero esto genera la lista en
[4,8,15,16,23,42]
lugar del entero4815162342
.Pruébalo en línea.
Explicación:
Vea esta sugerencia mía 05AB1E (secciones ¿Cómo comprimir enteros grandes? Y ¿Cómo comprimir listas enteras? ) Para comprender por qué
•ΓƒÇ²•
es1301916192
y•ΓƒÇ²•50в
es[4,8,15,16,23,42]
.fuente
•ΓƒÇ²•т;в
para 4.5 como números de Post-Script están bien para el bono.JavaScript (ES7), 34/2 = 17 bytes
Pruébalo en línea!
Esto decodifica y evalúa la expresión
"65058101+41**6"
, que no contiene ningún dígito una vez codificado en base-64.JavaScript (ES6), 13 bytes
Aburrida solución obvia.
Pruébalo en línea!
fuente
Python 3 , 25 bytes, 12.5 puntos
Pruébalo en línea!
𩦦 (髒, ⿰ 馬 葬), 𧨦 (謚, ⿰ 言 ⿱⿵ 八一 皿) cuestan 4 bytes, pero U + 0657 solo cuesta 2 bytes ...
Python 3 , 29 bytes, 14.5 puntos
Pruébalo en línea!
𩦦 (⿰ 馬 葬) es un carácter variante de 髒 que significa "sucio". 湡 es el nombre de un río. Y no tienen nada que ver con esta pregunta, como lo sabía.
fuente
4815 162342
válido. Por lo tanto,print(*map(ord,'ዏ𧨦'))
ahorra 1.5 puntos :) (print(*map(ord,'밗'))
ahorraría 2 puntos pero se ha especificado como no válido).Brain-Flak , 52/2 == 26 bytes
Pruébalo en línea!
fuente
Java 8, puntuación:
1211,9 (70% de 17 bytes)-0.1 puntaje gracias a @RickHitchcock .
Pruébalo en línea.
Explicación:
Antigua respuesta con una puntuación de: 12 (50% de 24 bytes):
Contiene un carácter no imprimible
0x1B
.Pruébalo en línea.
Explicación:
En Java, los caracteres se pueden autoboxear a enteros que tienen su valor unicode. Desafortunadamente, el máximo unicode admitido para caracteres es
65,535
, por lo que no puedo usar solo dos caracteres para multiplicar (ya que los dos números más grandes que dividen el esperado4,815,162,342
son56,802
y84,771
, donde84,771
desafortunadamente excede el máximo65,535
.Además, ya que el tamaño máximo de un
int
es 32 2 -1 (2,147,483,647
) y el resultado4,815,162,342
es mayor que eso , se requiere una conversión explícita along
, que puede contener hasta 64 2 -1 (9,223,372,036,854,775,807
).La respuesta aburrida habría sido de 14 bytes sin ninguna bonificación:
Pruébalo en línea.
fuente
long
y no sea compatible con caracteres Unicode muy grandes. Si no fuera por esas dos restricciones mencionadas, solov->'𩦦'*'湡'
(15 bytes, puntaje 7.5) hubiera sido suficiente. Pero aún es muy corto. :) Aunque Java en su mayoría tiene muchas, muchas debilidades en términos de codegolfing (duhh ..), calcular con caracteres porque no se nos permite usar dígitos es una de sus pocas fortalezas. También fue bastante útil en esta respuesta bastante similar mía .v->767*6277917L+3
R, 18x0.7 = puntaje 12.6
Bastante autoexplicativo, solo hace algo de aritmética evitando los números en cuestión.
fuente
7 , 10 bytes, 27 caracteres
Pruébalo en línea!
La representación empaquetada de este programa en el disco es (
xxd
formato):Explicación
Hemos visto esta secuencia de números antes, en Automate Saving the World , que consistía en imprimir los números a intervalos regulares, haciéndolo interesante al requerir el uso de un lenguaje muy antiguo. Sin embargo, muchos idiomas más nuevos pueden tener sus propios giros que hacen que este desafío sea interesante. (Sí, este párrafo, y de hecho la razón por la que comencé a escribir esta respuesta, es efectivamente solo una forma de mostrar todos los desafíos relacionados en la barra lateral; normalmente las personas lo hacen usando comentarios, pero no tengo suficiente representante .)
Lo primero que debe tener en cuenta es que 7 está hecho completamente de dígitos, por lo que es poco probable que las bonificaciones funcionen aquí (aunque si ve el programa como una secuencia de octetos, ninguno de ellos corresponde a representaciones ASCII de ninguno de los números originales , para que puedas reclamar la bonificación en ese sentido). Lo siguiente a tener en cuenta es que 7 tiene comandos para recrear la secuencia de comandos que probablemente haya producido una pieza específica de datos; Entonces, ¿podríamos interpretar los números perdidos
4815162342
como una sección de un programa 7 en sí?La respuesta es "no del todo". La parte más problemática es ese segundo número
8
,. 7 programas están escritos en octal; no hay un número como 8. Por lo tanto, el comienzo de la cadena tendrá que imprimirse de manera diferente.Por lo tanto, la base del programa se basa en el programa 7 "Hola mundo":
con el literal escapado en un lenguaje de dominio específico que se interpreta de la siguiente manera:
Después de esto viene un extra
3
, que genera el elemento de pila restante (y sale debido a la pila restante insuficiente). Ese elemento se especifica al inicio del programa, y para evitar lo inigualable6
(que funciona un poco como un corchete de cierre), lo generamos usando código, en lugar de escribirlo directamente como datos. (Tenga en cuenta que hay dos7
caracteres implícitos al inicio del programa, que es relevante aquí):Eso produce el siguiente literal:
que se imprime
fuente
:(
05AB1E , 6 * 0.7 = 4.2 bytes
Pruébalo en línea!
Imprime el número sin comprimir desde base-255
fuente
Fuente de ensamblaje MASM 8088, (93 bytes - 50%) = 46.5 bytes
Sin usar números o la secuencia en la fuente:
Salida:
fuente
Carbón , 13 bytes / 2 = 6.5
Pruébalo en línea! El enlace es a la versión detallada del código. Funciona restando los códigos ASCII de la cadena
TPIHA.
de 88 y convirtiendo a cadena.fuente
Aheui (esótopo) , 45 bytes (15 caracteres) * 0.5 = 22.5 puntos
Pruébalo en línea!
Explicación:
Mira esto también; Referencia de Aheui ( inglés )
Tenga en cuenta que ㅁ (instrucción de impresión) mueve el cursor en dirección inversa si la pila (o la cola) está vacía.
fuente
Perl 5 , 16 bytes - 30% = 11.2
Pruébalo en línea!
fuente
PowerShell , 12 bytes * 0.7 = 8.4
Pruébalo en línea!
"Puerto" de la respuesta de Xcali para tener una mejor respuesta Powershell.
fuente
naz , 46 bytes, puntaje 32.2
Simplemente genera cada dígito en
4815162342
uno a la vez.fuente
JavaScript, 143 bytes (no estoy seguro de cómo calificar)
Pruébalo en línea!
Comience con seis
4
, multiplique, sume, reste por, a, de4
para derivar la salida.fuente
4
, con suma, resta, multiplicación y el índice del número4
dentro de una cadena (o matriz) se puede usar para derivar los números requeridos.143*0.7=100.1
PHP, 35/2 = 17.5
Un enfoque digital: 40 * .7 = 28
sin dígitos, sin cadenas: 68/2 = 34
Pruébalos en línea .
fuente
<?=4815162342;
4815162342
? O<?=~
+ 10 no imprimibles -> 15/2 = 7.5JavaScript (SpiderMonkey),
67 bytes / 2 = 33.560 bytes / 2 = 3058 bytes / 2 = 2948 bytes / 2 = 24-7 bytes / 3.5 , -2 bytes / 1 cortesía de @JoKing, -10 bytes / 5 cortesía de @tsh
Pruébalo en línea!
fuente
print(a=-~-~-~-~[],a+=a,b=a+~-a,a+a,a+b,--b+b+b)
print(4815162342)
por 17 bytesAPL (Dyalog Unicode), 18/2 = 9 bytes
Simplemente aburrida multiplicación de personajes viejos.
Pruébalo en línea!
fuente
JavaScript (ES6), 16 * 0.7 = 11.2 bytes
Emite los dígitos sin delimitadores.
¡Pruébelo en línea!
fuente
Espacio en blanco , puntuación:
4941 bytes / 2 = 20.5Se agregaron letras
S
(espacio),T
(tabulación) yN
(nueva línea) solo como resaltado.[..._some_action]
agregado solo como explicación.Pruébelo en línea (solo con espacios en bruto, pestañas y nuevas líneas).
Pseudocódigo:
Explicación:
En el espacio en blanco, se empuja un número de la siguiente manera:
S
: Habilitar manipulación de pilaS
: Número de inserciónS
/T
: Positivo / negativo respectivamenteT
/S
seguido de un soloN
: Decimal como binario, dondeT
es 1 yS
es 0Después de eso, simplemente se imprime con
TNST
:TN
: Habilitar E / SS
: Salida de la parte superior de la pilaT
: Como númerofuente
F #, 45 bytes = 22.5 puntos
Solo un
for
ciclo común que imprime los dígitos:Lo anterior es un programa completo que se puede compilar en un ejecutable.
En un REPL (bucle read-eval-print), por ejemplo, FSI (F # Interactive), la siguiente versión más corta funcionará, ya que REPL generará una representación de la expresión evaluada; tiene 35 bytes = 17.5 puntos:
fuente
Pyke , 3 puntos
Pruébalo aquí!
El primer byte señala que se lea en la base 128 hasta que se establezca un byte sin el bit alto.
Finalmente, 32 se resta del resultado (por razones históricas).
Esto permite la generación de grandes números en muy pequeñas cantidades de espacio.
fuente
MathGolf , 7 bytes * 0.5 = 3.5
Pruébalo en línea!
Explicación
Tenga en cuenta que este código aún no funciona en TIO. Recientemente he realizado algunos cambios en MathGolf, incluida la adición del
$
operador. Una vez que se extrae a TIO, puede ejecutarlo allí, luego haré una actualización de esta respuesta. Funciona perfectamente en la terminalUtilizo el hecho de que MathGolf tiene literales de 1 byte para crear cadenas de hasta 4. Si hubiera querido convertir el número entero de una cadena de base 256, habría necesitado usar dos
"
, y la cadena habría sido 5 caracteres. De esta manera, ahorro 2 bytes, pero pierdo un byte al tener el operador de duplicación al final.fuente
Python 3 34 Puntos
fuente
Python 3 ,
44381918.5 bytes-6 bytes gracias a @Jo King
-50% bytes gracias a @ouflak por señalar el bono del 50%
-1 byte gracias a @Dennis
Pruébalo en línea!
fuente
Japt,
109 bytes / 2 = 4.5Pruébalo
fuente
Befunge-98 (FBBI) , 15 bytes / 2 = 7.5 puntos
Pruébalo en línea!
Explicación:
Primero empuje los valores ASCII de los caracteres '* + H /! K- (42, 72, 47, 33, 107, 45) en este orden a la pila. Luego computa4815 = 45 ⋅ 107 y 1623 = 33 ⋅ 47 + 72 y salida.
fuente