Tantangan ini diinspirasi oleh pemrograman mikrokontroler Arduino. Saya memiliki 6 LED dan 6 tombol yang terhubung ke berbagai pin di papan tulis. Dalam kode tersebut, setiap tombol dan LED diberi nomor ID (1-6). Nomor pin (mulai dari 0-13) yang sesuai dengan nomor ID dilihat dengan menggunakan switchpernyataan. Murni untuk hiburan, saya bertanya-tanya apakah switches ini bisa dielakkan dengan fungsi aritmatika / lainnya hanya untuk menakuti pemelihara kode masa depan.
Tantangan
Berikan fungsi / fungsi yang mengambil nomor ID (integer) sebagai parameter dan mengembalikan nomor pin (integer) untuk 6 LED dan / atau 6 tombol, tanpa menggunakan pernyataan kondisional (tidak if, tidak, switchdan tidak ada ternary).
Nilai pengembalian untuk LED:
ID Pin
1 3
2 5
3 6
4 9
5 10
6 11
Kembalikan nilai untuk tombol:
ID Pin
1 2
2 4
3 7
4 8
5 12
6 13
Tantangan bonus
Berikan fungsi tunggal yang mengambil nomor ID (integer) dan parameter kedua (tipe apa pun) yang menunjukkan apakah pin LED atau tombol diminta, dan mengembalikan pin yang sesuai (integer).
Aturan
Ini bukan tantangan khusus Arduino. Gunakan bahasa apa pun , lakukan apa pun yang Anda inginkan.
Sunting: atas saran steveverril , ini sekarang menjadi tantangan kode golf .
Semoga berhasil!
(Jika Anda masih membaca: meskipun jelas absurd dan sewenang-wenang oleh standar pemrograman, pemetaan didasarkan pada pinout Arduino Micro. Pin 0 dan 1 dicadangkan untuk komunikasi serial, LED ditugaskan ke 6 pin berkemampuan PWM dengan jumlah terendah , tombol ditetapkan untuk pin yang tersisa)
1+(1==1)?
if, switchdan ternary) yang terlarang.
