Où est la flèche pointée?
Dans ce défi, votre objectif est de suivre une flèche et de sortir le personnage vers lequel il pointe.
Exemples
Contribution:
d S------+ b
|
|
c +--->a
Sortie: a
Contribution:
S-----+---a->c
|
V
b
Sortie: b
La flèche ne pointe pas c
car elle est divisée par le a
, ce qui signifie que ce chemin ne mène jamais à une tête de flèche.
Contribution:
a S s
| |
V V
b c
Sortie: b
Contribution:
d s<+S+--V
||| Q
-++
Sortie: Q
Ce chemin commence au S
, descend, à droite, monte, à droite, puis pointe vers le Q. Notez que le chemin ne va pas directement de S
à +
.
Contribution:
d s-+ +-S +--+
+-->b | | |
| | +--+ |
+--+ A<----+
Sortie: A
Contribution:
S-----+
| +-^
+---+->B
+---^
Sortie: B
Parce que la ligne valide ne mènera jamais à un espace blanc. La seule ligne qui ne mène pas à un espace blanc mène à unB
Défi
L'entrée sera une chaîne de plusieurs lignes dans laquelle vous devez trouver le caractère pointé par la flèche. Il n'y aura qu'une seule flèche valide. La flèche valide pointera uniquement vers les caractères alphanumériques à l'exclusion S
. Une ligne ne se chevauchera jamais. par exemple-|-
S
(majuscule) représente le point de départ de la flèche.-
représente une ligne horizontale+
représente un éventuel changement d'axe. Une flèche valide ne commencera jamais par un+
.|
représente une ligne verticale> < V ^
l'un d'eux représente la tête de flèche. Ceux-ci ne se connecteront jamais à un+
.
Il n'y en aura qu'un S
dans la chaîne. L'entrée sera également complétée pour être un rectangle (pas nécessairement un carré).
S
." Devrait probablement être reformulé comme suit: «Ce ne sera jamais le premier caractère de la flèche». (Parce que l'Q
exemple a un+
adjacent à unS
.) "+
Représente un changement d'axe." pourrait être mieux "+
représente un changement possible d'axe." (Parce que l'B
exemple montre que vous pouvez vous déplacer+
sans changer de direction.) Sinon, beau défi. :)---^
-à- dire ? En d'autres termes, si dans l'exemple B, le B pourrait-il rester dans la première rangée?S>a
valide?Réponses:
JavaScript (ES6), 195
245 231 242 246 250Edit4 Maintenant, une seule fonction récursive. On ne peut probablement plus jouer au golf
Edit3 Test de ligne droite et test de pointe de flèche fusionnée dans la fonction T, les fonctions S et H supprimées.
Edit2 révisé et plus :( après cette cette clarification
Modifier de petites améliorations, couper des caractères ici et là, en attendant que CJammers intervienne
Testez l'exécution de l'extrait ci-dessous dans un navigateur compatible EcmaScript 6. (fonctionne sur Firefox. Chrome manque toujours l'opérateur de propagation
...
)la source
JavaScript 2016,
264 263 249 240 235234 octetsExécutez-le dans Firefox:
Dispersé dans certaines de mes notes:
la source
o = 'indexOf'
puis en faisantq[o](e)
quand vous voulez l'utiliser.for(;;)
boucles sont généralement les plus efficaces. Peut-être tort dans ce cas, mais essayez-le.a<-+S->b
Je pense que cela devrait donnerb
seulement, car une flèche valide ne commencera jamais par un +JavaScript 2016
(stiil une réponse valide et bonne, pas de problème avec elle)VBA Excel 2007, 894 octets
Eh bien, cela a commencé beaucoup mieux que ça s'est terminé. J'ai le sentiment que ma logique est défectueuse et j'aurais pu économiser une tonne d'octets si j'avais réorganisé une partie de ma logique, mais trop de temps a déjà été coulé dans cela = P
L'entrée pour cela est la colonne A de la feuille sur laquelle vous vous trouvez. Cette méthode utilise le fait qu'Excel a cette belle grille et décompose tout pour que vous puissiez voir ce qu'elle fait plus clairement.
Sub m()
prend simplement la copie des données collées de la colonne A et les décompose par le caractère. Si nous autorisons une entrée modifiée, si vous préformatez le labyrinthe en 1 caractère par cellule, vous pouvez économiser quelques octets en supprimantsub m()
Collez un labyrinthe dans Excel n'importe quelle taille jusqu'à 99 lignes par 27 caractères. Si vous voulez des labyrinthes plus grands, ses 2 octets supplémentaires seulement pour augmenter la portée à 999 lignes et colonnes ZZ
Peut également avoir besoin d'un appel des juges pour savoir si une feuille Excel est une «entrée standard» valide pour une réponse VBA. Sinon, il est quasiment impossible de donner à VBA Multi-line input VIA la fenêtre Immédiat
Pour exécuter ce code, collez-le simplement dans un module Excel, collez un labyrinthe dans A1 et exécutez
sub j()
la source
Python 3, 349 octets
Ugh, tant d'octets.
Essentiellement une recherche étendue. Bonus: cela se termine en fait gracieusement au lieu d'utiliser
exit()
, ce qui est de toute façon plus long.la source
input()
? C'est problématique pour moi.Perl 5
La solution s'est avérée plus longue que les autres solutions.
Même après l'avoir joué au golf. Voici donc la version non golfée.
Il imprime la carte afin que vous puissiez suivre le curseur.
Comment ça marche? À chaque étape, il place des coups possibles sur la pile. Et il continue de fonctionner jusqu'à ce qu'il ne reste plus rien sur la pile ou qu'une solution ne soit trouvée.
Il peut être facilement modifié pour trouver toutes les solutions et choisir la plus proche -> while (@_) {...
Tester
la source
Version PHP (les commentaires sont en français, désolé)
la source
Haskell, 268 octets
Félicitations aux Javascripters! A renoncé à la prime, mais voici ce que j'ai. Peut / pourrait ne pas fonctionner dans tous les cas, mais gère en fait les flèches commençant par et les pointes de flèches se connectant à
+
es, pour autant que je sache. N'a même pas inclus la recherche deS
, c'est(0,0)
pour l'instant.la source
Je souhaite voir une version APL dans l'esprit de https://www.youtube.com/watch?v=a9xAKttWgP4
Pour commencer, une solution de Julia vectorisée qui, je pense, peut être traduite 1: 0,3 en APL ou J. Elle prend une chaîne R représentant un flèche L x K. Il traduit d'abord la matrice de symboles en une matrice de petites matrices 3x3 dont les motifs sont les extensions binaires des lettres de la chaîne "\ 0 \ x18 \ fH \ t]] \ x1cI". Par exemple, '+' est codé comme remodeler ([0, chiffres (int (']'), 2,8)], 3,3)
Dans cette représentation, le chemin se compose de 2 et est inondé de 3 à partir du point de départ.
Tester,
Soit dit en passant, je pense que la clause "Un autre + peut être adjacent, mais la flèche devrait donner la priorité à un - ou | premier". défavorise une approche vectorielle. Quoi qu'il en soit, je l'ai simplement ignoré.
la source