Em Mapear caracteres ASCII introduzidos , solicitei que você .. mapeasse caracteres ASCII introduzidos. Desta vez, você fará o oposto, mapeando imediatamente todos os caracteres ASCII e, em seguida, mapeando os espaços sobre eles.
Este programa terá usos práticos, como ver quais caracteres você deixou em um envio de desafio de fonte restrita .
Desafio
Seu trabalho é escrever um programa que desmarca os caracteres inseridos em ASCII. Assim que o programa for executado, ele exibirá esse mapa exato (exceto cor, fonte, tamanho, etc.):
Cada vez que o usuário insere um caractere ASCII imprimível, você imprime um espaço sobre ele.
Regras
- A saída inicial deve ser exatamente como mostrado na primeira imagem acima: uma grade 6x16 com caracteres ASCII em suas respectivas posições, com o espaço (32) no canto superior esquerdo e o til (126) em um caractere esquerdo no canto inferior direito.
- Seu programa só precisa exibir os caracteres ASCII imprimíveis
0x20
para0x7E
. - Seu programa não deve terminar e continuar a imprimir espaços sobre caracteres até que todos os caracteres ASCII imprimíveis tenham sido substituídos. A partir daqui, seu programa pode ser encerrado ou executado em Neverland.
- Seu mapa reverso deve ser atualizado em tempo real (assim que receber a entrada do usuário).
- Se o seu programa não lê a entrada silenciosamente, ele deve afastar o cursor, para que o texto não atrapalhe o mapa.
Aqui está uma tabela ASCII útil para referência.
Pontuação
A resposta com o mínimo de bytes em cada idioma vence. Diverta-se!
Your program only needs to display the printable ASCII characters, 0x20 to 0x7E
Respostas:
SOGL V0.12 , 23 bytes
Experimente aqui!
Recebe entrada na caixa de entrada. Espero que não seja um problema muito grande que os caracteres possam ser excluídos: p
Explicação:
fonte
Código da máquina x86-16, 62 bytes
Despejo hexagonal:
Montagem:
fonte
C ++ (Visual C ++) , 253 (@Step Hen)
261bytesfonte
#include
, bem comoi + 0x20
->i+0x20
. Eu posso estar errado embora.Python 3 , 116 bytes
Experimente online!
fonte
Python 2 , 132 bytes
Guardado 4 bytes graças a @alleks!
Experimente online!
fonte
[:-2]
depoisprint s
?JavaScript (ES6) + HTML,
139136116 +1016 = 132 bytes-3 bytes graças a @Shaggy.
-14 bytes inspirados em @Arnauld.
A
pre
tag de fechamento é necessária neste caso, pois precisamos doinnerText
valor para começar totalmente vazio.fonte
O[h="innerHTML"]=a=[...Array(95)].map()
.a
completamente.a
variável porqueinnerHTML
estava se transformando&
em&
, juntamente com alguns outros. Mudando parainnerText
consertar isso.i
para o escopo global para salvar 2 bytes:map(_=>String.fromCharCode(i++)+(i%16?...),i=32)
QBasic , 107 bytes
Uma função anônima que recebe como pressionamentos de tecla e apaga uma tabela ASCII
-8 bytes graças a @DLosc
fonte
Sub
solução lá - ótima. Infelizmente, temos de contar oEnd Sub
quanto a comunidade decidiu que autocompletar não é válido (pelo menos com VBA, mas tenho certeza de que ela se aplica aqui também)C # (.NET Core) , (138 + usando System;) 151 bytes
Experimente online!
fonte
using System;
na sua contagem de bytes, se ainda não o esqueceu (esqueci de adicioná-la à contagem acima).Node.js
233212 bytesGuardado 21 bytes graças a @thePirateBay
Isso funciona, ainda estou tentando encontrar uma opção on-line, pois todos os repls que encontrei hijack stdin.
Experimente online
fonte
b
e também está usando um identificadorreadline
não inicializado (não tenho certeza se é compatível com a versão no TIO). Você também não precisa de variáveisr
, em vez de&&
no final, pode usar,
e reorganizar parênteses. O mesmo acontece com&&
o começo. Além disso, não há necessidade deprocess.stdout
emreadline
interface, etc ...........process.stdout
lança (pelo menos na minha versão do nó). A coisa da linha de leitura foi um erro de digitação (pressione ctrl-z muitas vezes). Eu vou mudar os&&
s.process.stdout
. Você pode ler a especificação . Isso pode gerar um erro se você estragou algo com o restante do seu código ou se você estiver usando a versão antiga / inconsistente do Node.js.createInterface
aparentemente, retornaundefined
se você omitir o segundo parâmetro. Fui em frente e o removi de acordo com os documentos que você vinculou. No que diz respeito ao TIO, como você o torna interativo?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
Despejo hexagonal:
Montagem comentada:
Isso não tem nenhum cursor. Eu também tenho uma versão de 47 bytes que pode ser válida, dependendo do significado de "afastar o cursor, para que o texto não atrapalhe o mapa":
Isso coloca um cursor no caractere após o caractere digitado (que é o espaço entre os caracteres), para que ele não substitua nenhum dos caracteres reais no mapa. Se isso é válido ou não, cabe ao criador do desafio.
fonte
Python 2 , 96 bytes
Experimente online! A saída parece duvidosa no TIO (porque a entrada é passada de um arquivo), mas funciona bem de maneira interativa. Espero
'A'\n
,'B'\n
etc , é um formato de entrada aceitável.fonte