Diese Herausforderung wurde durch die Programmierung eines Arduino-Mikrocontrollers inspiriert. Ich habe 6 LEDs und 6 Tasten mit verschiedenen Pins auf der Platine verbunden. Im Code ist jeder Taste und LED eine ID-Nummer (1-6) zugeordnet. PIN-Nummern (von 0-13), die den ID-Nummern entsprechen, werden mit einer switch
Anweisung gesucht . Nur zur Unterhaltung habe ich mich gefragt, ob diese switch
mit einer arithmetischen / anderen Funktion umgangen werden können, um zukünftige Codewartende zu schrecken.
Die Herausforderung
Geben Sie die Funktion (en) an, für die die ID-Nummer (Ganzzahl) als Parameter verwendet wird, und geben Sie die PIN-Nummer (Ganzzahl) für die 6 LEDs und / oder die 6 Tasten zurück, ohne bedingte Anweisungen (nein if
, nein switch
und ternär) zu verwenden.
Rückgabewerte für LEDs:
ID Pin
1 3
2 5
3 6
4 9
5 10
6 11
Rückgabewerte für Schaltflächen:
ID Pin
1 2
2 4
3 7
4 8
5 12
6 13
Bonus Herausforderung
Stellen Sie eine einzelne Funktion bereit, die eine ID-Nummer (Ganzzahl) und einen zweiten Parameter (beliebiger Typ) verwendet, die angeben, ob LED- oder Tastenstifte angefordert werden, und den entsprechenden Stift (Ganzzahl) zurückgibt.
Regeln
Dies ist keine Arduino-spezifische Herausforderung. Verwenden Sie eine beliebige Sprache und machen Sie , was Sie wollen.
Edit: Auf Anregung von Steveverril ist dies nun eine Code-Golf- Herausforderung.
Viel Glück!
(Wenn Sie noch lesen: Obwohl die Zuordnungen nach Programmierstandards offensichtlich absurd und willkürlich sind, basieren sie auf der Pinbelegung des Arduino Micro. Die Pins 0 und 1 sind für die serielle Kommunikation reserviert, die LEDs sind den 6 PWM-fähigen Pins mit der niedrigsten Nummer zugeordnet , Tasten sind den verbleibenden Pins zugeordnet)
1+(1==1)
?
if
, switch
und ternäre) sind tabu.