ปริศนา: กำหนด array ขนาด 2 ที่มีค่าหนึ่งเป็น 0 อีกตัวอาจเป็น 0 หรือ 1 ต้องทำให้ทั้งคู่เป็น 0 โดยห้ามใช้ loop, conditional, assignment โดยตรง, ใช้ได้แค่ bitwise complement (~)
วิธีแก้
ใช้ a[a[1]] = a[!a[1]] หรือ a[a[1]] = a[a[0]]
โค้ดตัวอย่าง
#include <iostream>
using namespace std;
void makeZero(int a[2]) {
a[a[1]] = a[!a[1]];
}
int main() {
int a[] = {1, 0};
makeZero(a);
cout << "arr[0] = " << a[0] << endl;
cout << "arr[1] = " << a[1];
return 0;
}
ผลลัพธ์
arr[0] = 0 arr[1] = 0