Advertisements

Spielen Sie ein lustiges Mathe-Spiel mit Linux-Befehlen

Wie viele Leute habe ich während der Pandemie viele neue Fernsehsendungen erkundet. Ich habe vor kurzem eine britische Spielshow namens . entdeckt Countdown, bei dem die Teilnehmer zwei Arten von Spielen spielen: a Wörter Spiel, bei dem sie versuchen, aus einem Wirrwarr von Buchstaben das längste Wort zu machen, und a Zahlen Spiel, bei dem sie aus einer zufälligen Auswahl von Zahlen eine Zielzahl berechnen. Weil mir Mathematik Spaß macht, habe ich mich zum Zahlenspiel hingezogen gefühlt.

Das Zahlenspiel kann eine lustige Ergänzung zu Ihrem nächsten Familienspielabend sein, daher wollte ich meine eigene Variante davon teilen. Sie beginnen mit einer Sammlung von Zufallszahlen, die in “kleine” Zahlen von 1 bis 10 und “große” Zahlen, die 15, 20, 25 usw Zahlen.

Weitere Linux-Ressourcen

Als nächstes generieren Sie eine zufällige “Ziel”-Zahl zwischen 200 und 999. Versuchen Sie dann mit einfachen arithmetischen Operationen mit Ihren sechs Zahlen, die Zielzahl aus jeder “kleinen” und “großen” Zahl nicht mehr als einmal zu berechnen. Sie erhalten die höchste Punktzahl, wenn Sie die Zielzahl genau berechnen, und weniger Punkte, wenn Sie innerhalb von 10 der Zielzahl liegen.

Wenn Ihre Zufallszahlen beispielsweise 75, 100, 2, 3, 4 und 1 waren und Ihre Zielzahl 505 wäre, könnten Sie sagen: 2+3=5, 5×100=500, 4+1=5, und 5+500=505. Oder direkter: (2+3100 + 4 + 1 = 505.

Listen auf der Befehlszeile zufällig anordnen

Ich habe festgestellt, dass der beste Weg, dieses Spiel zu Hause zu spielen, darin besteht, vier “kleine” Zahlen aus einem Pool von 1 bis 10 und zwei “große” Zahlen aus Vielfachen von fünf von 15 bis 100 zu ziehen. Sie können die Linux-Befehlszeile verwenden um diese Zufallszahlen für Sie zu erstellen.

Beginnen wir mit den “kleinen” Zahlen. Ich möchte, dass diese im Bereich von 1 bis 10 liegen. Sie können mit Linux eine Zahlenfolge generieren seq Befehl. Du kannst rennen seq verschiedene Möglichkeiten, aber die einfachste Form besteht darin, die Start- und Endnummern für die Sequenz anzugeben. Um eine Liste von 1 bis 10 zu generieren, können Sie diesen Befehl ausführen:

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

Um diese Liste zu randomisieren, können Sie das Linux shuf (“shuffle”) Befehl. shuf wird die Reihenfolge von allem, was Sie angeben, zufällig anordnen, normalerweise eine Datei. Wenn Sie beispielsweise die Ausgabe des seq Befehl an die shuf Befehl erhalten Sie eine zufällige Liste mit Zahlen zwischen 1 und 10:

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

Um nur vier Zufallszahlen aus einer Liste von 1 bis 10 auszuwählen, können Sie die Ausgabe an die head Befehl, der die ersten Zeilen seiner Eingabe ausgibt. Verwenden Sie die -4 Option, um das anzugeben head sollte nur die ersten vier Zeilen drucken:

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

Beachten Sie, dass sich diese Liste vom vorherigen Beispiel unterscheidet, da shuf erzeugt jedes Mal eine zufällige Reihenfolge.

Jetzt können Sie den nächsten Schritt unternehmen, um die zufällige Liste der “großen” Zahlen zu generieren. Der erste Schritt besteht darin, eine Liste möglicher Zahlen zu erstellen, beginnend bei 15, inkrementiert um fünf, bis Sie 100 erreichen. Sie können diese Liste mit dem Linux erstellen seq Befehl. Um jede Zahl um fünf zu erhöhen, fügen Sie eine weitere Option für die seq Befehl, um das anzuzeigen Schritt:

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

Und genau wie zuvor können Sie diese Liste randomisieren und zwei der “großen” Zahlen auswählen:

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

Generiere eine Zufallszahl mit Bash

Ich nehme an, Sie könnten eine ähnliche Methode verwenden, um die Zielzahl des Spiels aus dem Bereich 200 bis 999 auszuwählen. Aber die einfachste Lösung, um einen einzelnen Zufallswert zu generieren, ist die Verwendung der RANDOM direkt in der Bash variabel. Wenn Sie auf diese integrierte Variable verweisen, generiert Bash eine große Zufallszahl. Um dies in den Bereich von 200 bis 999 zu legen, müssen Sie zuerst die Zufallszahl in den Bereich 0 bis 799 legen und dann 200 hinzufügen.

Um eine Zufallszahl in einen bestimmten Bereich beginnend bei 0 zu setzen, können Sie die modulo Arithmetische Operation. Modulo berechnet die Rest nach der Division zweier Zahlen. Wenn ich mit 801 angefangen und durch 800 geteilt habe, ist das Ergebnis 1 mit einem Rest von 1 (der Modulo ist 1). Teilen von 800 durch 800 ergibt 1 mit einem Rest von 0 (der Modulo ist 0). Und wenn 799 durch 800 geteilt wird, ergibt sich 0 mit einem Rest von 799 (der Modulo ist 799).

Bash unterstützt die arithmetische Erweiterung mit dem $(( )) konstruieren. Zwischen den doppelten Klammern führt Bash arithmetische Operationen mit den von Ihnen angegebenen Werten durch. Um den Modulo von 801 dividiert durch 800 zu berechnen und dann 200 hinzuzufügen, geben Sie Folgendes ein:

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

Mit dieser Operation können Sie eine zufällige Zielzahl zwischen 200 und 999 berechnen:

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

Sie fragen sich vielleicht, warum ich verwendet habe RANDOM anstatt $RANDOM in meinem Bash-Statement. Bei der arithmetischen Erweiterung erweitert Bash automatisch alle Variablen innerhalb der doppelten Klammern. Du brauchst das nicht $ auf der $RANDOM Variable, um auf den Wert der Variablen zu verweisen, da Bash dies für Sie erledigt.

Das Zahlenspiel spielen

Lassen Sie uns all das zusammenstellen, um das Zahlenspiel zu spielen. Generieren Sie zwei zufällige “große” Zahlen, vier zufällige “kleine” Werte und den Zielwert:

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

Meine Nummern sind 75, 100, 4, 3, 10, und 2, und meine Zielnummer ist 868.

Ich kann der Zielzahl nahe kommen, wenn ich diese arithmetischen Operationen mit jeder der “kleinen” und “großen” Zahlen nicht mehr als einmal durchführe:

10×75 = 750
750+100 = 850

and:

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

Das sind nur noch vier – nicht schlecht! Aber ich habe diesen Weg gefunden, um die genaue Zahl mit jeder Zufallszahl nicht mehr als einmal zu berechnen:

4×2 = 8
8×100 = 800

and:

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

Oder ich könnte performen diese Berechnungen, um die Zielzahl genau zu erhalten. Dabei werden nur fünf der sechs Zufallszahlen verwendet:

4×3 = 12
75+12 = 87

and:

87×10 = 870
870-2 = 868

Gib die Countdown Probieren Sie das Zahlenspiel aus und lassen Sie uns in den Kommentaren wissen, wie gut Sie abgeschnitten haben.

Spielen Sie ein lustiges Mathe-Spiel mit Linux-Befehlen

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top