Identicons sind visuelle Darstellungen von Hash-Werten, die häufig aus symmetrischen Anordnungen geometrischer Formen bestehen. Ihr Standard-Stack Exchange-Avatar ist ein Identicon. Bei dieser Herausforderung geht es darum, "wordenticons" zu erstellen , einfache textbasierte Versionen von Identicons, die für Zeichenfolgen aus Kleinbuchstaben, dh Wörtern, gelten.
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die eine Zeichenfolge S aufnimmt und deren Wortsymbol ausgibt. S ist garantiert nicht leer und enthält nur englische Kleinbuchstaben az. Sie können optional annehmen, dass S eine nachgestellte Newline hat.
Das Wortsymbol von S ist ein quadratisches Textraster mit Seitenlängen, 2*length(S)
die aus Leerzeichen (
), vertikalen Balken ( |
) und horizontalen Balken ( ―
) bestehen.
Bilden Sie ein quadratisches Gitter, in dem jede Spalte einem Buchstaben von S (in normaler Lesereihenfolge von links nach rechts) und jede Zeile einem Buchstaben von S (in normaler Lesereihenfolge von oben nach unten) entspricht, um das Wortentikon von S zu erzeugen ).
Wenn zum Beispiel S food
unser anfängliches Gitter ist, sieht es so aus
food
f....
o....
o....
d....
Wo .
ist nur ein Platzhalter.
Für jeden leeren Punkt (jeden .
) im Raster:
- Wenn der Spaltenbuchstabe alphabetisch vor dem Zeilenbuchstaben steht, ersetzen Sie ihn
.
durch|
. - Wenn der Spaltenbuchstabe alphabetisch nach dem Zeilenbuchstaben steht, ersetzen Sie ihn
.
durch―
. - Wenn die Spalten- und Zeilenbuchstaben identisch sind, ersetzen Sie die
.
mit
Hier ist das food
Beispiel nach jedem dieser Schritte:
Hinzufügen von
|
's:food f...| o|..| o|..| d....
Hinzufügen von
―
's:food f.――| o|..| o|..| d―――.
Hinzufügen von
food f ――| o| | o| | d―――
Entfernen Sie die überflüssige Zeile und Spalte mit den Wörtern, um das Wortentikon zu vervollständigen
――|
| |
| |
―――
dann spiegel das ganze horizontal
――||――
| || |
| || |
――― ―――
und zum Schluss wieder senkrecht spiegeln
――||――
| || |
| || |
――― ―――
――― ―――
| || |
| || |
――||――
2*length(S)
Daraus ergibt sich das Textraster mit der Seitenlänge, das das letzte Wort-Symbol ist.
Beispiele
Hier sind einige zusätzliche Beispiele für Wordenticons. Beachten Sie, dass verschiedene Wörter identische Wordenticons haben können und einige Wordenticons vollständig aus Leerzeichen bestehen können (diese möchten markdown leider nicht rendern).
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
――――――――――――――――――――――――
| ―――――――――――――――――――――― |
|| ―――――――――――――――――――― ||
||| ―――――――――――――――――― |||
|||| ―――――――――――――――― ||||
||||| ―――――――――――――― |||||
|||||| ―――――――――――― ||||||
||||||| ―――――――――― |||||||
|||||||| ―――――――― ||||||||
||||||||| ―――――― |||||||||
|||||||||| ―――― ||||||||||
||||||||||| ―― |||||||||||
|||||||||||| ||||||||||||
|||||||||||| ||||||||||||
||||||||||| ―― |||||||||||
|||||||||| ―――― ||||||||||
||||||||| ―――――― |||||||||
|||||||| ―――――――― ||||||||
||||||| ―――――――――― |||||||
|||||| ―――――――――――― ||||||
||||| ―――――――――――――― |||||
|||| ―――――――――――――――― ||||
||| ―――――――――――――――――― |||
|| ―――――――――――――――――――― ||
| ―――――――――――――――――――――― |
――――――――――――――――――――――――
Wertung
Dies ist Code-Golf , der kürzeste Code in Bytes gewinnt. Tiebreaker geht auf die frühere Antwort ein.
Anmerkungen
- Jede Instanz von horizontaler Leiste (
―
) in Ihrem Code wird möglicherweise als 1 Byte anstelle der 3 UTF-8-Bytes gezählt, die sie tatsächlich belegt. (Bis zu zehn Instanzen.) - Falls gewünscht, können Sie
-
anstelle der horizontalen Balken (―
) reguläre Bindestriche ( ) verwenden. - Das Entfernen oder Hinzufügen von nachgestellten Leerzeichen in den Zeilen eines Wordenticons ist nicht zulässig (auch wenn die Form unverändert bleibt). Es sollte ein genaues
2*length(S)
Seitenlängentextquadrat sein. - Das Ausgabewortenticon kann optional eine einzelne nachgestellte Newline haben.
programming
, and
und , codegolf
aber sie vergessen puzzles
...