Introduction:
Bien que j'avais à l'origine une chanson néerlandaise dans ma tête, où les paroles étaient: " Doe 'n stapje naar voren, en' n stapje terug " (qui se traduisait par " Faites un petit pas en avant et un petit pas en arrière "), quand J'ai cherché les paroles complètes, j'ai réalisé qu'elles ne faisaient que des allers-retours, et jamais de côté.
Donc, à la place, j'utilise maintenant les paroles de Mr C The Slide Man alias DJ Casper - Cha-Cha Slide pour ce défi.
Si nous ignorons tout le reste et ne regardons que les mots "gauche", "droite", "arrière" et "hop" (j'ai compté "hop" comme avant), y compris les montants mentionnés, la chanson complète aura la liste suivante ( J'utilise ici les abréviations LRBH):
LBHRLLBHRLBHHRRLLLRLBHHHHRRLLLBHHHHHRLRLRLHRLLBHHLRLBHH
Voici les paroles complètes de la chanson dans un extrait de code JavaScript caché (pour économiser de l'espace), où les mouvements et les montants sont entourés de crochets bloqués:
Défi:
Passons maintenant au défi lui-même. Nous prenons une, deux ou trois entrées † . L'un d'eux est une liste d'entiers d'index (donc non négatifs pour 0 indexés; ou positifs pour 1 indexés). (Les autres entrées sont facultatives et expliquées dans les règles du défi.)
Chaque scénario de test commencera à une position {x=0, y=0}
.
Maintenant, utilisez la liste des paroles des mouvements et supprimez tous les mouvements aux indices donnés de la liste d'entrée. Ensuite, parcourez les mouvements (jusqu'au plus grand index du tableau d'entrée) et affichez la position dans laquelle vous vous retrouverez.
Les mouvements modifieront les coordonnées comme suit:
- R
: x+1
- L
: x-1
- H
: y+1
- B
:y-1
Règles du défi:
- La liste des déplacements est accessible comme vous le souhaitez. †: peut être une entrée supplémentaire; peut être dans un fichier séparé sur le disque à partir duquel vous lirez; peut être dans une variable de niveau classe à laquelle vous accédez. Il devra être sous la forme de
L
,R
,B
etH
bien (peut être une chaîne ou caractère liste / tableau), de sorte que vous ne pouvez pas enregistrer les mouvements liste que1
s et-1
s ou entiers. - La liste des mouvements donnée ci-dessus est codée en dur et sera toujours la même. (C'est aussi pourquoi il est bon de le mettre comme champ au niveau de la classe au lieu de le prendre comme entrée si cela aide le décompte d'octets de votre réponse.)
- La liste des entrées peut être à la fois indexée 0 ou indexée 1 (à vous de choisir)
- Nous ne «marchons» que les mouvements jusqu'à et en excluant le plus grand index de la liste.
- †: Vous êtes également autorisé à prendre ce dernier élément comme entrée entière séparée, au lieu du dernier élément du tableau d'entrée.
- La sortie des coordonnées x et y où nous nous trouvons peut être dans n'importe quel format raisonnable (tableau d'entiers contenant deux éléments, chaîne délimitée, imprimée sur STDOUT sur deux lignes séparées, etc.)
- Vous pouvez supposer que la liste d'entrée est triée du plus bas au plus élevé (ou du plus haut au plus bas si c'est ce que vous préférez, auquel cas le premier élément est la taille initiale de la liste des déplacements - s'il n'est pas pris comme entrée séparée). Et il ne contiendra pas non plus d'index dupliqués.
- Si le plus grand index de la liste d'entrée est plus grand que la liste des mouvements ci-dessus (55 mouvements sont dans la liste des mouvements ci-dessus), nous revenons au début de la liste (autant de fois que nécessaire en fonction du plus grand index de l'entrée).
- Vous êtes autorisé à produire à la
y,x
place dex,y
, mais veuillez le spécifier dans votre réponse si vous le faites.
Exemple:
Contribution: [0,4,8,10,13,14,27,34,42,43,44,50,53,56,59,60,64]
Voici les mouvements et les indices (indexés 0) les uns au-dessus des autres:
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
En supprimant les indices de la liste d'entrée, nous aurons la liste de mouvements suivante:
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
Maintenant, si nous marchons de la position {0, 0}
sur les mouvements restants, nous aurons les nouvelles coordonnées suivantes après chaque mouvement:
{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}
La sortie finale sera donc: {-6, 10}
Règles générales:
- C'est le code-golf , donc la réponse la plus courte en octets l'emporte.
Ne laissez pas les langues de golf de code vous décourager de publier des réponses avec des langues non-golfeur de code. Essayez de trouver une réponse aussi courte que possible pour «n'importe quel» langage de programmation. - Des règles standard s'appliquent à votre réponse, vous êtes donc autorisé à utiliser STDIN / STDOUT, des fonctions / méthodes avec les paramètres appropriés et des programmes complets de type retour. Ton appel.
- Les failles par défaut sont interdites.
- Si possible, veuillez ajouter un lien avec un test pour votre code.
- De plus, l'ajout d'une explication à votre réponse est fortement recommandé.
Cas de test:
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}