이 작업은 간단합니다. 모든 음표 목록 (영어 음표 이름 사용)을 A ♭에서 G♯까지 출력하는 프로그램이나 기능을 작성하십시오.
한 글자로 구성된 이름이없는 모든 음표 (예 : 뮤지컬 키보드의 검은 색 음표)는 한 번의 음표로 한 번, 평지로 한 번, 이름이 두 번 인쇄되어야합니다. B♯ (C) 또는 F ♭ (E)와 같이 한 글자로 설명 할 수있는 날카 롭거나 납작한 음표는 출력하지 않아야합니다.
다음은 출력 예입니다.
Ab, A, A#, Bb, B, C, C#, Db, D, D#, Eb, E, F, F#, Gb, G, G#
명세서
-
프로그램이나 기능은 입력을 받아서는 안됩니다.
-
노트는 표준 I / O 규칙에 따라 허용되는 모든 순서와 순서로 인쇄 될 수 있습니다.
-
날카 롭고 편평한 유니 코드 기호 (♯ / ♭)는
b
및#
-
항상 그렇듯이 표준 허점 은 금지되어 있습니다.
-
이것이 code-golf 이므로 바이트 단위의 가장 작은 프로그램이 승리합니다.
답변
말레 볼제 , 482 (370) 353 바이트
R1 : 사이에 쉼표가 제거되었습니다 (챌린지에 필요하지 않음)
R2 : 몇 바이트를 면도
('<;_#!=6Z|{8xUwvt,PrqonKmk)"FhCUTdb?`+<;:[Z7YtVU2T|/g-O+i(gJrHc#EC~B{@zZxw:tt'r5Qo"!l/K-hUfe?bP``_Lo~[}|X2VCTR3Q+N`_^9+7Hji3ffdAc~w|u;]\wpon4VUSSQ.PONcb(JI^]#DCYX|@?>=<:u9NMRKo32MFj.C,Ae)>'<%:^"!~5:3WxwwuRts0q(Lnml)"Fhgfe"y?a`_zyxq7YXWlUj0RgfkjMb(JI^c\[Z~BAV?T=Rv987Mq44310FEi-,G@)>b&%#"8=6Z{{yyw/Sut1*)('Km$k(!Efe{zyx>`uz]r8ZXnm3TTih.PkNchg`&HFF[DY}Az
답변
CP-1610 어셈블리 ( Intellivision ), 31 DECLE 1 = 39 바이트
R4 에서 출력 포인터를 가져 와서 공백으로 구분하여 메모를 작성 하는 루틴 . 예제 코드에서는 화면에 직접 씁니다.
16 진 덤프 (루틴 만)
275 001 2BD 03C 048 1DB 2B8 012 044 2A9 2BA 108 078 201 003 262
261 263 2FA 008 37A 140 225 00B 089 22C 011 2B7 018 210 000
전체 소스
ROMW 10 ; use 10-bit ROM width
ORG $4800 ; map this program at $4800
;; ------------------------------------------------------------- ;;
;; test code ;;
;; ------------------------------------------------------------- ;;
4800 SDBD ; set up an interrupt service routine
4801 MVII #isr, R0 ; to do some minimal STIC initialization
4804 MVO R0, $100
4806 SWAP R0
4807 MVO R0, $101
4809 EIS ; enable interrupts
480A MVII #$200, R4 ; R4 = backtab pointer
480C CALL notes ; invoke our routine
480F DECR R7 ; loop forever
;; ------------------------------------------------------------- ;;
;; ISR ;;
;; ------------------------------------------------------------- ;;
isr PROC
4810 MVO R0, $0020 ; enable display
4812 CLRR R0
4813 MVO R0, $0030 ; no horizontal delay
4815 MVO R0, $0031 ; no vertical delay
4817 MVO R0, $0032 ; no border extension
4819 MVII #$D, R0
481B MVO R0, $0028 ; light-blue background
481D MVO R0, $002C ; light-blue border
481F JR R5 ; return from ISR
ENDP
;; ------------------------------------------------------------- ;;
;; routine ;;
;; ------------------------------------------------------------- ;;
notes PROC
4820 PSHR R5 ; save return address
4821 SDBD ; R5 = pointer to @@chr
4822 MVII #@@chr, R5
4825 CLRR R3 ; R3 = 0 (space)
4826 MVII #$12, R0 ; R0 = bitmask = $12
4828 SWAP R0, 2 ; extend it to $1212
4829 @@loop MVI@ R5, R1 ; R1 = next symbol
482A MVII #('A'-32)*8, R2 ; R2 = 'A' character
482C @@note SARC R0 ; right shift the bitmask
482D BC @@next ; skip this note if the carry is set
482F MVO@ R2, R4 ; append the note
4830 MVO@ R1, R4 ; append the symbol
4831 MVO@ R3, R4 ; append a space
4832 @@next ADDI #8, R2 ; advance to the next note
4834 CMPI #('H'-32)*8, R2 ; is it now a 'H'?
4836 BLT @@note ; if not, process the inner loop
4838 TSTR R1 ; was the symbol a space?
4839 BNEQ @@loop ; if not, process the outer loop
483B PULR R7 ; return
483C @@chr DECLE ('#'-32)*8 ; '#'
483D DECLE ('b'-32)*8 ; 'b'
483E DECLE 0 ; space
ENDP
산출
jzIntv의 스크린 샷
1. CP-1610 opcode는 ‘DECLE’로 알려진 10 비트 값으로 인코딩됩니다. 이 루틴의 길이는 $ 4820에서 $ 483E (포함)로 끝나는 31 DECLE입니다.
답변
파이썬 3 , 50 바이트
print(*map(''.join,zip(3*'ADGBCEF',7*' '+5*'#b')))
파이썬 2:48 바이트
이 코드는 추가 바이트없이 B # 및 Cb를 포함하도록 조정할 수 있습니다. 로 대체 5
하면 6
됩니다.
또한 일반 문자열을 출력하는 것보다 (최종적으로) 짧습니다.
파이썬 3 , 51 바이트
exit('Ab A A# Bb B C C# Db D D# Eb E F F# Gb G G#')
파이썬 2:50 바이트
답변
05AB1E , 16 15 13 바이트
Au…b #âŽ7×bûÏ
@maxb 덕분에 -2 바이트 .
단일 문자 메모에 후행 공백이있는 목록으로 출력합니다.
설명:
Au # Push the lowercase alphabet, and uppercase it
…b # # Push string "b #"
â # Take the cartesian product of both strings to create all possible pairs:
# ["Ab","A ","A#","Bb","B ","B#",...,"Zb","Z ","Z#"]
Ž7× # Push compressed integer 1999
b # Convert it to a binary string "11111001111"
û # Palindromize it to "111110011111110011111"
Ï # Only leave the notes in the list at the truthy values (1), (the trailing
# items beyond the length of this binary string are also discarded)
# (after which the result is output implicitly)
내이 05AB1E 팁을 참조하십시오 (섹션 얼마나 큰 정수를 압축하는 방법을? ) 이유를 이해하는 Ž7×
것입니다 1999
.
Ž7×
또는 ₄·<
동일한 바이트 수에 대해 (1000, 이중, 1 씩 감소) 일 수 있습니다.
답변
젤리 , 18? * 20 바이트
ØAḣ7µp⁾b#Żs6ḣ€4ẎḊ;W€
문자 목록을 반환하는 모나 딕 링크.
* (a) 문자 목록과 (b) 문자의 혼합 목록이 허용되는 경우 후행 W€
을 18로 제거하십시오 .
방법?
ØAḣ7µp⁾b#Żs6ḣ€4ẎḊ;W€ - Link: no argument
ØA - list of characters [A-Z]
ḣ7 - head to 7 "ABCDEFG"
µ - new monadic link (call that X)
⁾b# - list of characters "b#"
p - Cartesian product ["Ab","A#","Bb","B#","Cb","C#","Db","D#","Eb","E#","Fb","F#","Gb","G#"]
Ż - prepend a zero [0,"Ab","A#","Bb","B#","Cb","C#","Db","D#","Eb","E#","Fb","F#","Gb","G#"]
s6 - split into sixes [[0,"Ab","A#","Bb","B#","Cb"],["C#","Db","D#","Eb","E#","Fb"],["F#","Gb","G#"]]
ḣ€4 - head each to 4 [[0,"Ab","A#","Bb"],["C#","Db","D#","Eb"],["F#","Gb","G#"]]
Ẏ - tighten [0,"Ab","A#","Bb","C#","Db","D#","Eb","F#","Gb","G#"]
Ḋ - dequeue ["Ab","A#","Bb","C#","Db","D#","Eb","F#","Gb","G#"]
W€ - wrap each (of X) ["A","B","C","D","E","F","G"]
; - concatenate ["Ab","A#","Bb","C#","Db","D#","Eb","F#","Gb","G#","A","B","C","D","E","F","G"]
답변
레티 나 0.8.2 , 33 바이트
ABCDEFG
.
$&b $& $&#
[BE]#...
온라인으로 사용해보십시오! 설명:
ABCDEFG
기본 노트 이름을 삽입하십시오.
.
$&b $& $&#
평평하고 날카로운 버전을 포함하도록 각 메모를 확장하십시오.
[BE]#...
삭제 B#
, E#
그들 (다음 또한 노트 Cb
와 Eb
).
답변
펄 6 , 41 바이트
{S:g/[E|B]\#...//}o{'A'..'G'X~'b #'.comb}
음표와 샤프 / 플랫의 단순한 교차 곱에 이어 잘못된 음표가 제거됩니다. 이것은 문자열을 생성하는 익명 코드 블록입니다.
Ab A A# Bb B C C# Db D D# Eb E F F# Gb G G#