En Cartografiar caracteres ASCII ingresados , le pedí ... mapear caracteres ASCII ingresados. Esta vez, hará lo contrario, asignando inmediatamente todos los caracteres ASCII y luego asignando espacios sobre ellos.
Este programa tendrá usos prácticos, como ver qué personajes le quedan en una presentación de desafío de fuente restringida .
Desafío
Su trabajo consiste en escribir un programa que la ONU -mapas caracteres ASCII introducidos. Tan pronto como se ejecute el programa, mostrará este mapa exacto (excepto color, fuente, tamaño, etc.):
Cada vez que el usuario ingresa un carácter ASCII imprimible, imprimirá un espacio sobre él.
Reglas
- La salida inicial debe ser exactamente como se muestra en la primera imagen de arriba: una cuadrícula de 6x16 con caracteres ASCII en sus respectivas posiciones, con el espacio (32) en la parte superior izquierda y la tilde (126) en un carácter a la izquierda desde la parte inferior derecha.
- Su programa solo necesita mostrar los caracteres ASCII imprimibles,
0x20
a0x7E
. - Su programa no debe terminar y continuar imprimiendo espacios sobre caracteres hasta que se hayan sobrescrito todos los caracteres ASCII imprimibles. Desde aquí, su programa puede terminar o ejecutarse en Neverland.
- Su mapa inverso debe actualizarse en tiempo real (tan pronto como reciba la entrada del usuario).
- Si su programa no lee la entrada en silencio, debe poner el cursor fuera del camino, para que el texto no se interponga en el mapa.
Aquí hay una tabla ASCII útil como referencia.
Puntuación
La respuesta con la menor cantidad de bytes en cada idioma gana. ¡Que te diviertas!
Your program only needs to display the printable ASCII characters, 0x20 to 0x7E
Respuestas:
SOGL V0.12 , 23 bytes
Pruébalo aquí!
Toma entrada en el cuadro de entrada. Espero que no sea un gran problema que los caracteres se puedan eliminar: p
Explicación:
fuente
Código de máquina x86-16, 62 bytes
Volcado hexadecimal:
Montaje:
fuente
C ++ (Visual C ++) , 253 (@Step Hen)
261bytesfuente
#include
s, así comoi + 0x20
->i+0x20
. Aunque podría estar equivocado.Python 3 , 116 bytes
Pruébalo en línea!
fuente
Python 2 , 132 bytes
¡Guardado 4 bytes gracias a @alleks!
Pruébalo en línea!
fuente
[:-2]
despuésprint s
?JavaScript (ES6) + HTML,
139136116 +1016 = 132 bytes-3 bytes gracias a @Shaggy.
-14 bytes inspirados en @Arnauld.
La
pre
etiqueta de cierre es necesaria en este caso, ya que necesitamos que elinnerText
valor comience totalmente vacío.fuente
O[h="innerHTML"]=a=[...Array(95)].map()
.a
completo.a
variables porqueinnerHTML
se estaba convirtiendo&
en&
, junto con algunos otros. Cambiando ainnerText
arreglado eso.i
al ámbito global para guardar 2 bytes:map(_=>String.fromCharCode(i++)+(i%16?...),i=32)
QBasic , 107 bytes
Una función anónima que toma como pulsaciones de teclas y borra una tabla ASCII
-8 bytes gracias a @DLosc
fuente
Sub
solución allí. Excelente. Desafortunadamente, tenemos que contarEnd Sub
ya que la comunidad ha decidido que el autocompletado no es válido (al menos con VBA, pero estoy seguro de que también se aplica aquí)C # (.NET Core) , (138+ usando el sistema;) 151 bytes
Pruébalo en línea!
fuente
using System;
en su recuento de bytes si aún no lo ha hecho (olvidé agregarlo en el recuento anterior).Node.js
233212 bytesGuardado 21 bytes gracias a @thePirateBay
Esto funciona, todavía estoy tratando de encontrar una opción en línea, ya que todas las respuestas que he encontrado secuestran stdin.
Pruébalo en línea
fuente
b
, y también está utilizando un identificadorreadline
no inicializado (no estoy seguro si es compatible con la versión en TIO). Tampoco necesita variablesr
en absoluto, en lugar de&&
al final, puede usar,
y reorganizar paréntesis. Lo mismo con el&&
al principio. Además, no hay necesidad de queprocess.stdout
en lareadline
interfaz, etc ...........process.stdout
(al menos en mi versión de nodo). Lo de readline fue un error tipográfico (presionó ctrl-z demasiadas veces). Voy a cambiar el&&
s.process.stdout
. Puedes leer la especificación . Puede arrojar un error si arruinó algo con el resto de su código o si está utilizando una versión antigua / inconsistente de Node.js.createInterface
aparentemente regresaundefined
si omite el segundo parámetro. Seguí adelante y lo eliminé según los documentos que vinculaste. En cuanto a TIO, ¿cómo lo haces interactivo?for(a=[],l=_=>console.log(a.join``),i=32;i<127;x=String.fromCharCode(i++),a.push(i&15?x:x+'\n'));l();require('readline').createInterface(process.stdin).on('line',c=>(a[a.indexOf(c)]=' ',l)())
Código de máquina 65c02 + Apple // e ROM, 52 (47?) Bytes
Volcado hexadecimal:
Asamblea comentada:
Esto no tiene cursor alguno. También tengo una versión de 47 bytes que puede ser válida, dependiendo de lo que se entiende por "poner el cursor fuera del camino, para que el texto no se interponga en el mapa":
Esto coloca un cursor en el carácter después del carácter que escribe (que es el espacio entre caracteres), por lo que no sobrescribirá ninguno de los caracteres reales en el mapa. Si esto es válido o no, depende del creador del desafío.
fuente
Python 2 , 96 bytes
Pruébalo en línea! La salida parece dudosa en TIO (porque la entrada se pasa de un archivo), pero está bien interactivamente. Espero
'A'\n
,'B'\n
etc es un formato de entrada bien.fuente