Comme nous l'avons appris sur IBM PC AT, YouTube (voir la vidéo) , Wikipedia (voir l'article) et Sesame Street:
La lettre H
est la lettre la plus impitoyable de l'alphabet !
(Même lorsqu'il est en fait composé de deux éléments de la page de code 437. En fait, il est encore PLUS impitoyable de cette façon.)
Comme les extraterrestres, euh ... euh ... extraterrestres , les bêtes poursuivent sans relâche tous ceux qui oseraient s'approcher de leurs œufs. Il n'y a aucun raisonnement avec eux. Vous devez les écraser sinon pour périr.
Pour ce scénario, nous supposerons que vous êtes à votre dernière vie et que vous avez rencontré des bêtes simples sur un terrain sans œufs (comme dans la capture d'écran de Wikipedia). Vous n'avez pas de pavé numérique et ne pouvez que vous déplacer directement vers le haut / bas / gauche / droite ... mais les bêtes en ont apparemment un et peuvent se déplacer en diagonale à leur tour.
Le choix de déplacement d'une bête parmi ses options sera celui qui minimise la distance par rapport au joueur. Si les distances sont égales, alors le bris d'égalité est fait en favorisant gauche + haut sur droite + bas, mais voici la matrice de désambiguïsation pour être explicite à ce sujet ... le plus petit nombre à briser l'égalité:
1 3 4
2 H 5
6 8 7
Une bête ne dort jamais, mais ils sont heureusement un peu plus lents que le joueur. Ils se déplacent tous les deux tours (donnant au joueur une longueur d'avance en commençant leurs alternances au deuxième tour). Ils doivent se déplacer si un mouvement est possible, peu importe si cela l'éloigne du joueur.
Vous écrasez une bête si vous déplacez un train de murs mobiles où elle était assise dans un espace fermé. Ces bêtes simples valent 2 points par tête.
Contribution
Une paire d'entiers indiquant la taille d'une carte en colonnes puis en lignes.
Nombre de lignes de lignes d'entrée, chacune de la taille de la colonne ... contenant soit un mur plein (
#
), un mur mobile (~
), une bête (H
), le joueur (O
) ou juste un espace.Entrée qui sera soit U, D, L, R indiquant une tentative de déplacement du joueur ... soit W pour attendre. Notez que tenter de pousser un mur mobile qui est bloqué est une entrée légale, cela n'entraînera aucune action.
Production
aHHHH!
si les bêtes ont tué le joueur ... ou rien si le joueur a gagné sans bêtes restantesLe score
(Remarque: à des fins de débogage et / ou d'amusement, vous souhaiterez probablement pouvoir afficher l'état à chaque étape; mais c'est trop long pour publier ici.)
Clarifications
Les cartes sont garanties délimitées par des murs solides.
L'ordre de qui se déplace à son tour est important pour le résultat. Ainsi: Le joueur va toujours en premier, puis les bêtes reçoivent un ordre basé sur leur position initiale sur la carte si vous balayez l'écran de haut en bas de gauche à droite. (Une bête de la ligne 1 se déplace avant une bête de la ligne 2, et deux bêtes sur la même ligne, ce serait celle avec le numéro de colonne le plus bas qui se déplacerait avant l'autre)
Les bêtes en mouvement diagonal peuvent se déplacer dans n'importe quel espace diagonal adjacent ouvert, peu importe si cela nécessite une compression entre les murs.
Un joueur peut pousser n'importe quel nombre de murs mobiles dans une ligne à condition qu'il y ait un espace ou une bête à l'autre extrémité. Mais essayer de pousser un train de murs dans une bête qui n'est pas coincée entre les murs traite la bête comme un mur et ne permet pas le mouvement.
La décision de déplacement d'une bête pendant un tour est basée sur l'emplacement du joueur au début du tour. Son optimisation souhaitée de la "distance au joueur" passe par un calcul "à vol d'oiseau". Toute approximation qui donnerait le même résultat mesuré du centre de son carré au centre du carré du joueur est correcte.
Si une bête ne peut pas effectuer ce qui aurait été son premier mouvement préféré dans un tour parce qu'une bête de priorité supérieure a pris sa place, elle prendra son prochain meilleur choix au lieu de rester en place (si un mouvement est toujours possible).
Exemples de cas
Simple Crush
Contribution
5 3
#####
#O~H#
#####
R
Production
2
Matrice des préférences -> Décès
Contribution
5 5
#####
#O #
# ~ #
# H#
#####
WWDW
Production
aHHHH!
0
Matrice des préférences -> Win
Contribution
5 5
#####
#O #
# ~ #
# H#
#####
WRD
Production
2
En attendant le Reaper
Contribution
5 5
#####
#O #
# ~ #
# H#
#####
WWW
Production
aHHHH!
0
Défaite réussie dans le scénario Wikipédia
Contribution
40 23
########################################
#~ ~ ~~ ~ ~ ~~ ~ ~~ ~ ~ ~~ #
#~~ ~ ~~ ~ ~ ~~ ~ #
#~# ~~ ~~~~ ~ ~~~~ ~ ~~~ ~#
# ~ ~ ~ ~~ #~~ ~ #
#~~ ~~~ ~ ~ ~ ~ ~~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~~~ H ~ #~ #
# O~ ~ # ~~~ ~ ~ ~~ ~ ~ ~~ #
# ~ ~H~~ ~~ ~ # ~~ ~ #
# ~~ ~ ~~~ ~~ ~~~~ ~ ~#
#~ ~ ~~~ ~ ~ ~ ~ ~~ ~~#
# ~ # ~ ~~ ~~~ ~ ~ ~ # ~#
#~ ~ ~~ ~ ~ H ~~ ~~ ~ ~ ~~~ #
# ~ ~ ~ ~ ~ ~~~ ~ #
# ~~ ~ ~ ~~ ~ ~ ~ ~ ~ #
# ~~ ~ ~ ~ ~ ~~ #
#~ ~ # ~~~~ ~ ~~~H # ~ #
# ~ ~ ~ ~ ~ ~~ ~ #
# ~ ~ #~ ~ ~~ ~ ~ ~#
# ~~ ~ ~ ~~ ~ ~ #
# ~~~ ~ ~~ ~ ~ ~ ~ #
# ~ ~ ~ ~~ ~ ~ ~ #
########################################
RRRUWWWRRRURWWWWRDRRWWRDWWWWD
Production
8
Carte fournie par moi, mouvements et sortie par @bobbel, corroborée par moi-même et @Allbeert.
Critères gagnants
Je pense que c'est jouable au golf, donc j'irai avec des règles de golf de code à moins que les gens se plaignent.
Crédit supplémentaire
Implémentation Unicode jouable avec les caractères double largeur pour ressembler à l'image!
Réponses:
Perl 6: 741 caractères, 758 octets
La version golfée est au fond, car elle est essentiellement linoise. Ci-dessus, c'est ma version pré-golfée. Les deux sont interactifs (ils liront autant de commandes du fichier d'entrée que possible et passeront ensuite à utiliser STDIN pour obtenir des commandes). Ils essaient d'utiliser les caractères et les couleurs d'origine.
L'utilisation est comme
perl6 beast.p6 beast-input
:La version golfée:
Joyeuses Pâques!
la source
Java, 1843
Mon premier essai de résolution de ce puzzle avec Java. Je sais qu'il y a beaucoup d'améliorations pour le raccourcir. Mais au final ça marche pour l'instant.
Pour l'essayer, vous devez créer une classe
C
et coller le code.args[0]
(à proprement parlera[0]
) est pour la saisie. La méthode d'impression de la carte n'est pas incluse car elle n'est pas nécessaire pour la sortie du puzzle.Pour l'exécuter, essayez par exemple:
Sortie du dernier gros scénario un tour avant qu'une bête ne mange le joueur:
Sans espaces de ligne stupides: http://pastebin.com/raw.php?i=QhpxKcCT
Ainsi, la façon dont les joueurs se terminent après les mouvements
RRDDDRRRWW
, car sur le dernierW
ait, la bête à gauche ira à droite pour manger le joueur.Un autre exemple de la grande carte d'origine mais de mouvements différents:
http://pastebin.com/raw.php?i=nBWjC3PZ
Voir cette animation: http://youtu.be/0DIhEhjWd6s
Et le dernier exemple avec la carte originale et différents mouvements (selon les nouvelles règles de mouvement des bêtes):
http://pastebin.com/raw.php?i=NNmgzx7U
Voir sur youtube: http://youtu.be/jXPzL88TU2A
la source
C -
1004984917Ahh, la beauté de C. Suivant l'esprit de l'autre réponse, j'ai aussi essayé de formater la mienne :)
J'imagine qu'il y a encore quelques améliorations ici et là, mais c'était vraiment amusant d'écrire et de jouer au golf. Le nombre de caractères comprend tous les espaces nécessaires et les nouvelles lignes.
J'ai testé cela avec tous les exemples de cas et quelques autres, et cela semble fonctionner correctement. Si quelqu'un trouve une situation dans laquelle il ne répond pas correctement, faites-le moi savoir.
L'entrée provient de stdin et la sortie vers stdout. Il n'y a pas de vérification pour une entrée incorrecte. Et, il renvoie le score si le joueur est mangé, ou si le joueur est vivant après que tous les mouvements soient exécutés (même s'il y a encore
H
autour.Version non golfée:
la source
RRRUWWWRRRURWWWWRDRRWWRDWWWWD
sur la grande carte, vous obtenez 6 pendant qu'il en a 8. Il a fait une vidéo , vous pouvez peut-être imprimer chaque étape et rechercher toute anomalie ...