About Me

Hai, saya Rosihan Ari Yuana. Saya sehari-hari adalah mengajar di Universitas Sebelas Maret.

Bidang riset saya tentang adaptive learning, computer aided learning, dan datascience

Selain itu, saya juga seorang penulis buku dan blogger.

More about me...

  • Home
  • /
  • Algoritma
  • /
  • Rahasia Dibalik Cara Pembuatan Program Tebak Angka

Rahasia Dibalik Cara Pembuatan Program Tebak Angka

Ketika kuliah perdana pemrograman komputer, saya tunjukkan ke mahasiswa sebuah program untuk menebak angka. Kegiatan ini saya lakukan untuk memotivasi mahasiswa supaya tertarik dengan pemrograman komputer. Seorang mahasiswa saya tunjuk sebagai sukarelawan dan saya suruh memilih dalam hati sebuah angka antara 0 s/d 511. Selanjutnya saya jalankan sebuah program dan mahasiswa tadi menjawab sederetan pertanyaan dalam bentuk Yes or No. Betapa kagetnya si mahasiswa ketika komputer yang saya jalankan mampu menebak angka yang dipilih mahasiswa tadi. Hal yang sama saya lakukan untuk beberapa mahasiswa yang lain.

Kebanyakan mahasiswa mengira bahwa komputer benar-benar mengetahui isi hati dan pikiran mereka, padahal sebetulnya tidak. Dalam hal ini algoritma dan logikalah yang berperan. Melalui serangkaian input dan proses serta perhitungan, komputer akan menghasilkan output berupa yang angka yang dipilih si mahasiswa.

Banyak di antara mahasiswa yang penasaran dengan logika dan algoritma yang saya gunakan untuk membuat program menebak angka tersebut. Dan… sekarang saatnya saya buka rahasianya.

OK.. untuk menyederhanakan permasalahan, saya akan persempit dulu scope bilangannya yaitu antara 0 s/d 7. Oya.. perlu diketahui bahwa permainan tebak angka ini hanya berlaku untuk bilangan antara 0 s/d 2^n-1, dengan n nya bilangan bulat positif. Lho kenapa harus seperti itu? Iya… karena n ini terkait dengan jumlah bit biner suatu bilangan. Misalkan kita pilih jumlah bit biner untuk permainan tebak angka ini adalah 3, maka dengan jumlah bit tersebut akan diperoleh bilangan-bilangan

0 = 000
1 = 001
2 = 010
3 = 011
4 = 100
5 = 101
6 = 110
7 = 111

Dengan demikian, apabila dipilih n = 3, maka permainan tebak angka ini hanya berlaku untuk bilangan 0 s/d 7 (8 bilangan) saja.

OK… setelah diketahui bilangan biner untuk masing-masing bilangan 0 s/d 7, selanjutnya mengelompokkan ke-delapan bilangan tersebut berdasarkan bit-bit yang bernilai 1. Misalkan untuk bilangan yang memiliki bit pertama bernilai 1 adalah 4, 5, 6, dan 7. Sedangkan untuk bit kedua bernilai 1 adalah 2, 3, 6, dan 7. Dan bit ketiga bernilai 1 adalah 1, 3, 5 dan 7.

Selanjutnya, untuk setiap kelompok tersebut ditampilkan bilangan-bilangannya dan diberikan pertanyaan kepada user. Berikut ini bentuk pertanyaannya (untuk kelompok bilangan dengan bit pertama bernilai 1):

Apakah bilangan yang Anda pilih ada diantara angka-angka berikut ini?

4 5 6 7

Ya atau Tidak?

Berikutnya pertanyaan untuk kelompok bit kedua yang bernilai 1.

Apakah bilangan yang Anda pilih ada diantara angka-angka berikut ini?

2 3 6 7

Ya atau Tidak?

Hal yang sama juga berlaku untuk pertanyaan pada kelompok bilangan dengan bit ketiga bernilai 1.

Lantas, bagaimana komputer bisa menebak angka yang dipilih oleh user? Caranya cukup mudah yaitu dengan merangkai nilai setiap bit yang diperoleh pada setiap pertanyaan. Sebagai contoh misalnya untuk pertanyaan pertama user menjawab ‘Ya’, maka bit pertama bernilai 1, pertanyaan kedua user menjawab ‘tidak’ (bit kedua bernilai 0) dan pertanyaan ketiga dijawab ‘Ya’ (bit ketiga bernilai 1), maka bilangan yang dipilih oleh user memiliki bit biner 101, dalam hal ini adalah bilangan 5.

Nah penjelasan di atas dapat digeneralisasi untuk n digit biner. Mau tahu source code program tebak angka versi Pascal? Silakan download source code di bawah ini


Download Source Code

Saya seorang dosen dan peneliti di Universitas Sebelas Maret. Bidang penelitian saya tentang: adaptive learning, datascience, dan computer aided learning. Selain itu saya juga seorang blogger, serta penulis buku tentang pemrograman, dan matematika.

Leave a Reply