Mengutip pertanyaan ini pada SO (Spoiler alert!):
Pertanyaan ini telah diajukan dalam wawancara Oracle.
Bagaimana Anda membagi angka dengan 3 tanpa menggunakan operator *, /, +, -,%,?
Nomor tersebut dapat ditandatangani atau tidak ditandatangani.
Tugas ini dapat dipecahkan, tetapi lihat apakah Anda dapat menulis kode terpendek.
Aturan:
- Lakukan pembagian integer yang diperlukan (
/3
) - Jangan menggunakan operator berbasis non-teks
*
,/
,+
,-
, atau%
(atau setara mereka, seperti__div__
atauadd()
). Ini juga berlaku untuk operator yang menambah dan mengurangi, sepertii++
ataui--
. Penggunaan operator untuk penggabungan string dan pemformatan tidak masalah. Menggunakan karakter ini untuk operator yang berbeda, seperti-
operator unary untuk angka negatif, atau*
untuk mewakili pointer di C juga OK. - Nilai input dapat besar secara arbitrer (apa pun yang dapat ditangani sistem Anda), baik positif maupun negatif
- Input bisa di STDIN atau ARGV atau dimasukkan dengan cara lain
- Buat kode terpendek yang dapat Anda lakukan di atas