Não deixe de ver o outro desafio, o mapa de caracteres ASCII reverso !
O conjunto de caracteres ASCII (Código Padrão Americano para Intercâmbio de Informações) é o padrão de codificação de caracteres mais utilizado. Os códigos ASCII representam texto em computadores, equipamentos de telecomunicações e outros dispositivos.
Desafio
Seu desafio é imprimir um mapeamento do conjunto de caracteres ASCII conforme o usuário os insere. GIF:
Depois que o usuário digita todos os caracteres ASCII, a saída deve ficar assim:
Mapeamento
Cada caractere tem uma posição atribuída em uma grade lógica de 16x6, começando com o caractere de espaço na posição superior esquerda e agrupando de forma que o dígito 0 apareça abaixo dele.
Quando a entrada ASCII imprimível for recebida, imprima esse caractere ASCII no local designado da tela sem excluir nenhum caractere atualmente na tela.
Regras
- Seu programa só precisa mapear os caracteres ASCII imprimíveis
0x20
para0x7E
. - Seu programa não deve terminar e continuar a mapear caracteres para a tela até que todos os caracteres ASCII imprimíveis tenham sido inseridos. A partir daqui, seu programa pode terminar ou sair para Neverland.
- Seu programa pode mapear caracteres da maneira que desejar, por exemplo, para uma planilha, tabela, janela do console ou uma janela gráfica.
- Não importa como você exiba o mapeamento, ele 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.
Socorro
Aqui está o algoritmo de pseudocódigo que eu usei para gerar o 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
Pode haver outra maneira de obter a saída necessária. Você pode optar por usar o meu algoritmo ou o seu, mas a saída deve ser a mesma, independentemente.
Aqui está uma referência de tabela ASCII útil.
Pontuação
A resposta com menos bytes em cada idioma vence. Diverta-se!