Jako mnoho lidí jsem během pandemie prozkoumal spoustu nových televizních pořadů. Nedávno jsem objevil britskou herní show s názvem Countdown , kde soutěžící hrají dva typy her:a slova hra, kde se snaží vytvořit nejdelší slovo ze změti písmen a číslic hra, kde z náhodného výběru čísel vypočítají cílové číslo. Protože mě baví matematika, přistihla mě hra s čísly.
Hra s čísly může být zábavným doplňkem vaší příští rodinné herní noci, proto jsem se chtěl podělit o svou vlastní variaci. Začnete sbírkou náhodných čísel, rozdělených na „malá“ čísla od 1 do 10 a „velká“ čísla, která jsou 15, 20, 25 atd., až do 100. Vyberete libovolnou kombinaci šesti čísel z velkých i malých čísla.
Další zdroje pro Linux
- Cheat pro příkazy Linuxu
- Cheat sheet pro pokročilé příkazy systému Linux
- Bezplatný online kurz:Technický přehled RHEL
- Síťový cheat pro Linux
- Cheat sheet SELinux
- Cheat pro běžné příkazy pro Linux
- Co jsou kontejnery systému Linux?
- Naše nejnovější články o Linuxu
Dále vygenerujete náhodné „cílové“ číslo mezi 200 a 999. Poté pomocí jednoduchých aritmetických operací s vašimi šesti čísly zkuste vypočítat cílové číslo pomocí každého „malého“ a „velkého“ čísla ne více než jednou. Nejvyšší počet bodů získáte, pokud přesně vypočítáte cílové číslo, a méně bodů, pokud se dostanete do 10 od cílového počtu.
Pokud byla například vaše náhodná čísla 75, 100, 2, 3, 4 a 1 a vaše cílové číslo bylo 505, můžete říci 2+3=5 , 5×100=500 , 4+1=5 a 5+500=505 . Nebo přímo:(2 +3 )×100 + 4 + 1 =505 .
Náhodné uspořádání seznamů na příkazovém řádku
Zjistil jsem, že nejlepší způsob, jak hrát tuto hru doma, je vytáhnout čtyři „malá“ čísla ze skupiny 1 až 10 a dvě „velká“ čísla z násobků pěti od 15 do 100. Můžete použít příkazový řádek Linuxu vytvořit tato náhodná čísla.
Začněme „malými“ čísly. Chci, aby byly v rozsahu 1 až 10. Posloupnost čísel můžete vygenerovat pomocí Linux seq
příkaz. Můžete spustit seq
několik různých způsobů, ale nejjednodušší formou je poskytnout počáteční a koncová čísla sekvence. Chcete-li vygenerovat seznam od 1 do 10, můžete spustit tento příkaz:
$ seq 1 10
1
2
3
4
5
6
7
8
9
10
K náhodnému uspořádání tohoto seznamu můžete použít Linux shuf
příkaz ("zamíchat"). shuf
náhodně upraví pořadí čehokoli, co mu dáte, obvykle souboru. Pokud například odešlete výstup seq
příkaz shuf
obdržíte náhodný seznam čísel mezi 1 a 10:
$ seq 1 10 | shuf
3
6
8
10
7
4
5
2
1
9
Chcete-li vybrat pouze čtyři náhodná čísla ze seznamu od 1 do 10, můžete odeslat výstup do head
příkaz, který vypíše prvních několik řádků svého vstupu. Použijte -4
možnost specifikovat tuto head
by měl vytisknout pouze první čtyři řádky:
$ seq 1 10 | šuf | hlava -4
6
1
8
4
Všimněte si, že tento seznam se liší od předchozího příkladu, protože shuf
pokaždé vygeneruje náhodné pořadí.
Nyní můžete udělat další krok a vygenerovat náhodný seznam "velkých" čísel. Prvním krokem je vygenerování seznamu možných čísel začínajících na 15, postupně se zvyšujících o pět, dokud nedosáhnete 100. Tento seznam můžete vygenerovat pomocí Linux seq
příkaz. Chcete-li každé číslo zvýšit o pět, vložte další možnost pro seq
příkaz k označení kroku :
$ seq 15 5 100
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100A stejně jako dříve můžete tento seznam náhodně uspořádat a vybrat dvě z „velkých“ čísel:
$ seq 15 5 100 | šuf | hlava -2
75
40Vygenerování náhodného čísla pomocí Bash
Předpokládám, že byste mohli použít podobnou metodu k výběru cílového čísla hry z rozsahu 200 až 999. Nejjednodušším řešením pro vygenerování jedné náhodné hodnoty je však použít
RANDOM
proměnná přímo v Bash. Když odkazujete na tuto vestavěnou proměnnou, Bash generuje velké náhodné číslo. Chcete-li to zadat v rozsahu 200 až 999, musíte nejprve zadat náhodné číslo do rozsahu 0 až 799 a poté přidat 200.Chcete-li vložit náhodné číslo do určitého rozsahu začínajícího na 0, můžete použít modulo aritmetická operace. Modulo vypočítá zbytek po dělení dvou čísel. Pokud jsem začal s 801 a vydělil 800, výsledek je 1 se zbytkem 1 (modul je 1). Vydělením 800 800 získáme 1 se zbytkem 0 (modul je 0). A vydělením 799 800 dostaneme 0 se zbytkem 799 (modulo je 799).
Bash podporuje aritmetické rozšíření pomocí
$(( ))
postavit. Mezi dvojitými závorkami bude Bash provádět aritmetické operace s hodnotami, které zadáte. Chcete-li vypočítat modulo 801 děleno 800 a poté přidat 200, zadejte:$ echo $(( 801 % 800 + 200 ))
201Pomocí této operace můžete vypočítat náhodné cílové číslo mezi 200 a 999:
$ echo $(( NÁHODNĚ % 800 + 200 ))
673Možná se divíte, proč jsem použil
RANDOM
místo$RANDOM
v mém prohlášení Bash. Při aritmetickém rozšíření Bash automaticky rozšíří všechny proměnné v dvojitých závorkách. Nepotřebujete$
na$RANDOM
proměnnou odkazovat na hodnotu proměnné, protože Bash to udělá za vás.Hraní hry s čísly
Pojďme to všechno dát dohromady a zahrát si hru s čísly. Vygenerujte dvě náhodná „velká“ čísla, čtyři náhodné „malé“ hodnoty a cílovou hodnotu:
$ seq 15 5 100 | šuf | hlava -2
75
100
$ následující 1 10 | šuf | hlava -4
4
3
10
2
$ echo $(( NÁHODNÉ % 800 + 200 ))
868Moje čísla jsou 75 , 100 , 4 , 3 , 10 a 2 a mé cílové číslo je 868 .
Mohu se přiblížit cílovému číslu, pokud tyto aritmetické operace s každým z „malých“ a „velkých“ čísel neprovedu více než jednou:
10×75 =750
750+100 =850
a:
4×3 =12
850+12 =862
862+2 =864To jsou jen čtyři pryč – to není špatné! Ale našel jsem tento způsob, jak vypočítat přesné číslo pomocí každého náhodného čísla ne více než jednou:
4×2 =8
8×100 =800
a:
75-10+3 =68
800+68 =868Nebo bych mohl provést tyto výpočty, abyste přesně získali cílové číslo. To používá pouze pět ze šesti náhodných čísel:
4×3 =12
75+12 =87
a:
87×10 =870
870-2 =868Zadejte Odpočítávání zkuste hru s čísly a dejte nám vědět, jak se vám dařilo, v komentářích.
21 důvodů, proč si myslím, že by každý měl zkusit Linux 5 důvodů, proč správci systému milují systemdLinux