Цей виклик був натхненний програмуванням мікроконтролера Arduino. У мене на дошці є 6 світлодіодів та 6 кнопок, підключених до різних штифтів. У коді кожній кнопці та світлодіоду присвоюється ідентифікаційний номер (1-6). Номери шпильок (від 0-13), що відповідають ідентифікаційним номерам, шукаються за допомогою switch
оператора. Цілком для розваги мені було цікаво, чи можна ці switch
ес обходити арифметичною / іншою функцією просто для того, щоб жахнути майбутніх утримувачів коду.
Змагання
Надайте функцію / функції, які приймають ідентифікаційний номер (ціле число) як параметр та повертають штифтове число (ціле число) для 6 світлодіодів та / або 6 кнопок, не використовуючи умовні висловлювання (ні if
, ні switch
та не потрійні).
Повернені значення для світлодіодів:
ID Pin
1 3
2 5
3 6
4 9
5 10
6 11
Повернення значень для кнопок:
ID Pin
1 2
2 4
3 7
4 8
5 12
6 13
Бонусний виклик
Надайте єдину функцію, яка приймає ідентифікаційний номер (ціле число) та другий параметр (будь-якого типу), що вказує, чи потрібно запитувати світлодіодні або кнопкові шпильки, і повертає відповідний штифт (ціле число).
Правила
Це не специфічний для Ардуїно виклик. Використовуйте будь-яку мову , робіть все, що завгодно.
Редагувати: за пропозицією steveverril , це тепер завдання з гольфним кодом .
Удачі!
(Якщо ви все ще читаєте: хоч явно абсурдні та довільні за стандартами програмування, відображення базуються на чіткості Arduino Micro. Штифти 0 і 1 зарезервовані для послідовного зв'язку , кнопки призначені для інших шпильок)
1+(1==1)
?