Recherche de site Web

Jouez à un jeu de mathématiques amusant avec les commandes Linux


Jouez au jeu de chiffres du populaire jeu télévisé britannique « Countdown » à la maison.

Comme beaucoup de gens, j’ai exploré de nombreuses nouvelles émissions de télévision pendant la pandémie. J'ai récemment découvert un jeu télévisé britannique appelé Countdown, dans lequel les participants jouent à deux types de jeux : un jeu de mots, dans lequel ils tentent de former le mot le plus long à partir d'un fouillis de lettres. , et un jeu de nombres, dans lequel ils calculent un nombre cible à partir d'une sélection aléatoire de nombres. Parce que j'aime les mathématiques, je me suis retrouvé attiré par le jeu des nombres.

Le jeu de nombres peut être un ajout amusant à votre prochaine soirée de jeux en famille, c'est pourquoi je voulais en partager ma propre variante. Vous commencez avec une collection de nombres aléatoires, divisés en « petits » nombres de 1 à 10 et en « grands » nombres qui sont 15, 20, 25, et ainsi de suite jusqu'à 100. Vous choisissez n'importe quelle combinaison de six nombres parmi les plus grands et les plus petits. Nombres.

Ensuite, vous générez un nombre "cible" aléatoire entre 200 et 999. Utilisez ensuite des opérations arithmétiques simples avec vos six nombres pour essayer de calculer le nombre cible en utilisant chaque nombre "petit" et "grand" pas plus d'une fois. Vous obtenez le plus grand nombre de points si vous calculez exactement le nombre cible et moins de points si vous parvenez à vous rapprocher de 10 du nombre cible.

Par exemple, si vos nombres aléatoires étaient 75, 100, 2, 3, 4 et 1 et que votre nombre cible était 505, vous pourriez dire 2+3=5, 5×100. =500, 4+1=5 et 5+500=505. Ou plus directement : (2+3100 + 4 + 1=505.

Randomiser les listes sur la ligne de commande

J'ai trouvé que la meilleure façon de jouer à ce jeu à la maison est de tirer quatre "petits" nombres d'un groupe de 1 à 10 et deux "grands" nombres de multiples de cinq de 15 à 100. Vous pouvez utiliser la ligne de commande Linux. pour créer ces nombres aléatoires pour vous.

Commençons par les « petits » chiffres. Je veux qu'ils soient compris entre 1 et 10. Vous pouvez générer une séquence de nombres à l'aide de la commande Linux seq. Vous pouvez exécuter seq de différentes manières, mais la forme la plus simple consiste à fournir les numéros de début et de fin de la séquence. Pour générer une liste de 1 à 10, vous pouvez exécuter cette commande :

$ seq 1 10
1
2
3
4
5
6
7
8
9
10

Pour randomiser cette liste, vous pouvez utiliser la commande Linux shuf ("shuffle"). shuf rendra aléatoire l'ordre de tout ce que vous lui donnez, généralement un fichier. Par exemple, si vous envoyez la sortie de la commande seq à la commande shuf, vous recevrez un message aléatoire liste de nombres entre 1 et 10 :

$ seq 1 10 | shuf
3
6
8
10
7
4
5
2
1
9

Pour sélectionner seulement quatre nombres aléatoires dans une liste de 1 à 10, vous pouvez envoyer la sortie à la commande head, qui imprime les premières lignes de son entrée. Utilisez l'option -4 pour spécifier que head doit imprimer uniquement les quatre premières lignes :

$ seq 1 10 | shuf | head -4
6
1
8
4

Notez que cette liste est différente de l'exemple précédent car shuf générera un ordre aléatoire à chaque fois.

Vous pouvez maintenant passer à l’étape suivante pour générer la liste aléatoire de « grands » nombres. La première étape consiste à générer une liste de nombres possibles commençant à 15, en incrémentant de cinq, jusqu'à atteindre 100. Vous pouvez générer cette liste avec la commande Linux seq. Pour incrémenter chaque nombre de cinq, insérez une autre option pour la commande seq pour indiquer l'étape :

$ seq 15 5 100
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100

Et comme auparavant, vous pouvez randomiser cette liste et sélectionner deux des « grands » nombres :

$ seq 15 5 100 | shuf | head -2
75
40

Générer un nombre aléatoire avec Bash

Je suppose que vous pourriez utiliser une méthode similaire pour sélectionner le numéro cible du jeu entre 200 et 999. Mais la solution la plus simple pour générer une seule valeur aléatoire consiste à utiliser la variable RANDOM directement dans Bash. Lorsque vous référencez cette variable intégrée, Bash génère un grand nombre aléatoire. Pour mettre cela dans la plage de 200 à 999, vous devez d’abord mettre le nombre aléatoire dans la plage de 0 à 799, puis ajouter 200.

Pour placer un nombre aléatoire dans une plage spécifique commençant à 0, vous pouvez utiliser l'opération arithmétique modulo. Modulo calcule le reste après avoir divisé deux nombres. Si je commence avec 801 et divise par 800, le résultat est 1 avec un reste de 1 (le modulo est 1). Diviser 800 par 800 donne 1 avec un reste de 0 (le modulo est 0). Et diviser 799 par 800 donne 0 avec un reste de 799 (le modulo est 799).

Bash prend en charge l'expansion arithmétique avec la construction $ (( )). Entre les doubles parenthèses, Bash effectuera des opérations arithmétiques sur les valeurs que vous fournissez. Pour calculer le modulo de 801 divisé par 800, puis ajouter 200, vous taperez :

$ echo $(( 801 % 800 + 200 ))
201

Avec cette opération, vous pouvez calculer un nombre cible aléatoire compris entre 200 et 999 :

$ echo $(( RANDOM % 800 + 200 ))
673

Vous vous demandez peut-être pourquoi j'ai utilisé RANDOM au lieu de $RANDOM dans mon instruction Bash. Lors du développement arithmétique, Bash développera automatiquement toutes les variables situées entre doubles parenthèses. Vous n'avez pas besoin du $ sur la variable $RANDOM pour référencer la valeur de la variable car Bash le fera pour vous.

Jouer au jeu des chiffres

Rassemblons tout cela pour jouer au jeu des chiffres. Générez deux « grands » nombres aléatoires, quatre « petites » valeurs aléatoires et la valeur cible :

$ seq 15 5 100 | shuf | head -2
75
100
$ seq 1 10 | shuf | head -4
4
3
10
2
$ echo $(( RANDOM % 800 + 200 ))
868

Mes chiffres sont 75, 100, 4, 3, 10 et 2, et mon nombre cible est 868.

Je peux me rapprocher du nombre cible si j'effectue ces opérations arithmétiques en utilisant chacun des "petits" et "grands" nombres pas plus d'une fois :

10×75 = 750
750+100 = 850

and:

4×3 = 12
850+12 = 862
862+2 = 864

Ce n'est qu'à quatre heures, pas mal ! Mais j'ai trouvé cette façon de calculer le nombre exact en utilisant chaque nombre aléatoire pas plus d'une fois :

4×2 = 8
8×100 = 800

and:

75-10+3 = 68
800+68 = 868

Ou je pourrais effectuer ces calculs pour obtenir exactement le nombre cible. Cela utilise seulement cinq des six nombres aléatoires :

4×3 = 12
75+12 = 87

and:

87×10 = 870
870-2 = 868

Essayez le jeu de chiffres Compte à rebours et dites-nous si vous avez réussi dans les commentaires.

Articles connexes: