Seperti banyak orang, saya telah menjelajahi banyak acara TV baru selama pandemi. Saya baru-baru ini menemukan acara permainan Inggris yang disebut Countdown , di mana kontestan memainkan dua jenis permainan:a kata-kata permainan, di mana mereka mencoba membuat kata terpanjang dari campuran huruf, dan angka permainan, di mana mereka menghitung nomor target dari pilihan nomor acak. Karena saya menikmati matematika, saya menemukan diri saya tertarik pada permainan angka.
Permainan angka bisa menjadi tambahan yang menyenangkan untuk malam permainan keluarga Anda berikutnya, jadi saya ingin membagikan variasi saya sendiri. Anda mulai dengan kumpulan angka acak, dibagi menjadi angka "kecil" dari 1 hingga 10 dan angka "besar" yaitu 15, 20, 25, dan seterusnya hingga 100. Anda memilih kombinasi enam angka dari besar dan kecil angka.
Lebih banyak sumber daya Linux
- Lembar contekan perintah Linux
- Lembar contekan perintah Linux tingkat lanjut
- Kursus online gratis:Ikhtisar Teknis RHEL
- Lembar contekan jaringan Linux
- Lembar contekan SELinux
- Lembar contekan perintah umum Linux
- Apa itu container Linux?
- Artikel Linux terbaru kami
Selanjutnya, Anda membuat angka "target" acak antara 200 dan 999. Kemudian gunakan operasi aritmatika sederhana dengan enam angka Anda untuk mencoba menghitung angka target menggunakan setiap angka "kecil" dan "besar" tidak lebih dari satu kali. Anda mendapatkan jumlah poin tertinggi jika Anda menghitung jumlah target dengan tepat dan poin lebih sedikit jika Anda bisa mendapatkan dalam 10 dari jumlah target.
Misalnya, jika nomor acak Anda adalah 75, 100, 2, 3, 4, dan 1, dan nomor target Anda adalah 505, Anda dapat mengatakan 2+3=5 , 5×100=500 , 4+1=5 , dan 5+500=505 . Atau lebih langsung:(2 +3 )×100 + 4 + 1 =505 .
Acak daftar pada baris perintah
Saya telah menemukan cara terbaik untuk memainkan game ini di rumah adalah dengan menarik empat angka "kecil" dari kumpulan 1 hingga 10 dan dua angka "besar" dari kelipatan lima dari 15 hingga 100. Anda dapat menggunakan baris perintah Linux untuk membuat nomor acak ini untuk Anda.
Mari kita mulai dengan angka "kecil". Saya ingin ini berada dalam kisaran 1 hingga 10. Anda dapat membuat urutan angka menggunakan seq
Linux memerintah. Anda dapat menjalankan seq
beberapa cara berbeda, tetapi bentuk paling sederhana adalah memberikan angka awal dan akhir untuk urutan. Untuk membuat daftar dari 1 hingga 10, Anda dapat menjalankan perintah ini:
$ seq 1 10
1
2
3
4
5
6
7
8
9
10
Untuk mengacak daftar ini, Anda dapat menggunakan Linux shuf
("mengacak") perintah. shuf
akan mengacak urutan apa pun yang Anda berikan, biasanya file. Misalnya, jika Anda mengirim output dari seq
perintah ke shuf
perintah, Anda akan menerima daftar angka acak antara 1 dan 10:
$ urutan 1 10 | shuf
3
6
8
10
7
4
5
2
1
9
Untuk memilih hanya empat angka acak dari daftar 1 hingga 10, Anda dapat mengirim output ke head
perintah, yang mencetak beberapa baris pertama dari inputnya. Gunakan -4
opsi untuk menentukan head
harus mencetak hanya empat baris pertama:
$ urutan 1 10 | shuf | kepala -4
6
1
8
4
Perhatikan bahwa daftar ini berbeda dari contoh sebelumnya karena shuf
akan menghasilkan pesanan acak setiap saat.
Sekarang Anda dapat mengambil langkah berikutnya untuk menghasilkan daftar acak angka "besar". Langkah pertama adalah membuat daftar kemungkinan angka mulai dari 15, bertambah lima, hingga Anda mencapai 100. Anda dapat membuat daftar ini dengan seq
Linux memerintah. Untuk menambah setiap angka sebanyak lima, masukkan opsi lain untuk seq
perintah untuk menunjukkan langkah :
$ seq 15 5 100
15
20
25
30
35
40
45
50
55
60
65
70
75
80
85
90
95
100Dan seperti sebelumnya, Anda dapat mengacak daftar ini dan memilih dua dari nomor "besar":
$ urutan 15 5 100 | shuf | kepala -2
75
40Buat angka acak dengan Bash
Saya kira Anda bisa menggunakan metode serupa untuk memilih nomor target permainan dari kisaran 200 hingga 999. Tetapi solusi paling sederhana untuk menghasilkan nilai acak tunggal adalah dengan menggunakan
RANDOM
variabel langsung di Bash. Saat Anda mereferensikan variabel bawaan ini, Bash menghasilkan angka acak yang besar. Untuk menempatkan ini dalam kisaran 200 hingga 999, Anda harus memasukkan angka acak ke dalam kisaran 0 hingga 799 terlebih dahulu, lalu tambahkan 200.Untuk memasukkan angka acak ke dalam rentang tertentu mulai dari 0, Anda dapat menggunakan modulo operasi aritmatika. Modulo menghitung sisa setelah membagi dua bilangan. Jika saya mulai dengan 801 dan dibagi 800, hasilnya adalah 1 dengan sisa 1 (modulonya adalah 1). Membagi 800 dengan 800 menghasilkan 1 dengan sisa 0 (modulonya adalah 0). Dan membagi 799 dengan 800 menghasilkan 0 dengan sisa 799 (modulonya adalah 799).
Bash mendukung ekspansi aritmatika dengan
$(( ))
membangun. Di antara tanda kurung ganda, Bash akan melakukan operasi aritmatika pada nilai yang Anda berikan. Untuk menghitung modulo 801 dibagi 800, lalu dijumlahkan 200, ketikkan:$ echo $(( 801 % 800 + 200 ))
201Dengan operasi itu, Anda dapat menghitung angka target acak antara 200 dan 999:
$ echo $(( RANDOM % 800 + 200 ))
673Anda mungkin bertanya-tanya mengapa saya menggunakan
RANDOM
bukannya$RANDOM
dalam pernyataan Bash saya. Dalam ekspansi aritmatika, Bash akan secara otomatis memperluas variabel apa pun dalam tanda kurung ganda. Anda tidak memerlukan$
pada$RANDOM
variabel untuk mereferensikan nilai variabel karena Bash akan melakukannya untuk Anda.Memainkan permainan angka
Mari kita kumpulkan semua itu untuk memainkan permainan angka. Hasilkan dua angka "besar" acak, empat nilai "kecil" acak, dan nilai target:
$ urutan 15 5 100 | shuf | head -2
75
100
$ seq 1 10 | shuf | head -4
4
3
10
2
$ echo $(( RANDOM % 800 + 200 ))
868Nomor saya 75 , 100 , 4 , 3 , 10 , dan 2 , dan nomor target saya adalah 868 .
Saya dapat mendekati angka target jika saya melakukan operasi aritmatika ini menggunakan masing-masing angka "kecil" dan "besar" tidak lebih dari satu kali:
10×75 =750
750+100 =850
dan:
4×3 =12
850+12 =862
862+2 =864Itu hanya empat jauhnya—tidak buruk! Tapi saya menemukan cara ini untuk menghitung angka pasti menggunakan setiap angka acak tidak lebih dari sekali:
4×2 =8
8×100 =800
dan:
75-10+3 =68
800+68 =868Atau saya bisa melakukan ini perhitungan untuk mendapatkan jumlah target yang tepat. Ini hanya menggunakan lima dari enam angka acak:
4×3 =12
75+12 =87
dan:
87×10 =870
870-2 =868Berikan Hitung Mundur coba permainan angka, dan beri tahu kami seberapa baik Anda melakukannya di komentar.
Linux