Gli identiconi sono rappresentazioni visive di valori di hash, spesso realizzati da disposizioni simmetriche di forme geometriche. L'avatar di Stack Exchange predefinito è identicon. Questa sfida riguarda la creazione di "wordenticon" , semplici versioni testuali di identicon che si applicano a stringhe di lettere minuscole, cioè parole.
Sfida
Scrivi un programma o una funzione che accetta una stringa S e genera il suo wordenticon. S è garantito come non vuoto e contiene solo caratteri alfabetici minuscoli az. Puoi facoltativamente supporre che S abbia una nuova riga finale.
Il wordenticon di S sarà una griglia quadrata di testo con lunghezze laterali 2*length(S)
composta da spazi (
), barre verticali, ( |
) e barre orizzontali ( ―
).
Per generare il wordenticon di S, forma una griglia quadrata in cui ogni colonna corrisponde a una lettera di S (nel normale ordine di lettura da sinistra a destra) e ogni riga corrisponde a una lettera di S (nel normale ordine di lettura dall'alto verso il basso ).
Ad esempio, se S è la food
nostra griglia iniziale assomiglia
food
f....
o....
o....
d....
dove .
è solo un segnaposto.
Per ogni punto vuoto (ogni .
) nella griglia:
- Se la lettera della colonna precede alfabeticamente la lettera della riga, sostituire
.
con|
. - Se la lettera della colonna segue la lettera in ordine alfabetico, sostituire
.
con―
. - Se le lettere di colonna e riga sono uguali, sostituire
.
con
Ecco l' food
esempio dopo ciascuno di questi passaggi:
Aggiunta
|
di:food f...| o|..| o|..| d....
Aggiunta
―
di:food f.――| o|..| o|..| d―――.
Aggiunta
food f ――| o| | o| | d―――
Per completare il wordenticon, rimuovere la riga e la colonna superflue contenenti le parole
――|
| |
| |
―――
quindi rispecchia l'intera cosa in orizzontale
――||――
| || |
| || |
――― ―――
e infine rispecchiarlo di nuovo in verticale
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
risultante nella 2*length(S)
griglia di testo della lunghezza laterale che è il wordenticon finale.
Esempi
Ecco alcuni esempi di wordenticon aggiuntivi. Nota che parole diverse possono avere wordenticon identici e alcuni wordenticon possono essere completamente fatti di spazi (sfortunatamente il markdown non vuole renderli).
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
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
punteggio
Questo è code-golf , vince il codice più breve in byte. Tiebreaker va alla risposta precedente.
Appunti
- Qualsiasi istanza di barra orizzontale (
―
) nel codice può essere conteggiata come 1 byte anziché 3 byte UTF-8 che occupa effettivamente. (Fino a dieci istanze.) - Se lo si desidera, è possibile utilizzare trattini regolari (
-
) al posto delle barre orizzontali (―
). - La rimozione o l'aggiunta di spazi finali nelle righe di un wordenticon non è consentita (anche se la forma rimane invariata). Dovrebbe essere un
2*length(S)
quadrato di testo di lunghezza laterale esatta . - Il wordenticon di output può facoltativamente avere una nuova riga finale.
programming
, and
e codegolf
ma si è dimenticato puzzles
...