Comments on The Camelot Wheel
Parent
The Camelot Wheel
+3
−0
Given a musical key, output its number and letter on the Camelot Wheel (shown below).
Input
A musical key as a string, as shown on the wheel. The words "Sharp" and "Flat" may be replaced with symbols (such as "#" and "b") if you wish.
Output
The number and letter, either as a string, tuple, or array.
Examples:
Input->Output
"E Major" -> "12B"
"F-Sharp Minor" -> "11A"
"Bb Minor" -> "3A"
This is code-golf.
Post
+3
−0
Python 3, 101, 98, 94 bytes
First answer!
lambda s:f"{(('FCGDAEB'.index(s[0])-~-ord(s[5])*('-'in s)-3*('i'in s)-6)%12)+1}"+'BA'['i'in s]
Readable version:
def f(s):
n="FCGDAEB".index(s[0])-6
if '-' in s:
n -= ord(s[5]-1)
if 'i' in s:
n -= 3
return f"{(n%12)+1}"+'BA'['i'in s]
Python 3.9, 95, 91 bytes:
lambda s:f"{(('FCGDAEB'.index(s[0])-~-ord(s[5])*('-'in s)-3*(m:='i'in s)-6)%12)+1}"+'BA'[m]
Isn't the walrus operator great?
1 comment thread