Эта проблема была вдохновлена программированием микроконтроллера Arduino. У меня есть 6 светодиодов и 6 кнопок, подключенных к различным контактам на плате. В коде каждой кнопке и индикатору присваивается идентификационный номер (1-6). Номера выводов (в диапазоне 0-13), соответствующие номерам ID, ищутся с помощью 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
Бонус вызов
Обеспечьте единственную функцию, которая принимает идентификационный номер (целое число) и второй параметр (любой тип), указывающий, запрашиваются ли контакты светодиодов или кнопок, и возвращает соответствующий вывод (целое число).
правила
Это не специфичная для Arduino проблема. Используйте любой язык , делайте что хотите.
Изменить: по предложению steveverril , это теперь вызов кода гольф .
Удачи!
(Если вы все еще читаете: хотя это явно абсурдно и произвольно по стандартам программирования, сопоставления основаны на распиновке Arduino Micro. Выводы 0 и 1 зарезервированы для последовательной связи, светодиоды назначены на 6 выводов с наименьшим номером, способных к ШИМ. кнопки назначены оставшимся контактам)
1+(1==1)
?