Meu desafio anterior, Imprimir texto invisível, era bastante popular, provavelmente devido ao quão trivial é.
No entanto, aqueles mais atentos de vocês devem ter notado que não estão realmente imprimindo texto invisível, porque é impossível ler o que foi inserido, apenas a saída.
Então eu percebi que tal um verdadeiro desafio texto invisível.
Dada uma sequência que consiste apenas em caracteres ASCII imprimíveis ( 0x20-0x7E
), converta cada caractere em um caractere Unicode distinto (na codificação UTF-8) que não seja um dos 95 caracteres ASCII imprimíveis (qualquer caractere UTF-8 fora do 0x20-0x7E
intervalo)
Entrada
Uma sequência de caracteres ASCII imprimíveis, como uma sequência ou matriz / lista de caracteres
Resultado
A sequência de entrada com cada caractere é substituída por um caractere não imprimível distinto. Cada caractere especificado deve ter um caractere não imprimível correspondente que não seja usado como substituto para qualquer outro caractere.
Se você não conseguir imprimir caracteres não imprimíveis, poderá gerar os valores dos caracteres.
Por exemplo, se o seu código substituir todos os minúsculos a
por 0x01
, você não poderá usar 0x01
como substituto para outros caracteres.
Seu código também deve ser determinístico . Isso significa que, se, dada a string Hello
, todas as minúsculas l
forem substituídas por 0x03
, seu código também deverá substituir todas as minúsculas l
por 0x03
qualquer outra string.
Casos de teste
É um pouco difícil escrever casos de teste para esse desafio, então mostrarei a saída como uma lista de códigos hexadecimais
input -> output
"Hello" -> [0x01, 0x02, 0x03, 0x03, 0x04]
"Hi!" -> [0x01, 0x05, 0x06]
"" -> []
" H " -> [0x07, 0x07, 0x07, 0x01, 0x07, 0x07, 0x07]
"yo! " -> [0x08, 0x04, 0x06, 0x07]