Einführung:
Obwohl ich ursprünglich ein niederländisches Lied im Kopf hatte, in dem die Texte lauten: " Doe 'n stapje naar voren, en' n stapje terug " (was übersetzt bedeutet " Mach einen kleinen Schritt vorwärts und einen kleinen Schritt zurück ") Ich suchte nach den vollständigen Texten und stellte fest, dass sie nur hin und her gingen und nie seitwärts.
Also benutze ich jetzt stattdessen den Text von Mr. C. The Slide Man, auch bekannt als DJ Casper - Cha-Cha Slide, für diese Herausforderung.
Wenn wir alles andere ignorieren und nur die Wörter "left", "right", "back" und "hop" (ich habe "hop" als vorwärts gezählt) einschließlich der genannten Beträge betrachten, enthält das vollständige Lied die folgende Liste ( Ich verwende hier die Abkürzungen LRBH):
LBHRLLBHRLBHHRRLLLRLBHHHHRRLLLBHHHHHRLRLRLHRLLBHHLRLBHH
Hier die vollständigen Songtexte in einem versteckbaren JavaScript-Code-Snippet (um Platz zu sparen), in dem die Züge und Beträge in sperrigen Klammern stehen:
Herausforderung:
Nun zur eigentlichen Herausforderung. Wir nehmen einen, zwei oder drei Eingänge † . Eine davon ist eine Liste von Index-Ganzzahlen (also entweder nicht negativ für 0-indexiert oder positiv für 1-indexiert). (Die anderen Eingaben sind optional und werden in den Herausforderungsregeln erläutert.)
Jeder Testfall startet an einer Position {x=0, y=0}
.
Verwenden Sie nun die Lyrics-Liste der Züge und entfernen Sie diese alle Moves an den angegebenen Indizes der Input-Liste. Gehen Sie dann über die Bewegungen (bis zum größten Index des Eingabe-Arrays) und geben Sie die Position aus, an der Sie landen werden.
Die Bewegungen ändern die Koordinaten wie folgt:
- R
: x+1
- L
: x-1
- H
: y+1
- B
:y-1
Herausforderungsregeln:
- Sie können auf die Zugliste zugreifen, wie Sie möchten. †: Kann eine zusätzliche Eingabe sein; Kann sich in einer separaten Datei auf der Festplatte befinden, von der Sie lesen werden. kann sich in einer Variablen auf Klassenebene befinden, auf die Sie zugreifen. Es wird in Form sein
L
,R
,B
undH
obwohl (kann eine Zeichenfolge oder Zeichenliste / Array), so kann man nicht speichern Sie die Bewegungen Liste als1
s und-1
s oder ganze Zahlen. - Die oben angegebene Zugliste ist fest codiert und bleibt immer gleich. (Aus diesem Grund ist es auch in Ordnung, es als Feld auf Klassenebene zu platzieren, anstatt es als Eingabe zu verwenden, wenn dies die Byteanzahl Ihrer Antwort verbessert.)
- Input-Liste kann sowohl 0-indiziert als auch 1-indiziert sein (bis zu Ihnen)
- Wir gehen nur die Schritte bis zum größten Index der Liste und schließen ihn aus.
- †: Sie können dieses letzte Element auch als getrennte Ganzzahleingabe anstelle des letzten Elements des Eingabe-Arrays verwenden.
- Die Ausgabe der x- und y-Koordinaten, bei denen wir landen, kann in einem beliebigen vernünftigen Format erfolgen (Integer-Array mit zwei Elementen, durch Trennzeichen getrennte Zeichenfolge, STDOUT-Ausdruck in zwei getrennten Zeilen usw.).
- Sie können davon ausgehen, dass die Eingabeliste vom niedrigsten zum höchsten sortiert ist (oder vom höchsten zum niedrigsten, wenn Sie dies bevorzugen. In diesem Fall ist das erste Element die Anfangsgröße der Verschiebeliste - falls nicht als separate Eingabe verwendet). Und es werden auch keine doppelten Indizes enthalten.
- Wenn der größte Index der Eingabeliste größer ist als die Liste der Züge (55 Züge sind in der Liste der Züge), werden wir erneut an den Anfang der Liste springen (je nach dem größten Index so oft wie nötig) der Eingabe).
- Sie können
y,x
statt ausgebenx,y
, aber geben Sie dies bitte in Ihrer Antwort an, wenn Sie dies tun.
Beispiel:
Eingang: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
Hier die Bewegungen und (0-indizierten) Indizes übereinander:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64
L, B, H, R, L, L, B, H, R, L, B, H, H, R, R, L, L, L, R, L, B, H, H, H, H, R, R, L, L, L, B, H, H, H, H, H, R, L, R, L, R, L, H, R, L, L, B, H, H, L, R, L, B, H, H, L, B, H, R, L, L, B, H, R, L
Wenn wir die Indizes der Eingabeliste entfernen, haben wir die folgende Bewegungsliste übrig:
1, 2, 3, 5, 6, 7, 9,11,12,15,16,17,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,35,36,37,38,39,40,41,45,46,47,48,49,51,52,54,55,57,58,61,62,63
B, H, R, L, B, H, L, H, H, L, L, L, R, L, B, H, H, H, H, R, R, L, L, B, H, H, H, H, R, L, R, L, R, L, L, B, H, H, L, L, B, H, L, H, R, B, H, R
Wenn wir nun von der Position {0, 0}
über die verbleibenden Züge gehen, haben wir nach jedem Zug die folgenden neuen Koordinaten:
{0,0};B,{0,-1};H,{0,0};R,{1,0};L,{0,0};B,{0,-1};H,{0,0};L,{-1,0};H,{-1,1};H,{-1,2};L,{-2,2};L,{-3,2};L,{-4,2};R,{-3,2};L,{-4,2};B,{-4,1};H,{-4,2};H,{-4,3};H,{-4,3};H,{-4,5};R,{-3,5};R,{-2,5};L,{-3,5};L,{-4,5};B,{-4,4};H,{-4,5};H,{-4,6};H,{-4,7};H,{-4,8};R,{-3,8};L,{-4,8};R,{-3,8};L,{-4,8};R,{-3,8};L,{-4,8};L,{-5,8};B,{-5,7};H,{-5,8};H,{-5,9};L,{-6,9};L,{-7,9};B,{-7,8};H,{-7,9};L,{-8,9};H,{-8,10};R,{-7,10};B,{-7,9};H,{-7,10};R,{-6,10}
Die endgültige Ausgabe lautet also: {-6, 10}
Allgemeine Regeln:
- Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
Lassen Sie sich von Code-Golf-Sprachen nicht davon abhalten, Antworten mit Nicht-Codegolf-Sprachen zu veröffentlichen. Versuchen Sie, für jede Programmiersprache eine möglichst kurze Antwort zu finden. - Für Ihre Antwort gelten Standardregeln. Daher dürfen Sie STDIN / STDOUT, Funktionen / Methoden mit den richtigen Parametern und vollständige Programme vom Rückgabetyp verwenden. Ihr Anruf.
- Standardlücken sind verboten.
- Fügen Sie nach Möglichkeit einen Link mit einem Test für Ihren Code hinzu.
- Es wird außerdem dringend empfohlen, eine Erklärung für Ihre Antwort hinzuzufügen.
Testfälle:
0-indexed input: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
1-indexed input: [1,5,9,11,14,15,28,35,43,44,45,51,54,57,60,61,65]
Output: {-6, 10}
0-indexed input: [55] (Note: There are 55 moves in the unmodified list)
1-indexed input: [56] (Note: There are 55 moves in the unmodified list)
Output: {-6, 11}
0-indexed input: [0,1,4,5,6,9,10,15,16,17,19,20,27,29,30,37,38,39,41,44,45,46,49,51,52]
1-indexed input: [1,2,5,6,7,10,11,16,17,18,20,21,28,30,31,38,39,40,42,45,46,47,50,52,53]
Output: {10, 16}
0-indexed input: [2,3,7,8,11,12,13,14,18,21,22,23,24,25,26,31,32,33,34,35,36,38,40,42,43,47,48,50,53]
1-indexed input: [3,4,8,9,12,13,14,15,19,22,23,24,25,26,27,32,33,34,35,36,37,39,41,43,44,48,49,51,54]
Output: {-18, -7}
0-indexed input: [0]
1-indexed input: [1]
Output: {0, 0}
0-indexed input: [4,6,7,11,12,13,15,17,20,28,31,36,40,51,59,66,73,74,80,89,92,112,113,114,116,120,122,125,129,134,136,140,145,156,161,162,165,169,171,175,176,178,187,191,200]
1-indexed input: [5,7,8,12,13,14,16,18,21,29,32,37,41,52,60,67,74,75,81,90,93,113,114,115,117,121,123,126,130,135,137,141,146,157,162,163,166,170,172,176,177,179,188,192,201]
Output: {-17, 37}
0-indexed input: [25,50,75,100,125,150,175,200,225,250]
1-indexed input: [26,51,76,101,126,151,176,201,226,251]
Output: {-28, 49}