Dibuje lo siguiente en la menor cantidad de bytes posible:
-------------------------
| | ABC | DEF |
| 1 | 2 | 3 |
-------------------------
| GHI | JKL | MNO |
| 4 | 5 | 6 |
-------------------------
| PQRS | TUV | WXYZ |
| 7 | 8 | 9 |
-------------------------
| | | |
| * | 0 | # |
-------------------------
Respuestas:
pb , 240 bytes
(Este programa solicitará la entrada en la versión actual de pbi, porque va a Y = -1 y la
B
variable intenta actualizarse. Incluso si ingresa input, nada se romperá. Es molesto pero es mejor que la versión anterior que solicitó información sin importar qué.)pb es un lenguaje que trata sobre tratar el terminal como un lienzo 2D. Para generar, debe mover el "pincel" (un punto representado por los valores actuales de las variables X e Y) a donde desea que vaya ese carácter y colocarlo allí. Es engorroso para cosas como imprimir una palabra, pero para el arte a menudo es conveniente.
Este programa en realidad no dibuja exactamente lo que especifica la pregunta. (¡Espera, no me desestimes todavía! ¡Déjame explicarte!)
Dibujar cajas con bucles es bastante fácil, pero hay una trampa. Si repites la siguiente forma:
Obtendrá cajas, pero las correctas e inferiores estarán abiertas. Puede dibujar manualmente los lados adicionales, pero eso cuesta bytes. Para evitar esto, mi programa realmente dibuja esto, con los bordes abiertos a la izquierda y arriba:
Shh, shh, está bien. pb le permite "escribir" en un punto del lienzo con uno o más valores negativos en sus coordenadas. El valor se almacena mientras se ejecuta el programa, pero solo los puntos donde X e Y son ambos> = 0 se escriben realmente en la pantalla. Este programa coloca el pincel de modo que las áreas que están teñidas en esta imagen tengan una X o Y negativa:
Aunque las líneas adicionales se "dibujan", nunca se imprimen.
Después de recorrer y crear la cuadrícula, este programa llena los nueve cuadros superiores. El primero está codificado, se escribe un 1 y el programa continúa. Los otros ocho se generan mediante programación. Ignorando el código para pasar al siguiente cuadro, notando cuando la fila está vacía, etc. (suponga que el pincel siempre comienza en la fila inferior del cuadro y en la columna central), esto es lo que se ejecuta ocho veces:
Incluso sabiendo que ese
b
es el comando para escribir un personaje,^v<>
mueve el pincel yw[a!b]{}
ejecuta el código entre llaves hasta quea != b
sea difícil de seguir. Lo primero que debe tener en cuenta es que no puede definir variables en pb. Hay seis en cada programa y tienes que aprender a vivir con ellos. En segundo lugar,T
es la única variable que realmente puede usar de la forma en que está acostumbrado a usar variables; asignar un valor y luego leerlo más tarde. Cualquier otra variable no se puede establecer y solo le dice algo sobre el punto en el lienzo en el que se encuentra o solo se puede establecer indirectamente y con efectos secundarios (^v<>
cambiarX
yY
, que también cambia la ubicación del pincel.c
EstableceP
en(P+1)%8
, que también cambia el color de salida). Mantener un contador para saber qué número debe escribirse y qué letras es simplemente imposible. En cambio, este código solo realiza un seguimiento del número y calcula las letras basadas en él. Así es cómo:Esto es imperfecto, ya que solo se colocan 3 letras en los cuadros 7 y 9. Entonces, después de llenar la fila inferior (codificación simple), cada letra en el cuadro 9 se incrementa en 2 y la W se coloca manualmente. Del mismo modo, cada letra en las casillas 7 y 8 se incrementa en 1 y la P se coloca manualmente.
Sin golf:
fuente
Brainfuck, 565 caracteres (212 bytes)
Código simple:
fuente
Chicle , 103 bytes
Hexdump:
Aburrido y práctico.
fuente
Python 2, 147 bytes
Un borrador rápido de una estrategia básica. Utiliza el formato de cadena para insertar las etiquetas, que están codificadas en una cadena larga.
fuente
C, 160 bytes
Tiene sentido aprovechar el hecho de que las letras están en secuencia. Este código recorre los 325 caracteres del teclado e imprime un espacio o la siguiente letra según sea necesario.
Sin golf
fuente
Java, 296 bytes
Golfizado:
Sin golf:
fuente
Lua, 209 bytes
Golfizado:
Sin golf:
fuente
JavaScript (ES6),
184182 bytesLas filas de guiones son obviamente comprimibles y los dígitos también, pero no pude hacer nada con las letras. Editar: Guardado 1 de 2 bytes gracias a @Shaggy.
fuente
replace(/-|!./g,s=>s=="-"?s.repeat(25):"| ${s[1]} ")
- reemplazando comillas por comillas inversas. Intenté algunas cosas para rellenar los grupos de letras, pero lo mejor que pude hacer fue 194 bytes.CJam, 128 bytes
Pruébalo en línea.
fuente
Perl, 142 + 1 = 143 bytes
Caracteres no imprimibles, por lo que la versión sin codificar está debajo.
fuente
-M...
debería contarse también?Python 3.5 - 240 bytes:
Imprime exactamente lo que quiere el OP, aunque puede ser un poco largo.
fuente
Pitón 2, 200
Estrategia de reemplazo simple.
fuente
Python 2, 168 bytes
Un método sencillo que no utiliza compresión incorporada:
fuente
/// , 154 caracteres
fuente
GML (Game Maker Language) 8.0, 269 bytes
En Game Maker,
#
es el personaje de nueva línea y se puede escapar\#
fuente
Python 2, 134 bytes
Esta fuente contiene caracteres no imprimibles, por lo que se presenta como un volcado hexadecimal con el que se puede decodificar
xxd -r
.fuente
05AB1E , 91 bytes (no competitivos)
Pruébalo en línea!
fuente
J ,
105103 bytesPruébalo en línea!
fuente