Tantangannya: Tetapkan x
sedemikian rupa sehingga ekspresi (x == x+2)
akan dievaluasi menjadi benar.
Saya menandai pertanyaan dengan C, tetapi jawaban dalam bahasa lain dapat diterima, asalkan mereka kreatif atau menyoroti aspek menarik dari bahasa tersebut.
Saya bermaksud menerima solusi C, tetapi bahasa lain bisa mendapatkan suara saya.
- Benar - berfungsi pada implementasi yang sesuai standar. Pengecualian - dengan asumsi implementasi tipe dasar, jika itu implementasi umum (mis. Asumsi
int
adalah komplemen 32bit 2) adalah OK. - Sederhana - harus berukuran kecil, gunakan fitur bahasa dasar.
- Menarik - saya akui itu subjektif. Saya punya beberapa contoh untuk apa yang saya anggap menarik, tetapi saya tidak ingin memberikan petunjuk. Pembaruan : Menghindari preprocessor itu menarik.
- Cepat - Jawaban bagus pertama akan diterima.
Setelah mendapatkan 60 jawaban (saya tidak pernah mengharapkan partisipasi semacam itu), mungkin baik untuk merangkumnya.
60 jawaban dibagi menjadi 7 kelompok, 3 di antaranya dapat diimplementasikan dalam C, sisanya dalam bahasa lain:
- Preprosesor C.
#define x 2|0
disarankan, tetapi ada banyak kemungkinan lain. - Titik mengambang. Sejumlah besar, tak terbatas
atau NaNsemuanya berfungsi. Aritmatika petunjuk. Pointer ke struct besar menyebabkan menambahkan 2 untuk membungkus.
Sisanya tidak bekerja dengan C:
- Operator overloading - A
+
yang tidak menambah atau==
yang selalu mengembalikan true. - Membuat
x
panggilan fungsi (beberapa bahasa mengizinkannya tanpax()
sintaks). Maka itu dapat mengembalikan sesuatu yang lain setiap kali. - Tipe data satu bit. Lalu
x == x+2 (mod 2)
. - Mengubah
2
- beberapa bahasa memungkinkan Anda menetapkannya0
.
add to Set
oleh perpustakaan standar, tanpa mendefinisikan ulang +
diri Anda, tidak masuk ke dalam 7 kategori ini, IMHO.
4. Quick
? Maksud Anda "Siapa yang tahu satu dan cukup beruntung untuk membaca pertanyaan ini terlebih dahulu"?