Règles:
Dans ce jeu, vous commencez au sommet d'une grille rectangulaire de taille N x M composée de murs et d'espaces ouverts. L'entrée est N lignes de M caractères, où a .
spécifie un espace ouvert et a x
spécifie un mur. Votre programme doit afficher le plus petit nombre K de sorte qu'il existe un chemin du coin supérieur gauche au coin inférieur droit (pas de diagonales) qui traverse les murs K.
Par exemple, étant donné l'entrée:
..x..
..x..
xxxxx
..x..
..x..
votre programme devrait sortir 2
.
Autres exemples:
sortie 4
:
xxxxx
x.x.x
x.x.x
x..xx
sortie 0
:
.xxxxxxxx
.x...x...
.x.x.x.x.
.x.x...x.
...xxxxx.
sortie 6
:
xx
xx
xx
xx
xx
Petits morceaux supplémentaires:
Si cela vous facilite la vie, vous pouvez spécifier N et M comme paramètres de ligne de commande.
Crédit supplémentaire si vous pouvez demander à votre programme d'imprimer le chemin sous une forme ou une autre.
Réponses:
Rubis 1,9
(235)(225)(222)(214)Je ne sais pas si c'est plus court qu'un programme basé sur Dijkstra, mais j'ai pensé que j'essaierais une approche différente. Cela utilise l'expression régulière dans une boucle pour marquer chaque espace avec le nombre minimal de murs requis pour l'atteindre.
L'entrée est spécifiée sous forme de fichier sur la ligne de commande, c'est-à-dire
Non golfé:
la source
Perl 5,10 (164)
Tout à fait dans le même sens que la solution de migimaru, uniquement avec cette touche supplémentaire de Perl. 5.10 est nécessaire pour
\K
ins///
.la source
Python
406378360348418 caractèresDijkstra simplifié, car les mouvements avec poids sont sur le
x
terrain. Cela se fait en "vagues", première boucle avec recherche des.
champs touchant l'avant et les mettre sur le même poids, qu'une fois trouver lesx
champs touchant l'avant et les mettre sur le+1
poids. Répétez tant qu'il n'y a plus de champs non visités.À la fin, nous connaissons le poids pour chaque domaine.
L'entrée est spécifiée sous forme de fichier sur la ligne de commande:
Mise à jour: imprime le chemin.
la source
Version C ++ (
610607606584)Implémente l'algorithme de Dijkstra.
Non golfé:
la source