Lo que quiero:
En pocas palabras, quiero una pantalla basada en texto, que solicite una entrada n
y luego muestre ese valor en la pantalla. Pero hay una trampa. Cada uno de los "verdaderos" píxeles "(los completados) tiene que estar representado por ese número n
.
Ejemplo:
Te dan una entrada n
. Puede suponer n
que será un solo dígito
Input: 0
Output:
000
0 0
0 0
0 0
000
Input: 1
Output:
1
1
1
1
1
Input: 2
Output:
222
2
222
2
222
Input: 3
Output:
333
3
333
3
333
Input: 4
Output:
4 4
4 4
444
4
4
Input: 5
Output:
555
5
555
5
555
Input: 6
Output:
666
6
666
6 6
666
Input: 7
Output:
777
7
7
7
7
Input: 8
Output:
888
8 8
888
8 8
888
Input: 9
Output:
999
9 9
999
9
999
Desafío:
Haga lo anterior en la menor cantidad de bytes posible.
Solo aceptaré respuestas que cumplan con todos los requisitos.
El espacio en blanco circundante es opcional, siempre que el dígito se muestre correctamente.
Además, <75 bytes es un voto mío, el más bajo lo acepta, pero siempre podría cambiar la respuesta aceptada, así que no se desanime a responder.
code-golf
ascii-art
kolmogorov-complexity
VortexYT
fuente
fuente
Respuestas:
SOGL V0.12 , 30 bytes
Pruébalo aquí! La cadena comprimida
■'τč▲Β►║⁰ΡāQšJ┘tXdnοO¹‘
esque es (comenzando con 1, terminando con 0) los números, línea por línea, número a número. El resto
fuente
-
), y el resto es fácil. Tengo curiosidad, ¿qué probador en línea usaste? No he hecho ni visto ninguno.JavaScript (ES6), 88 bytes
Los números codifican qué cuadrados contienen espacios para un dígito dado, por ejemplo, la esquina inferior izquierda tiene un valor de 146 porque 1, 4 y 7 no lo usan y 146 = 2¹ + 2⁴ + 2⁷.
fuente
05AB1E ,
403938 bytesPruébalo en línea!
Explicación
fuente
Japt , 43 bytes
Contiene algunos no imprimibles. Pruébalo en línea!
Recuento: 13 bytes de datos comprimidos, 9 bytes para descomprimirlos y 21 bytes para formar la salida.
Explicación
Código sin golf:
Hay exactamente 4 posibilidades de fila diferentes: (
#
representa un dígito)Por lo tanto, cada número se puede almacenar como un conjunto de cinco dígitos de base 4. Como cada número puede almacenarse en 10 bits, el total es de 100 bits, lo que corresponde a 13 bytes. Omitiré el proceso de compresión y en su lugar explicaré la descompresión.
Después de la descompresión, la cadena comprimida de 13 bytes se ve así:
Tenga en cuenta que esto fallaría si alguna de las ejecuciones de 4 dígitos comenzara
0
, ya que los ceros iniciales se dejarían de lado cuandos4
se ejecute. Podemos arreglar esto al tener0
representar#
, que solo aparece tres veces, y ninguno de ellos cae al comienzo de una carrera de 4 dígitos.De acuerdo, para que nuestra cadena de 50 dígitos se comprima bien en trozos de 4, tuvimos que agregar dos dígitos adicionales. Agregarlos al comienzo de la cadena significa que podemos cortarlos con un byte
¤
.De manera vergonzosa, Japt carece de una función integrada para dividir una cadena en segmentos de longitud X. Sin embargo, tiene una función incorporada para obtener cada carácter Xth, por lo que podemos almacenar todos los datos codificando primero todas las filas superiores, luego todas las segundas filas, etc.
Así que ahora tenemos la cadena de 5 dígitos que codifica el dígito que queremos crear, por ejemplo,
32223
para0
.Para explicar el número mágico, consulte las cuatro filas distintas. Si reemplazas
con
#
con1
y0
, obtienesTransponer esto y luego unirnos en una sola cadena nos da
101100010111
. Convierte a decimal y, voilà, tienes 2839. Invertir el proceso asigna los dígitos0123
en las cuatro filas binarias que se muestran arriba.¡Casi termino! Ahora todo lo que queda por hacer es agregar los espacios y dígitos:
Y listo, la salida implícita se encarga del resto. Lamento que esta explicación sea tan larga, pero no veo ninguna forma real de jugar golf sin que sea menos comprensible (si es comprensible ...)
fuente
JavaScript (ES6),
115111 bytesToma la entrada como una cadena.
Cómo funciona
Codificación de patrones
Los cuatro patrones distintos
"XXX"
,"X.."
,"..X"
y"X.X"
se pueden comprimir como"XXX...X.X"
y se extrajeron de esta manera:Al sustituir el dígito de entrada
n
por"X"
y usar espacios reales, esto da la expresión:Codificación de dígitos
Usando los identificadores de patrón definidos anteriormente, cada dígito puede ser representado por una cantidad de 5 * 2 = 10 bits.
Por ejemplo:
La lista completa es:
Sin embargo, dividir estos valores entre 2 permite guardar dos bytes. Entonces, en su lugar, almacenamos:
Manifestación
Mostrar fragmento de código
fuente
Bash + GNU utils, 114
Probablemente hay algunas oportunidades más para la compresión aquí, pero aquí hay un comienzo:
Explicación
Cada fila de cada dígito es uno de estos cuatro patrones:
Al etiquetar estos 0-3, cada dígito se puede representar con 5 dígitos de base 4. Por ejemplo, 0 sería
32223
, y la lista completa de dígitos está codificada en base-4 como32223000003031330303223003130331323300003232332303
. Esta codificado en hexadecimal comoEAC00CDF33AC373DEF00EEFB3
.dc
convierte hexadecimalEAC00CDF33AC373DEF00EEFB3
a base-4.fold
pone 5 dígitos de base 4 en cada líneased
:x
es) para cada línea del dígito dado, junto con una nueva línea para el final de cada filax
es al dígito n.Pruébalo en línea .
fuente
s/1/x \n/g
cons/1/x\n/g
, ya que esos espacios no afectarán visualmente la salida.MATL ,
4543 bytesPruébalo en línea!
Explicación
fuente
Retina,
166164163 bytesDos espacios en la tercera línea desde abajo
Pruébalo en línea!
Una versión mejorada de la solución de @ Okx
fuente
Pyth 82
8591100bytesProbablemente sea posible mucho golf, mi primer desafío.
fuente
Archivo por lotes, 8 + 184 bytes
Aquí está mi solución por lotes obligatoria. Desafortunadamente, el método estándar para lograr esto es más de 300 bytes en lote, por lo que recurrimos a tácticas mucho más baratas.
En el directorio actual, tengo 10 archivos configurados, nombrados del 0 al 9. En cada uno de estos está la respectiva cuadrícula de píxeles de 5x3. Por ejemplo:
El byte cuenta para estos son:
Todavía venció a Java.
fuente
Ruby, 94 bytes
Sin golf en el programa de prueba
fuente
PHP, 115 bytes
Pruébalo en línea!
Expandido
Codificación ¡ Pruébelo en línea!
fuente
Retina , 125 bytes
Pruébalo en línea! (Elimine el conjunto de pruebas en el encabezado para probar dígitos de entrada individuales). La última línea contiene dos espacios.
fuente
PowerShell,
126120113109101Unicode es divertido. Los caracteres también son mucho más cortos que los números. El código anterior contiene U + 0000 dos veces, por lo que no se puede copiar directamente (aunque funciona bien en un archivo). Se puede copiar el siguiente código:
Perdemos tres bytes porque necesitamos la firma UTF-8 al comienzo. De lo contrario, la cadena no funcionará.
fuente
Retina , 190 bytes
Hay dos espacios en la última línea,
pero SE no quiere representarlo: /¡Solucionado!Pruébalo en línea!
fuente
a
con tres dígitos y una nueva línea. (¿Quizás usando lookaheads?)Java 8,
278214210204 bytesPuerto de la respuesta de Retina de @Neil . Toma la entrada como un
String
.Pruébalo aquí
fuente
Python 2 ,
174125bytesPruébalo en línea!
fuente
PowerShell ,
159135128118 bytesRespuesta actual: eliminación de nombres de variables extrañas
Pruébalo en línea!
Tendré que ver si puedo obtener algunos trucos de las otras respuestas: P
EDITAR Ser más inteligente llamando a la megacadena
EDIT2 Cambió a usar una cadena de números para indexar
$a
y guardar 7 bytes. Aunque me gustaron mis llamadas de nombres de variables dinámicas anteriores en el siguiente código (135 bytes)fuente
Carbón ,
6138 bytesPruébalo en línea!El enlace es a la versión detallada del código. Nota: espacio final. Explicación:
Divida la cadena (comprimida) en grupos de 5, tome la que está en el índice dado por la entrada y asigne los caracteres del grupo (que siempre son 1, 4, 5 o 7).
Convierta el carácter de la base 10 en la base 2 de 3 dígitos utilizando el carácter de entrada y el espacio como dígitos. Los 5 resultados se imprimen implícitamente en líneas separadas.
Un puerto genérico es un poco aburrido, así que aquí hay una respuesta más idiomática de 61 bytes:
Pruébalo en línea! No hay una versión detallada ya que el desverbosificador no comprende listas de direcciones o incluso multidireccionales dentro de polígonos ordinarios. Explicación:
Cada ruta se especifica utilizando una lista de direcciones (
←↑→↓
). Cuatro atajos utilizables guardan bytes:L
representa↑→
,¬
representa↓←
,T
representa→↓←
mientras+
representa→↓←↑
, aunque al menos una flecha debe permanecer para que la lista sea reconocida como una lista de direcciones (por lo que, por ejemploTT
, no se puede usar3
).fuente
Jalea ,
3532 bytesPruébalo en línea! o verlos a todos .
Igual que el método de dzaima.
fuente
Perl 5
-Mbigint -pa
, 101 bytesPruébalo en línea!
fuente
Python 3 , 119 bytes
Pruébalo en línea!
Cada 'píxel' se representa como un número entero donde cada potencia de dos indica si el píxel es sólido. Esto aprovecha el hecho de que las tres esquinas de la derecha son siempre el dígito.
fuente
JavaScript (ES8), 87 bytes
fuente