Wyzwanie to zostało zainspirowane zaprogramowaniem mikrokontrolera Arduino. Mam 6 diod LED i 6 przycisków podłączonych do różnych pinów na płycie. W kodzie każdemu przyciskowi i diodzie LED przypisany jest numer identyfikacyjny (1-6). Numery pinów (od 0–13) odpowiadające numerom identyfikacyjnym są wyszukiwane za pomocą switchinstrukcji. Czysto dla rozrywki zastanawiałem się, czy toswitch można je ominąć za pomocą funkcji arytmetycznej / innej, aby przerazić przyszłych opiekunów kodu.
Wyzwanie
Podaj funkcję / funkcje, które przyjmują numer identyfikacyjny (liczba całkowita) jako parametr i zwracają numer pinu (liczba całkowita) dla 6 diod LED i / lub 6 przycisków, bez użycia instrukcji warunkowych (nie if, nie switchi brak trójki).
Zwracane wartości dla diod LED:
ID Pin
1 3
2 5
3 6
4 9
5 10
6 11
Zwróć wartości dla przycisków:
ID Pin
1 2
2 4
3 7
4 8
5 12
6 13
Wyzwanie premiowe
Podaj jedną funkcję, która pobiera numer identyfikacyjny (liczba całkowita) i drugi parametr (dowolny typ) wskazujący, czy wymagane są styki diody LED lub przycisku, i zwraca odpowiedni pin (liczba całkowita).
Zasady
To nie Arduino specyficzne wyzwanie. Używaj dowolnego języka i rób co chcesz.
Edycja: na sugestię Steveverril , jest to teraz wyzwanie golfa kodu .
Powodzenia!
(Jeśli nadal czytasz: chociaż ewidentnie absurdalne i arbitralne według standardów programowania, mapowania są oparte na pinout Arduino Micro. Piny 0 i 1 są zarezerwowane do komunikacji szeregowej, diody LED są przypisane do 6 pinów o najniższym numerze PWM , przyciski są przypisane do pozostałych pinów)
1+(1==1)?
if, switchi trójskładnikowych) są poza granice.
