Eine Ameise läuft an den Rändern (nicht an den Flächen) eines Drahtgitterwürfels entlang. Jeder Scheitelpunkt, auf den er trifft, präsentiert ihm eine Gabelung, von der zwei neue Kanten abzweigen. Die Ameise entscheidet, in welche Richtung sie sich dreht - leftoder right. Diese Richtungen beziehen sich auf die Ameise, die dem Scheitelpunkt zugewandt ist und sich außerhalb des Würfels befindet. Ihr Ziel ist es , aus der Folge von bestimmen left/ rightEntscheidungen die Ameise nahm, wäre es an der gleichen Stelle endet , dass es angefangen hat .
Wenn sich die Ameise beispielsweise viermal nach links dreht ( left left left left), hat sie ein Quadrat gegen den Uhrzeigersinn durchquert und endet an derselben Stelle, an der sie begonnen hat. Aber wenn es geht left left left left right, wird es an einer anderen Stelle auf dem Würfel enden. Wenn es geht left right right right left, endet es an seiner Startkante, zeigt aber zum gegenüberliegenden Scheitelpunkt, der nicht zur selben Position zählt.
Der Pfad der Ameise wiederholt möglicherweise Kanten, einschließlich der Kante, an der sie begonnen hat. Entscheidend ist jedoch, wo sie nach der gesamten Sequenz endet.
Schreiben Sie eine benannte Funktion , die die Abfolge der Umdrehungen der Ameise aufnimmt und ausgibt, ob die Ameise nach der Abfolge wieder an ihrer Startposition ist. Das Zuweisen einer unbenannten Funktion zu einer Variablen reicht aus, um sie zu einer benannten Funktion zu machen.
(Bearbeiten: Wenn Ihre Sprache keine benannte Funktion erstellen kann, kann sie stattdessen die Funktion mit Ein- und Ausgängen über STDIN / printing oder den Stapel implementieren. Wenn dies nicht möglich ist, erstellen Sie ein Snippet, in dem die Ein- und Ausgaben gespeichert sind Variablen.)
Eingang
Eine Folge von left/ rightEntscheidungen von Länge 0bis 31einschließlich, dargestellt in einem Format Ihrer Wahl. Dies kann eine Folge von Buchstaben R/ L, eine Liste von Zahlen 1/ -1oder ein Array von Booleschen Werten sein. Nichts ist kitschiger als Methodennamen oder Zeichenfolgen, die für Ihren Code nützlich sind.
Bitte posten Sie die Testfälle in Ihrem Format, wenn sie sich von den folgenden Testfällen unterscheiden.
Ausgabe
True/ False, 0/ 1oder die Analoga in Ihrer Sprache.
Gewinnkriterien
Wenigste Bytes gewinnt. Denken Sie daran, dass Sie eine benannte Funktion angeben müssen. Sie können Code außerhalb der Funktion haben, aber diese Bytes zählen auch. Ihre Funktion sollte sich korrekt verhalten, wenn sie mehrmals aufgerufen wird.
Testfälle
True Fälle (einer pro Zeile, der zweite ist eine leere Liste):
1 1 1 1
-1 -1 -1 -1
1 -1 1 -1 1 -1
1 1 -1 -1 1 1 -1 -1
-1 1 1 -1 -1 1 1 -1
1 1 1 -1 -1 -1 -1 1
1 -1 -1 1 -1 -1
1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1
-1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
False Fälle (einer pro Zeile):
1
1 1
1 1 1
-1 1
1 -1 -1 -1 1
1 -1 -1 1 1
-1 1 -1 1
1 1 1 1 -1
-1 -1 1 -1 1 -1 -1 1
1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1
Hier sind die gleichen Testfälle mit L's und R' s.
True Fälle:
RRRR
LLLL
RLRLRL
RRLLRRLL
LRRLLRRL
RRRLLLLR
RLLRLL
RRRRLLLLRLLRLL
LLLRLLRRLRLRRRRRRRRRRRRRRRRR
False Fälle:
R
RR
RRR
LR
RLLLR
RLLRR
LRLR
RRRRL
LLRLRLLR
RLRRRRLLLRRLLL
Zusätzliche Kreditherausforderung
Das Gleiche, aber mit einem Dodekaeder und nicht mit einem Würfel. Ideen finden Sie unter Jagd auf den Wumpus .