Mon chien aboie, mais je suis trop paresseux pour l'emmener faire une promenade. J'ai une idée! Je vais demander aux gens de Code Golf de le faire pour moi!
Votre défi est de simuler la promenade d'un chien. Voici les règles pour promener le chien:
- L'humain (
H
) commencera0,0
sur un plan de coordonnées (cartésien) et ira au hasard d'un espace soit vers le haut, vers la gauche, vers la droite ou vers le bas chaque seconde. - Le chien (
D
) commencera au même endroit et ira à zéro, un, deux ou trois espaces vers le haut, la gauche, la droite ou le bas toutes les secondes (au hasard, bien sûr). Le chien est moins prévisible et court parfois plus vite ou s'arrête complètement. - Le chien n'éloignera jamais plus d'une certaine quantité d'unités de l'humain (en distance euclidienne), qui est la longueur de la laisse (
L
). Par exemple, siL
c'est le cas6
, une position valide seraitH(0,0) D(4,4)
(puisque la distance est d'environ 5,65 unités), mais pasH(0,0) D(5,4)
(environ 6,4 unités).- Si, lorsque le chien bouge, il violerait l'exigence de distance en laisse, il doit aller le plus loin possible dans sa direction déterminée qui ne viole pas l'exigence de distance. Par exemple, si la position est
H(0,0) D(3,4)
et que le chien est décidé au hasard de se déplacer de 3 cases vers la droite, il iraD(4,4)
, car c'est le plus loin qu'il peut aller sans éloigner plus de 6 unités. (Notez que cela pourrait entraîner un mouvement de 0 espace, c'est-à-dire aucun mouvement du tout!)
- Si, lorsque le chien bouge, il violerait l'exigence de distance en laisse, il doit aller le plus loin possible dans sa direction déterminée qui ne viole pas l'exigence de distance. Par exemple, si la position est
- Règles diverses: l'humain se déplace en premier. L'humain ne doit pas dépasser la longueur de la laisse lors de ses déplacements. Si c'est le cas, il doit choisir une autre direction. "Aléatoire" signifie "avec une distribution uniforme et sans motifs".
L'entrée sera donnée dans ce format (peut être STDIN, paramètre de fonction, fichier, etc.):
"<amount of seconds the walk will last> <leash length>"
Par exemple:
300 6 // a 5 minute walk with a 6 yard leash
Vous devez donner une sortie dans ce format (peut être STDOUT, valeur de retour de fonction, fichier, etc.):
H(0,0) D(0,0)
H(0,1) D(2,0)
H(1,1) D(2,1)
H(1,0) D(2,-1)
...
(Le nombre de lignes produites sera seconds + 1
, car la H(0,0) D(0,0)
ligne ne compte pas.)
Il s'agit de code-golf , donc le code le plus court en octets gagnera!
Réponses:
GolfScript, 140 caractères
Exemple d'exécution (essayez en ligne ):
la source
CoffeeScript - Appel de fonction 324 +
Démo (en utilisant Leash 10):
Code:
Code long:
la source
Ruby,
189177Je peux peut-être laisser tomber un peu cela. Je n'aime pas
j
.Non golfé:
la source
Mathematica 285
Golfé
Exemple
UnGolfed
Il y a quelques commentaires dans le texte ci-dessous. J'ai également inclus une impression qui permet de suivre certains calculs.
Exemple
[Une partie de l'impression est illustrée pour donner une idée du fonctionnement du code. ]
la source