Seorang Raja, 1000 Botol Anggur, 10 Tahanan dan Racun

Pembaharuan Oktober 11, 2015: Penambahan solusi.


Saya sedang mengerjakan sebuah teka – teki. Teka – teki ini menarik dan menurut saya layak untuk di-share. Teka – tekinya sebagai berikut:

Seorang raja dari sebuah kerajaan kecil mengundang 1000 senator untuk datang ke pesta tahunan di kerajaannya. Masing – masing senator membawa satu buah botol anggur untuk dihadiahkan kepada sang raja.

Ternyata satu dari senator tersebut berniat untuk membunuh sang raja dengan mencampurkan racun mematikan ke dalam anggur yang ia bawa. Pihak kerajaan mengetahui hal ini, tetapi mereka tidak mengetahui botol mana yang mengandung racun dan siapa yang membawanya karena memang racun itu tidak bisa dibedakan lagi ketika sudah dicampurkan. Satu – satunya cara yang bisa dilakukan adalah dengan mencoba anggur itu satu per satu.

Pada saat yang sama, sang raja memiliki 10 orang tahanan yang akan dihukum. Sang raja kemudian memutuskan menggunakan kesepuluh orang tahanan itu sebagai tester untuk menemukan botol anggur mana yang mengandung racun. Racun tersebut sangat mematikan tetapi efeknya baru diketahui 24 jam setelah meminumnya. Sedangkan acara pesta harus tetap dilaksanakan hari esoknya. Sehingga otomatis sang raja hanya memiliki satu kali kesempatan untuk mencobakan seluruh botol anggur tersebut kepada 10 orang tahanan yang ia miliki.

Bagaimana cara sang raja mencobakan botol anggur tersebut kepada 10 orang tahanan sehingga dalam waktu 24 jam ia bisa memastikan botol mana yang mengandung racun?

Teka – teki di atas diterjemahkan dari sumber.


Solusi

Solusi dari teka – teki ini sebenarnya sangat sederhana. Dengan memanfaatkan representasi bilangan biner. Katakanlah tahanan ke-1 hingga ke-10 merepresentasikan masing – masing satu digit bilangan biner. Maka kita akan mendapatkan 10 digit bilangan biner yang mampu merepresentasikan bilangan desimal dari 0 – 1023 (0 jika semua digit biner bernilai 0, dan 1023 jika semua digit biner bernilai 1). Lebih dari cukup untuk merepresentasikan 1000 kombinasi botol anggur.

Kita tahu cara mengkonversi bilangan desimal ke biner. Jadi kita tinggal mengikuti aturan tersebut untuk mendistribusikan botol anggur nomor 1 – 1000 kesepuluh tahanan. Contoh, botol nomor 1 dicobakan ke tahanan nomor 1 (biner: 0000000001). Botol nomor 10 dicobakan ke tahanan nomor 4 dan nomor 2 (0000001010), dst. Setelah 24 jam, kita akan melihat tahanan nomor berapa saja yang mati akibat racun. Tahanan yang mati tersebut menunjukkan digit biner 1 (yang masih hidup 0) dan jika kita konversi balik ke desimal akan menunjukkan nomor botol anggur mana yang mengandung racun.

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s