태그 보관물: kolmogorov-complexity

kolmogorov-complexity

음표 목록 출력 롭거나 납작한 음표는 출력하지 않아야합니다. 다음은

이 작업은 간단합니다. 모든 음표 목록 (영어 음표 이름 사용)을 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
    #

  • 항상 그렇듯이 표준 허점 은 금지되어 있습니다.

  • 이것이 이므로 바이트 단위의 가장 작은 프로그램이 승리합니다.



답변

말레 볼제 , 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#그들 (다음 또한 노트 CbEb).


답변

펄 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#