Wo zeigt der Pfeil?
In dieser Herausforderung musst du einem Pfeil folgen und den Charakter ausgeben, auf den er zeigt.
Beispiele
Eingang:
d S------+ b
|
|
c +--->a
Ausgabe: a
Eingang:
S-----+---a->c
|
V
b
Ausgabe: b
Der Pfeil zeigt nicht auf, c
weil er durch geteilt ist a
, was bedeutet, dass dieser Pfad niemals zu einer Pfeilspitze führt.
Eingang:
a S s
| |
V V
b c
Ausgabe: b
Eingang:
d s<+S+--V
||| Q
-++
Ausgabe: Q
Dieser Pfad beginnt am S
, geht nach rechts runter, geht nach rechts rauf und zeigt dann nach unten auf das Q. Beachten Sie, dass der Pfad nicht direkt von S
nach verläuft +
.
Eingang:
d s-+ +-S +--+
+-->b | | |
| | +--+ |
+--+ A<----+
Ausgabe: A
Eingang:
S-----+
| +-^
+---+->B
+---^
Ausgabe: B
Weil die gültige Zeile niemals zu einem Leerzeichen führt. Die einzige Zeile, die nicht zu einem Leerzeichen führt, führt zu aB
Herausforderung
Die Eingabe ist eine mehrzeilige Zeichenfolge, in der Sie das Zeichen finden müssen, auf das der Pfeil zeigt. Es wird nur einen gültigen Pfeil geben. Der gültige Pfeil wird nur Punkt auf alphanumerische Zeichen ohne S
. Eine Linie wird sich niemals überlappen. z.B-|-
S
(groß) stellt dar, wo der Pfeil beginnt.-
repräsentiert eine horizontale Linie+
repräsentiert eine mögliche Änderung der Achse. Ein gültiger Pfeil beginnt niemals mit einem+
.|
repräsentiert eine vertikale Linie> < V ^
Jede davon repräsentiert die Pfeilspitze. Diese werden sich niemals mit einem verbinden+
.
Es wird nur einen S
in der Zeichenfolge geben. Die Eingabe wird auch als Rechteck (nicht unbedingt als Quadrat) aufgefüllt.
S
." Sollte wahrscheinlich mit "Dies wird niemals das erste Zeichen des Pfeils sein" umformuliert werden. (Da imQ
Beispiel ein+
neben einem stehtS
.) "+
Stellt eine Änderung der Achse dar." könnte besser sein "+
repräsentiert eine mögliche Änderung der Achse." (Weil dasB
Beispiel zeigt, dass man sich+
ohne Richtungswechsel durch eine bewegen kann .) Ansonsten nette Herausforderung. :)---^
? Mit anderen Worten, wenn in Beispiel B, könnte das B in der ersten Reihe bleiben?S>a
gültig?Antworten:
JavaScript (ES6), 195
245 231 242 246 250Edit4 Nun eine einzige rekursive Funktion. Mehr kann man wohl nicht spielen
Edit3 Test für gerade Linie und Test für Pfeilspitze in T-Funktion zusammengeführt, S- und H-Funktionen entfernt.
Edit2 überarbeitete und mehr :( nach dieser dieser Klarstellung
Bearbeiten Kleine Verbesserungen, einige Zeichen hier und da schneiden, warten auf CJammers Schritt in
Testen Sie das folgende Snippet in einem EcmaScript 6-kompatiblen Browser. (Funktioniert mit Firefox. In Chrome fehlt immer noch der Spread-Operator.
...
)quelle
JavaScript 2016,
264 263 249 240 235234 BytesFühren Sie es in Firefox aus:
In einigen meiner Notizen verstreut:
quelle
o = 'indexOf'
und dann tun,q[o](e)
wann Sie es verwenden möchten.for(;;)
Loops normalerweise am effizientesten. Könnte in diesem Fall falsch sein, aber probieren Sie es aus.a<-+S->b
denke ich , es geben sollteb
nur als ein gültiger Pfeil wird nie mit + beginnenJavaScript 2016
(immer eine gültige und gute Antwort, kein Problem damit)VBA Excel 2007, 894 Byte
Nun, das fing viel besser an als es endete. Ich habe das Gefühl, dass meine Logik fehlerhaft ist und ich hätte eine Tonne Bytes einsparen können, wenn ich einen Teil meiner Logik neu angeordnet hätte
Die Eingabe hierfür ist die Spalte A des Blattes, auf dem Sie sich befinden. Diese Methode nutzt die Tatsache, dass Excel dieses schöne Raster hat und bricht alles auf, damit Sie besser sehen können, was es tut.
Sub m()
nimmt einfach die kopierten eingefügten Daten aus Spalte A und bricht sie mit char auf. Wenn wir eine geänderte Eingabe zulassen, können Sie durch Entfernen ein paar Bytes sparen, wenn Sie das Labyrinth in 1 Zeichen pro Zelle vorformatierensub m()
Fügen Sie ein Labyrinth in Excel mit einer Größe von bis zu 99 Zeilen und 27 Zeichen ein. Wenn Sie größere Labyrinthe möchten, können Sie mit nur 2 zusätzlichen Bytes den Umfang auf 999 Zeilen und ZZ-Spalten erhöhen
Möglicherweise muss auch ein Richter anrufen, ob eine Excel-Tabelle eine gültige "Standardeingabe" für eine VBA-Antwort ist. Wenn nicht, ist es so gut wie unmöglich, VBA-Mehrzeileneingaben über das Direktfenster zuzuweisen
Um diesen Code auszuführen, fügen Sie diesen Code einfach in ein Excel-Modul ein, fügen Sie ein Labyrinth in A1 ein und führen Sie es aus
sub j()
quelle
Python 3, 349 Bytes
Ach, so viele Bytes.
Im Wesentlichen eine Breitensuche. Bonus: Dieser wird tatsächlich elegant beendet, anstatt ihn zu verwenden
exit()
, was ohnehin länger dauert.quelle
input()
? Das ist problematisch für mich.Perl 5
Die Lösung fiel länger aus als andere Lösungen.
Auch nach dem Golfen. Das ist also die ungolfed Version.
Es wird die Karte gedruckt, sodass Sie dem Cursor folgen können.
Wie funktioniert es? Bei jedem Schritt werden mögliche Züge auf den Stapel gelegt. Und es läuft weiter, bis nichts mehr auf dem Stapel ist oder eine Lösung gefunden wurde.
Es kann leicht modifiziert werden, um alle Lösungen zu finden und die nächste zu wählen -> while (@_) {...
Prüfung
quelle
PHP-Version (Kommentare sind französisch, sorry)
quelle
Haskell, 268 Bytes
Glückwunsch an die Javascripter! Hab das Kopfgeld aufgegeben, aber hier ist, was ich bekommen habe. Kann / Könnte nicht in allen Fällen funktionieren, kann aber tatsächlich mit Pfeilen umgehen, die in beginnen, und mit Pfeilspitzen, die mit
+
es verbunden sind, soweit ich weiß. Hab noch nicht mal nach dem gesuchtS
, ist erstmal(0,0)
so weit.quelle
Ich möchte eine APL-Version im Geiste von https://www.youtube.com/watch?v=a9xAKttWgP4 sehen
Zunächst kann eine vektorisierte Julia-Lösung, von der ich denke, dass sie 1: 0,3 in APL oder J übersetzt werden kann, mit einer Zeichenfolge R versehen werden, die ein L x K-Pfeilgramm darstellt. Zunächst wird die Symbolmatrix in eine Matrix aus kleinen 3x3-Matrizen übersetzt, deren Muster die binären Erweiterungen der Buchstaben der Zeichenfolge "\ 0 \ x18 \ fH \ t]] \ x1cI" sind. Zum Beispiel wird '+' als Umformung codiert ([0, Ziffern (int (']'), 2,8)], 3,3)
In dieser Darstellung besteht der Pfad aus 2en und wird ab dem Startpunkt von 3en überflutet.
Zu testen,
Übrigens denke ich, dass die Klausel "Ein weiteres + kann nebeneinander stehen, aber der Pfeil sollte priorisieren, wenn er auf ein - oder | zuerst geht." benachteiligt einen Vektoransatz. Wie auch immer, ich habe es einfach ignoriert.
quelle