¡Asegúrate de ver el otro desafío, el mapa de caracteres ASCII inverso !
El juego de caracteres ASCII (American Standard Code for Information Interchange) es el estándar de codificación de caracteres más utilizado. Los códigos ASCII representan texto en computadoras, equipos de telecomunicaciones y otros dispositivos.
Reto
Su desafío es imprimir un mapeo del juego de caracteres ASCII a medida que el usuario los ingresa. GIF:
Después de que el usuario ingresa todos los caracteres ASCII, la salida debería verse así:
Cartografía
Cada carácter tiene una posición asignada en una cuadrícula lógica de 16x6, comenzando con el carácter de espacio en la posición superior izquierda y ajustando de manera tal que el dígito 0 aparezca debajo de él.
Cuando se recibe una entrada ASCII imprimible, imprima ese carácter ASCII en su ubicación de pantalla asignada sin eliminar ninguno de los caracteres actualmente en pantalla.
Reglas
- Su programa solo necesita mapear los caracteres ASCII imprimibles,
0x20
a0x7E
. - Su programa no debe finalizar y continuar asignando caracteres a la pantalla hasta que se hayan ingresado todos los caracteres ASCII imprimibles. Desde aquí, su programa puede terminar o ejecutarse en Neverland.
- Su programa puede asignar caracteres de la forma que desee, por ejemplo, a una hoja de cálculo, una tabla, una ventana de consola o una ventana gráfica.
- No importa cómo visualice la asignación, 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.
Ayuda
Aquí está el algoritmo de pseudocódigo que utilicé para generar el GIF:
loop forever
c = input
y_coord = c / 16
x_coord = c - y * 16
if c is printable
print c at (x_coord * 2 + 1, y_coord + 1)
end if
end loop
Puede haber otra forma de lograr el resultado requerido. Puede elegir usar mi algoritmo o el suyo, pero la salida debe ser la misma independientemente.
Aquí hay una referencia de tabla ASCII útil.
Tanteo
La respuesta con la menor cantidad de bytes en cada idioma gana. ¡Que te diviertas!
Respuestas:
QBIC ,
5357 bytesSe agregaron 4 bytes para el espaciado.
QBIC comenzó el desarrollo como una abreviatura de QBasic, por lo que pensé que traducir mi respuesta QBasic demostraría esto muy bien. Hemos ahorrado un 40% en el byte de conteo para un programa funcionalmente idénticos - y eso es incluso cuando
LOCATE
,ASC
yCHR
no tienen QBIC-funciones todavía. Afortunadamente, QBIC puede pasar el código directamente a QBasic para compensar esto. Un lado a lado:fuente
JavaScript (ES6) + HTML, 114 + 16 = 130 bytes
Guardado 16 bytes gracias a @Shaggy
Es tan increíblemente satisfactorio simplemente apretar el teclado ...
fuente
prompt()
en un bucle? Le ahorrará todo el manejo de eventos y HTML. OP parece permitirlo. Vea los comentarios de la publicación de Mathematica.onkeypress
solo, permitiéndole soltar labody
etiqueta. Además, lapre
etiqueta se puede acortar a solo<pre id=O
. Sin>
embargo, deberá incluir el cierre para que funcione en un fragmento.QBasic 4.5,
8185 bytesSe agregaron 4 bytes para cumplir con la regla de espaciado.
Y la salida se verá así (NOTA: captura de pantalla anterior, ahora cada carácter está separado por un espacio):
QBasic tiene el
LOCATE
comando, que es útil aquí. Un desglose de este código:fuente
Java 8 , 143 bytes
Utiliza el código de control ANSI
CSI n ; m f
para establecer la posición del cursor yConsole.readPassword()
leer la entrada del usuario en silencio. Salida de algunos caracteres:fuente
readPassword()
usado así. Ah, y parece que te falta un punto y coma después de la impresión. Además, ¿no es posible usar deSystem.out.printf
alguna manera en lugar deSystem.out.println(String.format(
? Y puede cambiar()->
ao->
mediante el uso de un parámetro vacío no utilizado .BrainFuck , 355 bytes
Las opciones de BrainFuck son bastante limitadas, por lo que la salida está en el terminal y la pantalla se "borra" con 20 líneas nuevas. La entrada debe ser los caracteres ASCII, separados por nuevas líneas.
Pruébalo en línea!
Formateado y Documentado
Estas son las notas de depuración que usé para escribir el programa. Utilicé mi intérprete que opcionalmente puede imprimir el estado de la cinta en cada carácter '~' para la depuración.
fuente
Mathematica, 108 bytes
Pruébelo en línea en https://sandbox.open.wolframcloud.com/
Cuando pegue el código y presione
Shift+Enter
, aparecerá un cuadro de diálogo emergente, ingrese,"a"
por ejemplo, el caráctera
. El programa se ejecuta para siempre.Nota: En el sandbox de Wolfram, la fuente tiene un formato diferente al de Mathematica en mi computadora. Por lo tanto, el espacio entre líneas / columnas puede parecer extraño.
fuente
OK
un cuadro de entrada, aparece otro cuadro de entrada para que ingrese la entrada.Python 2 , 115 bytes
Pruébalo en línea!
Requiere comillas (simples o dobles) alrededor de los caracteres ingresados (la versión TIO no).
fuente
raw_input
a,input
ya que es un censo comunitario al que puede suponer que la entrada tiene comillas si es necesario.{
sin una coincidencia}
.str , sin competencia, 18 bytes
Presentando mi nuevo lenguaje semi-esotérico.
fuente
Haskell, 133 bytes
Requiere un terminal que entienda las secuencias de escape ANSI.
Es más corto mantener una lista de todas las teclas presionadas hasta ahora y borrar la pantalla antes de imprimirlas todas en cada ronda que apagar el eco en la sesión de terminal. Este último necesita
import System.IO
yhSetEcho stdin(2<1)
que cuesta demasiados bytes.fuente
C, 101 bytes
Este fue el programa que usé para hacer los gráficos. La salida es como se muestra en el GIF. ;)
fuente
QBasic,
6258 bytesProbado con QB64 . También debería funcionar bien en QBasic regular, aunque es posible que desee modificarlo para hacer un
CLS
en la primera ejecución.Similar a la respuesta de steenbergh , pero se usa
INPUT$(1)
para leer los caracteres uno a la vez. Este enfoque es más corto y tampoco muestra ningún aviso. También se utilizaRUN
para el bucle infinito, ya que no tenemos que almacenar ningún estado entre iteraciones, excepto el estado de la pantalla.fuente
input$()
. Por cierto, también me gusta el tema TIPS.Pascal, 112 caracteres
Como mi solución Mathematica toma muchas Bytes
div
,mod
yToCharacterCode[Input[]]
, intento hacer otra respuesta con Pascal. Pero sinClrScr
mi compilador (FPC) dejó algo de información de compilación en la pantalla.ClrScr;
toma 7 bytes.El
*2
utilizado para el espaciado adecuado toma otros 2 bytes.fuente
LOGOTIPO, 90 bytes
Pruébalo en FMSLogo.
Después de todo, mi solución de Logo es la más corta, en comparación con mi respuesta de Mathematica y Pascal.
Agregue 3 bytes si se requiere que la tortuga esté oculta.
fuente
6502 código máquina + Apple // e ROM, 31 bytes
Volcado hexadecimal:
Asamblea comentada:
Si el cursor lo invalida, aquí hay una versión de 36 bytes sin cursor:
fuente
Ruby,
797571 + 13 = 84 bytes+13 bytes para
-rio/console
bandera.Sin golf
fuente
SmileBASIC 3, 82 bytes
En el conjunto de caracteres SmileBASIC,
¥
se encuentra donde\
normalmente estaría; Esperemos que esto no invalide esta respuesta por completo.fuente
Applesoft BASIC , 134 bytes
Esta es una versión de golf de Apple] [prueba de teclado, el programa que inspiró el desafío.
fuente