En el pasado, los marcadores automáticos usaban tarjetas perforadas con una columna para cada dígito del número que se marcaría. Las columnas tenían siete filas. Las primeras tres filas representaban los números (1,2,3), (4,5,6) y (7,8,9) respectivamente. Las últimas tres filas giraron esta disposición 90 °: (1,4,7), (2,5,8) y (3,6,9). La fila central se usó para 0. Cualquier dígito 1-9 tendría dos agujeros perforados: uno en las primeras tres filas y otro en las tres filas inferiores. Zero solo tendría la fila del medio perforada. .
Visualicemos la columna perforada para el número 6 ( está sin perforar, x
está perforada, la guía de la izquierda es solo para ilustrar la codificación):
123 .
456 x
789 .
0 .
147 .
258 .
369 x
Buscamos qué fila (s) contienen el número que intentamos marcar. Para 6, esta es la segunda fila y la novena fila. Estas dos filas están perforadas, las cinco filas restantes están sin perforar. Aquí están los patrones perforados para todos los dígitos 0-9:
0 1 2 3 4 5 6 7 8 9
123 . x x x . . . . . .
456 . . . . x x x . . .
789 . . . . . . . x x x
0 x . . . . . . . . .
147 . x . . x . . x . .
258 . . x . . x . . x .
369 . . . x . . x . . x
Su objetivo es (escribir un programa o función para) perforar estas tarjetas para mí.
Entrada: un número, tomado en cualquier formato razonable (cadena, número entero, lista de números enteros, etc.), que no exceda 9999999999999.
Salida: la cuadrícula de columnas perforadas correspondientes a la entrada del número. No necesita los encabezados o el espacio adicional que se muestra arriba, solo las columnas perforadas. Las nuevas líneas iniciales / finales están bien, al igual que el espacio en blanco entre filas / columnas siempre que sea coherente . Hablando de eso, siempre que sean consistentes, puede usar cualquier carácter (sin espacios en blanco) para perforar, y cualquier otro carácter para no perforar (aunque debería ser obvio, especifique qué caracteres está usando).
Este es el código de golf, por lo que gana el código más corto. Las lagunas estándar no están permitidas.
Casos de prueba (todo uso .
para no perforado, x
para perforado):
In: 911
Out: .xx
...
x..
...
.xx
...
x..
In: 8675309
Out: ....x..
.x.x...
x.x...x
.....x.
..x....
x..x...
.x..x.x
In: 5553226
Out: ...xxx.
xxx...x
.......
.......
.......
xxx.xx.
...x..x
Respuestas:
Jalea , 13 bytes
Pruébalo en línea!
1
= perforado,0
= no perforado.fuente
Pyth, 25 bytes
Usos
0
para perforado y"
para no perforado.Pruébalo aquí
Explicación
fuente
JavaScript (ES6),
6054 bytesToma datos como una matriz de enteros. Devuelve una matriz binaria, con 0 = no perforado / 1 = perforado.
Pruébalo en línea!
fuente
05AB1E ,
1615 bytesUtiliza 0 y 1 .
Pruébalo en línea!
Explicación
fuente
SOGL V0.12 , 23 bytes
Pruébalo aquí!
Compresión.
fuente
Python 2 , 84 bytes
Pruébalo en línea!
0/1
se utiliza para no perforado / perforado.fuente
Python 3 ,
8480 bytesPruébalo en línea!
fuente
C (sonido metálico) ,
108107 bytesPruébalo en línea!
Toma el número de entrada como cadena. Imprime resultados en
.
yX
como en los ejemplos.Créditos
-1 byte gracias @ solo ASCII
fuente
putchar(".X"[(c--?16<<c%3|1<<c/3:8)>>i&1]))c-=48
lugar dec-=48,putchar(".X"[(c--?16<<c%3|1<<c/3:8)>>i&1]))
J ,
3120 bytes-11 bytes gracias a FrownyFrog!
Pruébalo en línea!
J , 31 bytes
Pruébalo en línea!
Toma la entrada como una lista de dígitos
0 - sin perforar, 1 - perforado
Explicación:
fuente
Lienzo ,
2725 bytesPruébalo aquí!
fuente
Carbón , 28 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Utiliza 0/1, pero puede admitir caracteres arbitrarios a un costo de 1 byte: ¡ Pruébelo en línea! . Explicación:
fuente
Perl 5
-F
, 52 bytesPruébalo en línea!
Usos
1
para perforado y0
para no perforado.fuente