O nie! Niedługo mam test teoretyczny i jeszcze nie pamiętam skal! Pomóż mi zapamiętać moje główne skale, drukując następujące:
7♯ - C♯ D♯ E♯ F♯ G♯ A♯ B♯ C♯
6♯ - F♯ G♯ A♯ B C♯ D♯ E♯ F♯
5♯ - B C♯ D♯ E F♯ G♯ A♯ B
4♯ - E F♯ G♯ A B C♯ D♯ E
3♯ - A B C♯ D E F♯ G♯ A
2♯ - D E F♯ G A B C♯ D
1♯ - G A B C D E F♯ G
0 - C D E F G A B C
1♭ - F G A B♭ C D E F
2♭ - B♭ C D E♭ F G A B♭
3♭ - E♭ F G A♭ B♭ C D E♭
4♭ - A♭ B♭ C D♭ E♭ F G A♭
5♭ - D♭ E♭ F G♭ A♭ B♭ C D♭
6♭ - G♭ A♭ B♭ C♭ D♭ E♭ F G♭
7♭ - C♭ D♭ E♭ F♭ G♭ A♭ B♭ C♭
To jest golf golfowy, więc wygrywa najkrótszy kod. Możesz użyć #
i b
symboli zamiast ♯
i ♭
odpowiednio.
Edycja: Jeśli używasz ♯
i ♭
podpisujesz, musisz liczyć je tylko jako jeden bajt. Nie stanowi to nieuczciwej niedogodności.
code-golf
kolmogorov-complexity
music
ericw31415
źródło
źródło
♭
: tyle dla czcionek monospace w elementach koduOdpowiedzi:
Węgiel ,
6665 bajtów (jeśli używasz # ib)Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Wydrukuj znaki
0
do7
odwrócenia, a następnie odbij z nakładaniem. Listy zwykle drukowane są w dół, więc drukowanie w górę jest drukowane w prawo; na końcu obrócimy wszystko na miejsce.Rozpocznij nową linię i wydrukuj 7 mieszkań i 7 ostrych z odstępem między nimi.
Pozostaw pustą linię i wydrukuj 15
-
s.Weź cyfry od 0 do 7, podwój je, dodaj 1, a następnie zmniejsz modulo 7. Zapętl wynik.
Pozostaw pustą linię, a następnie weź 15-znakowy kawałek potrójnego ciągu nut, zaczynając od bieżącej wartości.
W następnym wierszu weź 15-znakowy kawałek mieszkań, spacji i ostrych narzędzi, każdy powtórzony 7 razy.
Po wydrukowaniu wszystkich notatek obróć wszystko na swoje miejsce.
źródło
♯
i♭
jako 1 bajt każdy zamiast 3.Rubinowy , 113 bajtów (
131 126 108105 z # ib)Wypróbuj online!
Rubin , 116 bajtów (108 z # ib)
Wypróbuj online!
Rubin , 126 bajtów (118 z # ib)
Wypróbuj online!
Ruby , 131 bajtów z # ib
Wypróbuj online!
źródło
♯
i♭
jako 1 bajt każdy zamiast 3.Python 3 , 135 bajtów
licząc ♯ i ♭ jako 1 bajt każdy
dzięki Zacharý za -6 bajtów.
Wypróbuj online!
źródło
GNU sed ,
148144 + 1 = 145 bajtów+1 bajt dla
-r
flagi.Wypróbuj online!
Wyjaśnienie
Najpierw wstaw szablon:
Zwróć uwagę na początkowe i końcowe spacje w pierwszym wierszu.
W pętli weź pierwszy numer z ostatniego wiersza i zastąp go częściami od drugiego do ostatniego w następujący sposób:
Jak widać, początkowa spacja (przechwytywanie 2) służy do zastąpienia znaku po
B
.Po
0
osiągnięciu zamień początkową spację nab
. Pętla jest kontynuowana, ale zamiast zamiany#
s na spacje, w każdej kolejnej linii spacja jest zastępowana przezb
.Wreszcie, zrobić trochę oczyszczanie: Usunąć czołową postać z każdej linii i zamienić
0b
z0
.źródło
Befunge,
134132130 bajtówWypróbuj online!
Wyjaśnienie
'0'+abs(row)
(numer skali), a następnie obliczamy,(row>0)+(row!=0)
aby sprawdzić, czy jest on naturalny, ostry lub płaski w tabeli#b
(zobaczysz to na początku trzeciego wiersza kodu).30 + row*4
. Ostatecznie będzie to mod 7, więc pomyśl o tym jako o powtarzającej się sekwencji 2,5,1,4,0,3,6 (tj. CFBEADG).'A' + n%7
. To, czy jest ostre czy płaskie, określa się, patrząci%7
na stół. Tabela początkowo jest prawdziwa, ponieważ pierwsza skala jest ostra.(offset+3)%7
.źródło
Bubblegum , 107 bajtów
Próg gumy do żucia
Wypróbuj online!
źródło
JavaScript (ES6),
130124 bajtówLub
128121 bajtów z wiodącym znakiem nowej linii.źródło
C,
212189186185 bajtówDzięki @Jonathan Frech za uratowanie bajtu!
Wypróbuj online!
Rozwinięty:
źródło
>-
może być+
.i=~!printf
zamiasti=-1,printf
i\b
zamiast\10
Galaretka ,
57 56 5554 bajtów-1 bajt dzięki EriktheOutgolfer (użyj
7ŒR
do zastąpienia-7r7
)Pełny program drukujący żądane wyjście (za pomocą
#
,b
).Wypróbuj online!
W jaki sposób?
źródło
CJam ,
10910694 bajtówWypróbuj online
źródło
Java 8, 255 bajtów
Licząc ♯ i ♭ jako 1 bajt każdy.
Wyjaśnienie:
Wypróbuj online.
źródło