Berikut ini adalah pertanyaan dari fauziandi150 pada mata pelajaran TI untuk jenjang Sekolah Menengah Atas
B. player A thinks of a number from 1 to 100 C. Player B guesses a number
D. Player A responds with "too high" , "too low" , or "you win" E. Player B and A continue to guess and respond until B wins (or give up)
Tuliskan algoritma dari data di atas
Tlg bantuannya
Jawaban dan Penjelasan
Berikut ini adalah pilihan jawaban terbaik dari pertanyaan diatas.
Jawaban:
Deskripsi Persoalan
Game Hi-Lo is a number guessing game with simple rules,
a) There are two players, A and B.
b) Player A thinks of a number from 1 to 100.
c) Player B guesses a number.
d) Player A responds with “too high”, “too low”, or “you win”.
e) Players B and A continue to guess and respond until B wins (or gives up).
Ditanyakan:
Algoritma
Penyelesaian
Pada persoalan ini, kita dapat menganggap player A adalah komputer, sedangkan player B adalah user yang bermain. Oleh karena itu, algoritma yang dimaksud adalah algoritma pada sisi player A.
Kita juga dapat merancang algoritma gabungan, di mana player A dan player B dimainkan oleh komputer.
Dalam algoritma, akan digunakan 2 variabel, yaitu:
- a: bilangan yang ditetapkan oleh player A, dan
- b: bilangan tebakan dari player B.
Algoritma akan melibatkan looping yang diulang selama b ≠ a dan b ≠ 0. Dalam hal ini, b = 0 adalah kondisi di mana player B menyerah (give up).
Algoritma Player A (atau Komputer)
Notasi Deskriptif
1. Inisialisasi variabel a dengan sebuah bilangan acak dalam rentang 1 hingga 100.
2. Lakukan perulangan/looping:
- Baca masukan (input) bilangan ke dalam variabel b.
- Jika b > a, maka cetak “too high”.
Jika b < a, maka cetak “too low”.
Selain kedua kondisi di atas, artinya b = a, maka cetak “you win”.
selama b ≠ a dan b ≠ 0.
Pseudocode
DECLARE a, b AS INTEGER
a ← RANDOM(1, 100)
DO
READ(b)
IF b > a THEN
PRINT(“too high”)
ELSE IF b < a THEN
PRINT(“too low”)
ELSE
PRINT(“you win”)
WHILE (b != a AND b != 0)
_________________
Algoritma Gabungan
Kita dapat menggunakan sebuah variabel tambahan untuk menyimpan banyak maksimum dari percobaan tebak angka yang boleh dilakukan. Kita namakan variabel ini: max_tries.
Algoritma gabungan ini akan secara otomatis melakukan penebakan/pencarian bilangan sampai ditemukan, atau selama max_tries > 0.
Kita juga memerlukan dua buah variabel lagi, yaitu lowdanhigh, untuk menyimpan batas bawah atau batas atas dari rentang bilangan.
Notasi Deskriptif
1. Inisialisasi variabel a dengan sebuah bilangan acak dalam rentang 1 hingga 100.
2. Inisialisasi low dengan 1, dan high dengan 100.
3. Baca masukan (input) max_tries.
4. Selama max_tries > 0:
- Isi b dengan bilangan acak dalam rentang low hingga high.
- Kurangi max_tries dengan 1.
- Jika b > a, maka:
Cetak “too high”.
Ubah high menjadi bernilai sama dengan b.
Jika b < a, maka:
Cetak “too low”.
Ubah low menjadi bernilai sama dengan b.
Selain kedua kondisi di atas, artinya b = a, maka:
Cetak “Player B wins!”.
Keluar dari looping.
5. Jika max_tries = 0, maka
Cetak “Player B gives up”.
6. Cetak “The number is ”, a
Pseudocode
DECLARE a, b, low, high AS INTEGER
a ← RANDOM(1, 100)
low = 1
high = 100
READ(max_tries)
WHILE (max_tries > 0) DO
b ← RANDOM(low, high)
max_tries = max_tries – 1
IF b > a THEN
PRINT(“too high”)
high ← b – 1
ELSE IF b < a THEN
PRINT(“too low”)
low ← b + 1
ELSE
PRINT(“Player B wins!”)
BREAK
END IF
IF max_tries = 0 THEN
PRINT(“Player B gives up”)
END IF
PRINT(“The number is ”, a)
_________________
Berikut ini demonstrasi dari beberapa hasil eksekusi program yang mengimplementasikan algoritma gabungan di atas. Program saya tulis dengan bahasa pemrograman Python.
Hasil eksekusi 1
- Max tries: 10
Tries left: 10
Player B is picking a number from 1 to 100.
Player B's guess => 67.
=> too low
Tries left: 9
Player B is picking a number from 68 to 100.
Player B's guess => 97.
=> too high
Tries left: 8
Player B is picking a number from 68 to 96.
Player B's guess => 70.
=> too low
Tries left: 7
Player B is picking a number from 71 to 96.
Player B's guess => 74.
=> too low
Tries left: 6
Player B is picking a number from 75 to 96.
Player B's guess => 89.
=> too high
Tries left: 5
Player B is picking a number from 75 to 88.
Player B's guess => 88.
=> too high
Tries left: 4
Player B is picking a number from 75 to 87.
Player B's guess => 84.
=> too low
Tries left: 3
Player B is picking a number from 85 to 87.
Player B's guess => 86.
=> too high
Tries left: 2
Player B is picking a number from 85 to 85.
Player B's guess => 85.
Player B wins!
Player A's number was 85.
Hasil eksekusi 1
- Max tries: 5
Tries left: 5
Player B is picking a number from 1 to 100.
Player B's guess => 29.
=> too high
Tries left: 4
Player B is picking a number from 1 to 28.
Player B's guess => 15.
=> too high
Tries left: 3
Player B is picking a number from 1 to 14.
Player B's guess => 13.
=> too high
Tries left: 2
Player B is picking a number from 1 to 12.
Player B's guess => 4.
=> too low
Tries left: 1
Player B is picking a number from 5 to 12.
Player B's guess => 9.
=> too low
Player B gives up.
Player A's number is 11.
Semoga dengan pertanyaan yang sudah terjawab oleh henriyulianto dapat membantu memudahkan mengerjakan soal, tugas dan PR sekolah kalian.
Apabila terdapat kesalahan dalam mengerjakan soal, silahkan koreksi jawaban dengan mengirimkan email ke yomemimo.com melalui halaman Contact
Last Update: Mon, 28 Nov 22