Inspiriert von einem von Vi Harts Videos (ein Schatz voller potenzieller Herausforderungsideen)
Eine Schlange besteht aus Segmenten gleicher Länge und die Verbindung zwischen jedem Segment kann gerade sein oder eine 90 ° -Drehung ausführen.
Wir können eine solche Schlange (bis zu einer Drehung, die von der Anfangsrichtung abhängt) kodieren, indem wir die Richtung der Umdrehungen (Gerade / Links / Rechts) aufschreiben . Dieser beginnt oben links und zeigt nach rechts
-+ +--+ SR RSSR
| +-+ | S RSL S
+--+ --+ LSSL SSR
Würde durch das Rutschen vertreten sein SRSLSSLRLRSSRSRSS
Und natürlich kann sich eine planare Schlange nicht schneiden (wie in SSSSLLLSS
), was zu einem schrecklichen pixeligen Game Over führen würde.
Ihre Aufgabe ist es festzustellen, ob ein Slither gültig ist oder nicht (führt zu mindestens einer Selbstüberschneidung)
Eingang
Eine Zeichenfolge aus Buchstaben gemacht SLR
mit 2 < length < 10000
Output
Etwas truthy wenn es eine gültige schlittern und etwas Falsey ist , wenn es nicht.
Testfälle
__Valid__
SSLSLSRSRSSRSSSLLSSSRRLRSLRLLSSS
SRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLSSLLRSRRLLRRSRLLRSRRLSLLRRLLSLRR (A hilbert curve)
RLLRSRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLSSLLRSRRLLRRSRLLRSRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLSSLLRSRRLLRR
SRRSRSRSSRSSRSSSRSSSRSSSSRSSSSRSSSSSRSSSSSRSSSSSSRSSSSSSRSSSSSS (Spiral)
SSSSSSSSSSLSSSSSSSLSSSSSSSSLSSSSSLSSSSSSLSSSLLRRLLRRLLSLSSSRRSSSSRSSSRSSSSSSRSSSSSRSSSSSSSSRSSSSSSSRSSSSSSSSS (bigger, squigglier spiral)
LRSLLRLSRSLLSRLSLRSLSSSLRRSSLSRRLRSRLRLSLRLLRLRSSLSLRLRSRSSSSSLSRRLSLSSSRRLRLRLRLRRLLSSLSSSRRLRLRLRLRLSLSSSSSSSSSSSSSRLRLLRLRLRLRLRLRLRLSLSSSLSLSLL
__Invalid__
SRRLSLLRRLLSLRRSRLLRSRRLLRRSRLLLLRSRRLLRRSRLLRSRRLSLLRRLLSLRR
SRRLSLLRRLLSLRRSRLLRSRRLLSRSSSRSSSSSSSRSRSSSSSSSRRLLRRSRLLRSRRLSLLRRLLSLRR
SRRSRSRSSRSSRSSSRSSSRSSSSSSSSSSRSSSSRSSSSSRSSSSSRSSSSSSRSSSSSSRSSSSSS
SSSSSSSSSSLSSSSSSSLSSSSSSSSLSSSSSLSSSSSSLSSSLLRRLRLRRLLSLSSSRRSSSSRSSSRSSSSSSRSSSSSRSSSSSSSSRSSSSSSSRSSSSSSSSS
LRSLLRLSRSLLSRLSLRSLSSSLRRSSLSRRLRSRLRLSLRLLRLRSSLSLRLRSRSSSSSLSRRLSLSSSRRLRLRLRLRRLLSSLSSSRRLRLRLRLRLSLSSSSSSSSSSSSSRLRLLRLRLRLRLRLRLRLSLSSSLSLSLLSLRLSLRSLRSLRSLSLSLRSRLSLRSLRLSRSLLLRLRLRRRRSLSLSSLLSLSLSLSSLLSLSLLRLRSLLRSRLSLSSLLLLSSSSSSSSSSSSSSSSSSSSRLRLLRRLRLRLLRLRLRLRLRLSSSSLSLRLLRLSLSSLSLSLSLSLRLLRLSLLLSRSSSSSSSSSSSSSSSRLRLRLLRLRLSLSRSRSSSLSRLRLRLRSLSLSLSRLLSRLSLSLSLSLSSLSLSLLSLSRLLRLRLRLRLRLRLRLRLRLRLSLSRLRLSLLRRLSLLSLSLSLSLSLLSLSLSLRLRLRLRLRLRLRLRLRLRRLRSLSLSLSLSLSLSLSSLSSSSSLSLSSSLSLSLSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
Sie können die Slithers hier zeichnen (R und L sind gespiegelt, aber es hat keinen Einfluss auf die Gültigkeit)
SRRR
auf Millimeterpapier mit einem Quadrat pro Segment zeichnen, überlappt es sich und ist daher ungültig, belegt RRR
jedoch genau ein 2x2-Quadrat ohne Überlappungen (genau wie im klassischen Spiel)