Inspiré par cette question un peu plus tôt dans la journée , j'aimerais voir comment différents langages de programmation peuvent transformer un pavé numérique en probabilités. Généralement, les jeux basés sur des tuiles vous permettront d'utiliser un pavé numérique pour vous déplacer dans n'importe quelle direction en fonction de l'emplacement actuel de votre personnage. Lorsque Math.random() * 8
je crée une IA pour ces jeux, ce n'est pas suffisant, j'ai donc dû faire preuve d'un peu de créativité pour donner au mouvement un aspect et une sensation quelque peu naturels.
Un pavé numérique est défini comme tel:
7 | 8 | 9
- - - - -
4 | x | 6
- - - - -
1 | 2 | 3
Veuillez noter que 5 est un nombre invalide, car vous ne pouvez pas passer à vous-même.
Tous les exemples utiliseront ces probabilités: [50, 40, 30, 20, 10]
Si je voulais générer des probabilités 8
, cela ressemblerait à ceci:
40 | 50 | 40
-- | -- | --
30 | xx | 30
-- | -- | --
20 | 10 | 20
La sortie serait [20, 10, 20, 30, 30, 40, 50, 40]
(avec 5 omis) ou [20, 10, 20, 30, null, 30, 40, 50, 40]
(avec 5 présents)
Si je voulais les générer 1
, ça ressemblerait à ça:
30 | 20 | 10
-- | -- | --
40 | xx | 20
-- | -- | --
50 | 40 | 30
La sortie serait [50, 40, 30, 40, 20, 30, 20, 10]
(avec 5 omis) ou [50, 40, 30, 40, null, 20, 30, 20, 10]
(avec 5 présents)
Vous pouvez écrire un programme complet qui prend l'entrée de n'importe quelle manière habituelle (ligne de commande, stdin) et imprime la sortie, ou vous pouvez écrire une fonction avec un argument numérique, qui imprime ou renvoie la sortie. Votre programme ou fonction doit accepter un numéro - la position à générer autour. Vous devez utiliser ces probabilités: [50, 40, 30, 20, 10]
(elles n'ont pas besoin d'être codées en dur).
Le code le plus court en octets gagne. Les failles standard ne sont pas autorisées. Les réponses publiées dans le fil lié ne sont pas autorisées. Les espaces de fin ou de début sont autorisés. Vous pouvez considérer la position 4
comme absente ou vide, selon vos préférences. Je ne suis pas trop pointilleux sur le format de sortie - imprimez-le sous forme de chaînes séparées par des virgules ou sous forme de tableau.
(Ceci est ma première question, allez-y doucement avec moi!)
Python - 115
a
est un tableau avec les valeurs dans l'ordre autour du pavé numérique (dans le sens inverse des aiguilles d'une montre à partir de 1) etb
mappe les nombres sur le pavé numérique aux positions autour de celui-ci. En fonction du nombre d'espaces autour du pavé numérique pour le numéro d'entrée (déterminé à l'aideb
), il crée un tableau avec autant d'éléments déplacés de l'avanta
vers la fin, puisb
réutilise pour réorganiser les éléments afin qu'ils correspondent aux numéros du pavé numérique.la source
/10
puis en mettant un*10
dans votre boucle.(a[c:]+a[:c])[e]
même chosea[(c+e)%8]
oua[c+e-8]
? Et puis, le branchementc
simplifie l'expression.Pyth - 38 octets
Utilise un peu la même technique que la réponse Python sauf avec la compression de base pour les deux tableaux.
Essayez-le ici en ligne .
la source
Java, 190
String v
contient les probabilités (divisées par 10) dans le sens inverse des aiguilles d'une montre, l'entrée = 1 étant la valeur par défaut 50.int[]i
traduit l'entrée en un index en v. Par exemple,v.charAt(i[1])
is5
. Les entrées 0 et 5 ne sont pas valides, donc i [0] et i [5] ont une valeur d'espace réservé de 8 qui est l'indice de '\ 0' à la fin de v.Je fais pivoter les nombres de v vers la droite de la valeur i [n], puis j'imprime les probabilités sous forme de chaînes séparées par des virgules.
la source