Inspiriert von diesem kleinen Spiel .
Herausforderung
Geben Sie als Eingabe die Anfangsposition eines Gitters (immer 5x5) wie folgt an:
-ABCD
-A---
---C-
---BD
--E-E
Sie müssen die Buchstaben verbinden (alle gleichen Buchstaben zusammen) und alle -
Leerzeichen entfernen . Die Buchstaben werden immer sein A,B,C,D and E
.
Jedes Buchstabenpaar muss durch eine einzelne unverzweigte Linie verbunden sein, die sich im rechten Winkel biegen kann (wobei derselbe Buchstabe zur Darstellung der Linie verwendet wird).
Die Eingabe hat garantiert genau 2 Mal jeden Startbuchstaben und immer alle Startbuchstaben AE.
Die Eingabe kann von stdin oder einer einzigen Zeichenfolge als Argument für eine Funktion oder sogar von einem Array / einer Matriz / einer Liste von Zeichen gelesen werden. Dies ist der bequemste Weg zu Ihrer Codierungssprache.
Da dies Code-Golf ist, gewinnt der kürzeste Code in Bytes!
Beispiel
Es gibt nicht nur eine Lösung für jedes Problem, sondern die Regeln gelten für alle (kein Leerzeichen und keine getrennten Buchstaben). Und der Eingang hat garantiert mindestens einen korrekten Ausgang.
Beginnen wir mit dem Verbinden der Buchstaben A:
AABCD
AA---
AA-C-
AA-BD
AAE-E
Verbinden Sie nun die Buchstaben B:
AABCD
AAB--
AABC-
AABBD
AAE-E
Verbinden Sie nun die Buchstaben C:
AABCD
AABC-
AABC-
AABBD
AAE-E
Verbinden Sie nun die Buchstaben D:
AABCD
AABCD
AABCD
AABBD
AAE-E
Und schließlich die Buchstaben E:
AABCD
AABCD
AABCD
AABBD
AAEEE
Noch ein Beispiel
input:
E--E-
BB-C-
AD---
---C-
AD---
output:
EEEEE
BBECE
ADECE
ADECE
ADEEE
input:
A----
---B-
-C-C-
-D-D-
BE-EA
output:
AAAAA
BBBBA
BCCCA
BDDDA
BEEEA
A-E
?Antworten:
Perl,
130128127 BytesBeinhaltet +4 für
-n0
(Programm funktioniert nicht über die Befehlszeile, daher wird auch der-
Speicherplatz gezählt)Anruf mit dem Eingang auf STDIN:
Teminate mit
^D
oder^Z
oder was auch immer schließt STDIN auf Ihrem Systemconnectletters.pl
::quelle