Identicons são representações visuais de valores de hash, geralmente feitos de arranjos simétricos de formas geométricas. Seu avatar padrão do Stack Exchange é um identicon. Esse desafio é sobre a criação de "wordenticons" , versões simples de identicons baseadas em texto que se aplicam a cadeias de letras minúsculas, ou seja, palavras.
Desafio
Escreva um programa ou função que use uma string S e produza seu wordenticon. É garantido que S não é vazio e contém apenas caracteres em minúsculas da letra em inglês az. Opcionalmente, você pode assumir que S tem uma nova linha à direita.
O wordenticon de S será uma grade quadrada de texto com comprimentos laterais 2*length(S)
compostos por espaços (
), barras verticais, ( |
) e barras horizontais ( ―
).
Para gerar o wordenticon de S, forme uma grade quadrada em que cada coluna corresponda a uma letra de S (na ordem normal de leitura da esquerda para a direita) e cada linha corresponda a uma letra de S (na ordem de leitura normal de cima para baixo) )
Por exemplo, se S é food
nossa grade inicial, parece
food
f....
o....
o....
d....
onde .
é apenas um espaço reservado.
Para cada ponto vazio (todos .
) na grade:
- Se a letra da coluna vier antes da letra da linha em ordem alfabética, substitua
.
por|
. - Se a letra da coluna vier após a letra da linha em ordem alfabética, substitua
.
por―
. - Se as letras da coluna e da linha forem iguais, substitua
.
por
Aqui está o food
exemplo após cada uma dessas etapas:
Adicionando
|
:food f...| o|..| o|..| d....
Adicionando
―
:food f.――| o|..| o|..| d―――.
Adicionando
food f ――| o| | o| | d―――
Para concluir o wordenticon, remova a linha e a coluna supérfluas que contêm as palavras
――|
| |
| |
―――
espelhar a coisa toda horizontalmente
――||――
| || |
| || |
――― ―――
e finalmente espelhe-o novamente na vertical
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
resultando na 2*length(S)
grade de texto de comprimento lateral que é o wordenticon final.
Exemplos
Aqui estão alguns exemplos adicionais do wordenticon. Observe que palavras diferentes podem ter wordenticons idênticos e alguns wordenticons podem ser completamente compostos por espaços (infelizmente a marcação não quer renderizá-los).
food
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
mood
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
foof
―― ――
| || |
| || |
―― ――
―― ――
| || |
| || |
―― ――
fool
――――――
| || |
| || |
|―― ――|
|―― ――|
| || |
| || |
――――――
a [2*2 grid of spaces]
to
||
― ―
― ―
||
it
――
| |
| |
――
tt [4*4 grid of spaces]
abc
――――
| ―― |
|| ||
|| ||
| ―― |
――――
and
――――
| || |
|― ―|
|― ―|
| || |
――――
but
――――
| || |
|― ―|
|― ―|
| || |
――――
you
||||
― ―― ―
―| |―
―| |―
― ―― ―
||||
bob
― ―
| || |
― ―
― ―
| || |
― ―
cat
|――|
― ―― ―
|| ||
|| ||
― ―― ―
|――|
cart
|――――|
― ―――― ―
|| ―― ||
||| |||
||| |||
|| ―― ||
― ―――― ―
|――――|
todo
||||||
― | | ―
―― ―― ――
― | | ―
― | | ―
―― ―― ――
― | | ―
||||||
mice
||||||
― |||| ―
―― ―― ――
――| |――
――| |――
―― ―― ――
― |||| ―
||||||
zyxw
||||||
― |||| ―
―― || ――
――― ―――
――― ―――
―― || ――
― |||| ―
||||||
banana
|―|―||―|―|
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|| | || | ||
― ― ― ― ― ―
|―|―||―|―|
codegolf
――――――――――――――
| ||| |||| ||| |
|― ―――――――――― ―|
|―| ―――――――― |―|
|―|| ――||―― ||―|
| ||| |||| ||| |
|―|||― || ―|||―|
|―||――― ―――||―|
|―||――― ―――||―|
|―|||― || ―|||―|
| ||| |||| ||| |
|―|| ――||―― ||―|
|―| ―――――――― |―|
|― ―――――――――― ―|
| ||| |||| ||| |
――――――――――――――
programming
―||―||||||||||||―||―
| || |||||||||||| || |
―― |―||||||||||||―| ――
――― ―|―――― ――――|― ―――
| || |||||||||||| || |
――――― ―――――――――― ―――――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
―――|―|―― ―||― ――|―|―――
―――|―|||| || ||||―|―――
――― ―|―――― ――――|― ―――
――― ―|―――― ――――|― ―――
―――|―|||| || ||||―|―――
―――|―|―― ―||― ――|―|―――
―――|―| |―||―| |―|―――
―――|―| |―||―| |―|―――
――――― ―――――――――― ―――――
| || |||||||||||| || |
――― ―|―――― ――――|― ―――
―― |―||||||||||||―| ――
| || |||||||||||| || |
―||―||||||||||||―||―
abcdefghijklm
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
Pontuação
Isso é código-golfe , o código mais curto em bytes vence. O desempatador vai para a resposta anterior.
Notas
- Qualquer instância de barra horizontal (
―
) no seu código pode ser contada como 1 byte, em vez dos 3 bytes UTF-8 que ele realmente ocupa. (Até dez instâncias.) - Se desejar, você pode usar traços regulares (
-
) no lugar de barras horizontais (―
). - Não é permitido remover ou adicionar espaços à direita nas linhas de um wordenticon (mesmo que a forma permaneça inalterada). Deve ser um
2*length(S)
quadrado de texto com o comprimento exato do lado. - O wordenticon de saída pode, opcionalmente, ter uma única nova linha à direita.
programming
, and
e codegolf
mas você esqueceu puzzles
...