Introdução
Uma página de código mapeia valores inteiros para um caractere específico. Podemos visualizar uma página de código como esta:
+ --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - - + --- + --- + --- + --- + | | 0 1 | 2 3 4 5 6 7 8 9 A B C D E F + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - - + --- + --- + --- + --- + | 0 q w e r | t z você eu o | p a | s d f g j + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - - + --- + --- + --- + --- + | 1 | k eu y x c v b n | m Q W E R T Z U + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - - + --- + --- + --- + --- + | 2 Eu O P A S D F G H J | | | | | | + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + --- + - - + --- + --- + --- + --- +
As linhas especificam o primeiro dígito e as colunas o segundo dígito do número hexadecimal.
O desafio
Dada uma cadeia de 16 a 255 caracteres únicos, produza a página de código correspondente usando o índice baseado em zero de cada caractere na cadeia como valor. A entrada, qwertzuiopasdfghjklyxcvbnmQWERTZUIOPASDFGHJ
por exemplo, renderia a tabela acima.
- A saída deve estar exatamente no mesmo formato da tabela acima. Somente uma nova linha à direita é opcional.
- Se o comprimento da entrada não for múltiplo de 16, será necessário iniciar uma nova linha para os caracteres restantes e deixar as células não utilizadas vazias (= preenchidas com 3 espaços).
- Cada caractere é colocado exatamente no meio de uma célula, preenchido por um espaço à esquerda e à direita.
- Os valores na primeira linha e coluna são dados por números hexadecimais com os dígitos
0123456789ABCDEF
. Aqueles são preenchidos com um espaço à esquerda e à direita também. Você pode optar por usar dígitos hexadecimais em minúsculas, mas precisa se ater a um. - Os únicos caracteres presentes na saída são hífens
-
, vantagens+
, tubos|
, espaços, os dígitos dos números hexadecimais e os caracteres da entrada.
- São proibidos quaisquer componentes internos relacionados a tabelas de arte ASCII ou banalizarem o problema.
- Você pode assumir que a entrada consiste apenas em caracteres de uma codificação específica. Especifique se for esse o caso.
- Se o seu idioma puder lidar apenas com entrada ASCII, você poderá assumir a entrada somente ASCII e caracteres repetidos.
Regras
- Função ou programa completo permitido.
- Regras padrão para entrada / saída.
- Aplicam-se brechas padrão .
- Isso é código-golfe , e a menor contagem de bytes vence. O desempatador é uma inscrição anterior.
Feliz codificação!
Respostas:
Pitão, 60 bytes
A nova linha líder é significativa.
Experimente aqui.
fonte
+---+---+---[...]
. Em Pyth, a função nova linha imprime e retorna seu argumento.Python 3.5,
326355 bytes:( +29 bytes, pois se o comprimento da última linha não for múltiplo de 16, as células não utilizadas devem ser deixadas em branco (embora, na minha opinião, pareça muito melhor se essas células vazias não forem mostradas) )
Funciona como um encanto!
Entradas e saídas de amostra:
Espero que isso esteja bem.
Além disso, aqui está outra versão que eu criei para esse desafio, que, embora seja um candidato inválido, pois não imprime células vazias extras para a última linha, se o comprimento não for múltiplo 16, na minha opinião gera uma página muito mais bonita do que o exigido pelo OP, principalmente porque ele nem mostra células vazias se a última linha não é um múltiplo de 16, mas apenas mostra células preenchidas, e é isso:
Aqui está uma amostra de entrada e saída para o código inaplicável acima:
fonte
05AB1E ,
6563 bytesCódigo:
Experimente online! . Usa a codificação CP-1252 .
fonte
JavaScript (ES6), 148 bytes
A
' 0123456789ABCDEF'
existe para preencher a primeira coluna, mas convenientemente também cobre a primeira linha. A sequência de entrada é então preenchida com espaços para permitir que ela seja dividida em substrings de comprimento 16,(?|^)
impedindo que o espaço à esquerda seja correspondido. O resto é apenas juntar as peças.fonte
Excel VBA, 157 bytes (trapaça?)
Função de janela imediata VBE anônima que destrutivamente leva a entrada do intervalo
[A1]
e as saídas para oActiveSheet
objeto.Golfe
Formatado
Entrada / Saída
Dado:
a saída gerada é
fonte