La scène est:
Peter est au gymnase avec son copain Brian quand Brian a soudainement grand besoin de son inhalateur. Brian parvient à dire à Peter le code de sa serrure à combinaison avant qu'il ne s'effondre sur le sol.
Au moment où Peter arrive dans le casier de Brian et voit ce que l'indicateur pointe, Stewie lui tend une embuscade et lui vaporise une pleine bouteille de gaz poivré sur le visage, aveuglant ainsi Peter.
Peter doit maintenant essayer d'ouvrir la serrure sans la regarder. Il commence à tourner le cadran vers la droite, en comptant les chiffres pendant qu'il les passe. Puis, au bon numéro, il commence à tourner le cadran vers la gauche, toujours en comptant, et enfin le tourne vers la droite jusqu'à ce que la serrure s'ouvre.
Le défi:
Écrivez une fonction / un programme qui prend deux entrées, la combinaison de Brian et la position de l'indicateur. Affiche les nombres que Peter doit compter.
Règles:
- La combinaison et la position de l'indicateur doivent être des arguments distincts.
- L'entrée peut être soit à partir de l'invite de commande, soit sous forme d'arguments de fonction.
- La sortie doit être imprimée à l'écran / autrement affichée (pas dans un fichier)
- Supposons que la position de départ n'est pas la même que le premier nombre et que les trois nombres de la combinaison sont uniques
- C'est la serrure montrée dans l'image ci-dessous, avec des nombres possibles: 0-39.
Instructions:
Pour ouvrir le verrou ci-dessous, vous devez suivre un ensemble d'instructions:
- Vous devez connaître votre code. Supposons que ce soit (38, 16, 22) pour l'instant.
- Tournez le cadran 3 fois vers la droite (en passant trois fois le numéro de départ), puis arrêtez-vous lorsque le premier numéro (38) s'aligne avec l'indicateur
- Tournez le cadran d'un tour complet vers la gauche, en passant le premier chiffre, et arrêtez-vous lorsque le deuxième chiffre (16) s'aligne avec l'indicateur.
- Tournez la molette vers la droite et arrêtez-vous lorsque le troisième numéro (22) s'aligne avec l'indicateur
- Tirez le verrou vers le bas
Exemple:
Input
38 16 22
33
Output
33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 39 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22
Les règles de golf à code standard s'appliquent.
Les solutions publiées plus tard peuvent toujours gagner si elles sont plus courtes que la réponse de Dennis.
function combination(code){alert("Help! Someone open this locker, the combination is "+code+"!")}
Réponses:
CJam,
5239 octetsEssayez-le en ligne dans l' interpréteur CJam .
Comment ça fonctionne
la source
Groovy,
189175 octetsSuppose que l'indicateur est passé en arg0 et le combo est passé en arg1, arg2 et arg3 sur la ligne de commande ...
la source
Perl 5 , 129 + 1 (-a) = 130 octets
Essayez-le en ligne!
Comment?
la source
Python 2, 262 octets
Ça fait si longtemps. Mais il se passe également beaucoup de choses.
Essayez-le en ligne!
Je pense que je peux mieux concaténer certaines parties dans ma dernière ligne, mais je suis encore nouveau dans le golf de code et je ne sais pas comment aborder cette combinaison de liste de manière courte.
Des idées pour améliorer cela?
la source
Haskell ,
135112 octetsEssayez-le en ligne!
23 octets enregistrés grâce à Laikoni
la source
l s t=
en déclarant un opérateur infixe à las#t=
place. Il travaille également pour plus de deux arguments:(a%b)c s=
.s+1
.