Remarque: Ceci est basé sur deux routes divergées dans un bois jaune (partie 2) , un défi précédent pour moi. En raison de la popularité de cette question et des deux routes divergeaient dans un bois jaune (partie 1) , je voulais en faire une troisième. Mais les 2 premiers étaient trop faciles (une réponse de 2 octets sur le premier, une réponse de 15 octets sur le second.) J'ai donc rendu quelque chose de plus complexe ...
L'inspiration
Ce défi est inspiré du célèbre poème de Robert Frost, The Road Not Taken :
Deux routes divergeaient dans un bois jaune,
Et désolé, je ne pouvais pas voyager les deux
Et être un voyageur, longtemps je me tenais
Et baissais les yeux autant que je pouvais
Vers où il se penchait dans le sous-bois;... 2 paragraphes coupés ...
Je vais le dire avec un soupir
Quelque part, des âges et des siècles à venir:
Deux routes ont divergé dans un bois, et je -
j'ai pris celle moins fréquentée,
Et cela a fait toute la différence.
Remarquez l'avant-dernière ligne I took the one less traveled by,
,.
La trame de fond
Vous avez été chargé d'aider un aventurier aveugle qui marche sur une route et qui a été inspiré par The Road Not Taken . L'aventurier s'approche d'une bifurcation sur la route et aimerait emprunter le chemin le moins fréquenté. Vous devez trouver où l'aventurier se trouve réellement et lui dire où vous tourner.
Le défi
Votre objectif est de trouver la route la moins fréquentée sur votre carte où la route bifurque. Votre carte est une chaîne contenant des sauts de ligne (ou \n
, si vous préférez) et a une largeur et une hauteur inconnues. Dans la carte, les routes sont composées des chiffres 0 à 9 , l'intersection est constituée de #
s. Vous devez trouver la route sur laquelle vous êtes actuellement et, parmi les autres routes, la route la plus fréquentée et la route la moins fréquentée pour votre aventurier aveugle. Les bois de votre carte sont représentés par un espace. Voici une carte simple:
2 2
1 0
#
2
2
Cette carte mesure 5 de large et 5 de haut. Remarquez comment la route bifurque en forme de Y. Le Y peut être orienté de n'importe quelle façon, vous devez donc être capable de comprendre une carte "tournée".
Ce que les #
moyens
Là où la carte se trouve, il y aura #
: Cela n'affecte le score d'aucun chemin.
Que signifient réellement les chiffres
Chaque chemin (une ligne de chiffres, peut avoir un coude) a un score. Le score d'un chemin est déterminé en additionnant ses chiffres, donc pour le premier exemple, le premier chemin (en haut à gauche, dans le sens des aiguilles d'une montre) a un score de 2 + 1 = 3, le second a 2 + 0 = 2 et le troisième a 2 + 2 = 4. Les routes peuvent contenir des numéros connectés en diagonale.
Trouver où vous êtes
Vous êtes sur le chemin avec le score le plus élevé. Les 2 autres chemins sont la route la plus fréquentée et la route la moins fréquentée. Vous devez trouver la route avec le score le plus bas .
Dire à votre voyageur où aller
Vous devez dire à votre voyageur d'aller "à gauche" ou "à droite". Gardez à l'esprit que les directions sont du point de vue de votre voyageur (il fait face à la fourche.)
Exemples de cartes
14
9#
04
Sortie: "à droite" (le voyageur est sur la 9
route, 0 + 4 <1 + 4
9
9
9
9
9
#
8 8
8 8
88 88
8 7
Sortie: "gauche" (le voyageur est sur la 99999
route, 8 + 8 + 8 + 8 + 8> 8 + 8 + 8 + 8 + 7
02468
#98765
13579
Sortie: "à droite" (le voyageur est sur la 98765
route, 0 + 2 + 4 + 6 + 8 <1 + 3 + 5 + 7 + 9)
4 2
4 2
#
4
4
2
2
Sortie: "à droite" (le voyageur est sur la 4422
route, 4 + 4> 2 + 2)
9
9
9
#
8 7
8 7
8 7
Sortie "gauche" (le voyageur est sur la 999
route, 8 + 8 + 8> 7 + 7 + 7
Choses à savoir:
- Les cartes seront remplies d'espaces pour que chaque ligne ait la même longueur.
- Vous devez sortir dans STDOUT / console / file la chaîne
left
ouright
, éventuellement suivi d'un retour à la ligne de fin. - Vous devez prendre l'entrée comme une chaîne contenant des sauts de ligne, des
\n
s ou un tableau / liste de lignes (chaque ligne est une chaîne). Où cette entrée est placée doit être une fonction, un argument de ligne de commande, un fichier ou STDIN une ligne à la fois ou similaire. Une variable n'est pas un périphérique d'entrée acceptable (sauf s'il s'agit d'un paramètre de fonction.) De même, les expressions de fonction en JS et dans d'autres langages doivent être affectées à une variable. - C'est le code-golf , donc la réponse la plus courte en octets l'emporte!
- Failles standard interdites
Ce que vous pouvez supposer
- Votre contribution sera valide. Rien de tel ne sera testé pour:
0 0 0 0 0 # 0 0
- Les scores des chemins ne seront jamais à égalité.
- L'entrée peut être de n'importe quelle longueur en largeur ou en hauteur, inférieure à la limite de chaîne de votre langue.
- Il y aura toujours au moins 1 espace entre les 2 chemins.
- Les chemins peuvent avoir des virages, des virages, etc. Ce sont des routes, pas des autoroutes.
Avez-vous des questions? Demandez-moi ci-dessous dans les commentaires et bon golf!
la source
#
toujours au centre horizontalement?Réponses:
D ,
348321312302 octetsNon golfé
Essayez-le en ligne!
la source
Python 2, 304 octets
Essayez-le en ligne
Ce programme déduit la direction des routes et la fait pivoter vers le haut pour utiliser ma solution de la partie 2 de ce défi.
la source