표준 스크래치 란 무엇입니까?


12

골프에서 코스의 표준 스크래치는 다음 공식을 사용하여 계산됩니다.

(3*num_of_3_par_holes + 4*num_of_4_par_holes + 5*num_of_5_par_holes) - difficulty_rating

당신의 임무는이 4 개의 입력이 주어지면 골프 코스의 표준 스크래치를 계산하는 것입니다.

모든 형식의 형식으로 입력해야합니다

[num_of_3_pars, num_of_4_pars, num_of_5_pars], difficulty rating

그러나 바이트를 절약하면 다른 방식으로 입력을받습니다.

함수에서 리턴하는 것과 같이 메타에서 승인 된 메소드로 최종 결과를 출력해야합니다.

이것이 이기 때문에 가장 짧은 코드가 승리합니다 !


모든 입력이 정수이고 1 이상입니까? (또한 출력이 항상 양수입니까?)
Doorknob

입력을 반대로 할 수 있습니까?
완전히 인간적인

13
이처럼 사소한 테스트 사례가 좋습니다.
Dennis

9
흥미롭고 골프에 관한 코드 골프.
sergiol

답변:


28

스크래치, 145 바이트

-2 boboquack 덕분에
-??? Oto 로 쓰는 것이 영어보다 짧기 때문에

(스크래치는 표준 스크래치이므로)

adi ()-temi (a) kuati (thadi adi ()-temi (b) kuati (thadi adi ()-temi (c) kuati (thadi adi ()-temi (d) kuati (thadi ma ((c)))) -((a) + (d))) + ((4) * (((a) (b)) + (c 번역 : ask () 및 wait set (a) to (answer ask () 및 wait set ( b) to (답변 ask () 및 대기 설정 (c) to (answer ask () 및 대기 설정 (d) to (answer say (((c)-((a) + (d))) + ((4 ) * (((a) + (b)) + (c

다음은 샘플 실행입니다.

a = 18, b = 13, c = 41, d = 23; answer = 124.


18

젤리 , 6 바이트

JḊ~æ.N

온라인으로 사용해보십시오!

작동 원리

JḊ~æ.N  Main link. Argument: [a, b, c, d]

J       Indices; yield [1, 2, 3, 4].
 Ḋ      Dequeue; yield [2, 3, 4].
  ~     Bitwise NOT; yield [-3, -4, -5].
     N  Negate; yield [-a, -b, -c, -d].
   æ.   Dot product; yield
        (-3)(-a) + (-4)(-b) + (-5)(-c) + (-d) = 3a + 4b + 5c - d.



5

매스 매 티카, 13 14 바이트

{3,4,5,-1}.#&

@GregMartin에게 감사합니다. 길이 4 목록으로 입력하십시오.


"하지만 바이트를 절약하면 많은 방식으로 다른 입력을받습니다"라고 말하면 입력을 길이 4 목록으로 가져 와서 두 번째 솔루션을 {3,4,5,-1}.#&(13 바이트) 로 줄여야한다고 생각합니다 .
Greg Martin

당신이 맞아요 ..
Keyu Gan






3

x86-64 기계 코드, 14 바이트

8D 3C 7F 8D 14 92 8D 04 B7 01 D0 29 C8 C3

4 개의 정수 매개 변수를 사용하는 System V AMD64 호출 규칙 (Gnu / Linux 시스템에서 유비쿼터스)을 따르는 기능 :

  • EDI = num_of_3_par_holes
  • ESI = num_of_4_par_holes
  • EDX = num_of_5_par_holes
  • ECX = 난이도

EAX레지스터 에서 표준 스크래치 인 단일 값을 리턴합니다 .

ungolfed 어셈블리 니모닉 :

; int ComputeStandardScratch(int num_of_3_par_holes,
;                            int num_of_4_par_holes,
;                            int num_of_5_par_holes,
;                            int difficulty_rating);
lea   edi, [rdi+rdi*2]    ; EDI = num_of_3_par_holes * 3
lea   edx, [rdx+rdx*4]    ; EDX = num_of_5_par_holes * 5
lea   eax, [rdi+rsi*4]    ; EAX = EDI + (num_of_4_par_holes * 4)
add   eax, edx            ; EAX += EDX
sub   eax, ecx            ; EAX -= difficulty_rating
ret                       ; return, leaving result in EAX

수식의 간단한 번역입니다. 흥미로운 점은 이것이 본질적으로 속도를 최적화 할 때 작성하는 것과 동일한 코드라는 것입니다 . 이것은 정말 86 년대의 힘을 보여줍니다 LEA하도록 설계되어 명령, OAD 전자 ffective ddress하지만 강력한 다목적 연산 주력하고, 하나의 명령 (2의 낮은 힘에 의해 곱셈) 추가 및 확장 할 수 있습니다 .


3

젤리 , 10 7 바이트

3r5×⁸S_

온라인으로 사용해보십시오!

Erik The Outgolfer 덕분에 -3 바이트!

작동 원리!

3r5×⁸S_  Main link: a, the pars as a list and b, the difficulty rating

     S   The sum of
3r5        [3, 4, 5]
   ×       each element times
    ⁸      the left argument (a)
      _  Subtract the right argument (b)

메이크업 목록에 표준 방법은 생략되어 []있지만, 당신이 사용할 수있는 3r5×⁸S_골프이 더 ( 3r5-> [3, 4, 5], 로부터 그것을 구별하기 = 왼쪽 인수 S, ×교환 법칙이 성립)입니다.
Outgolfer Erik

3

옥타브 , 14 바이트

@(a)[3:5 -1]*a

온라인으로 사용해보십시오!

MATL 보다 약 2 배 더 깁니다 . 나는 처음에 이것을 문자 그대로 MATL로 이식했지만, 그것 iY*보다 길다 *s. a순서대로 구멍을 포함하고 난이도 를 갖는 입력 값 은 열 벡터 여야합니다.


질문에 따르면 바이트를 절약하면 어떤 형식 으로든 입력을 취할 수 있다고 말하면 14 : 작동합니다 @(a)[3:5 -1]*a. 입력 값은[3 holes; 4 holes; 5holes; difficulty]
Tom Carpenter

@ TomCarpenter 아, 나는 목록 + 숫자 부분이 의무적이라고 생각했다. "이상해야하지만 ..." 나는 그때 내 대답을 수정 할 것 같아요.
Sanchises


2

Neim , 7 바이트

'π𝐂𝕋𝐬S𝕊

설명:

'π         Push 345
           The character ' pushes the next character's index in the codepage plus 100.
           The characters ", + and * do that same thing except add a different number.
           This means that in Neim, all 3 digit numbers can be expressed with 2 characters.
           This commit was pushed 8 days before the answer was posted.
  𝐂        Get the characters
   𝕋       Vectorised multiply with the input
    𝐬       Sum the resulting list
     S𝕊    Subtract the input

대체 프로그램 : 3𝐈ᛖ𝕋𝐬S𝕊

345문자 를 누르고 가져 오는 대신을 [1 2 3]사용 하여 배열 을 3𝐈만든 다음을 사용하여 각 요소에 2를 추가합니다 .

온라인으로 사용해보십시오!


This commit was pushed 8 days before the answer was posted.글쎄, 당신은 실제로 이것을 필요로하지 않습니다.
Outgolfer Erik

@EriktheOutgolfer 확실하지 않습니다. 그러나 나는 또한 설명이 필요하지 않습니다. 그거 제거하겠습니까?
Okx

기본적으로 메타 합의가 변경되었으므로 비경쟁에 대해 걱정할 필요가 없습니다.
Outgolfer Erik

@EriktheOutgolfer 메타 합의가 주관적이고 명확하지 않기 때문에 비경쟁에 대해 걱정합니다. 그러나이 경우 거기에 대해 불평 할 이유가 없습니다. 그 댓글을 올리지 않은 것보다 더 많은 시간을 사용하고 있습니다.
Okx

어떤 이유로 인라인 코드 블록의 대부분의 Neim 문자는? 상자.
CalculatorFeline



2

brainfuck , 39 바이트

,[->+++<],[->++++<],[->+++++<],[->-<]>.

온라인으로 사용해보십시오!

입력을 받아서 ASCII 문자로 출력을 인쇄합니다. 예를 들어, 값 99는 c로 표시됩니다.

설명:

,                                       Take the first input in Cell 0
 [      ]                               While the data being pointed to (Cell 0) is nonzero
  ->+++<                                Decrement Cell 0 and add 3 to Cell 1
                                        Now 4 times the first input is in Cell 1
         ,                              Take the second input in Cell 0
          [->++++<]                     Add 4 times the second input to Cell 1
                   ,[->+++++<]          Take the third input in Cell 0 and add five times its value to Cell 1
                              ,         Take the fourth input in Cell 0
                               [    ]   While the data being pointed to (Cell 0) is nonzero
                                ->-<    Decrement Cells 0 and 1
                                     >. Print the value in Cell 1




2

,,,, 12 바이트

↻5×↻4×↻3×↻-#

설명

예를 들어 입력 4, 3, 2, 1을 사용하십시오.

↻5×↻4×↻3×↻-#

              implicit input                  [4, 3, 2, 1]
↻             rotate the stack clockwise      [1, 4, 3, 2]
 5            push 5                          [1, 4, 3, 2, 5]
  ×           pop 2 and 5 and push 2 * 5      [1, 4, 3, 10]
   ↻          rotate the stack clockwise      [10, 1, 4, 3]
    4         push 4                          [10, 1, 4, 3, 4]
     ×        pop 3 and 4 and push 3 * 4      [10, 1, 4, 12]
      ↻       rotate the stack clockwise      [12, 10, 1, 4]
       3      push 3                          [12, 10, 1, 4, 3]
        ×     pop 4 and 3 and push 4 * 3      [12, 10, 1, 12]
         ↻    rotate the stack clockwise      [12, 12, 10, 1]
          -   pop 10 and 1 and push 10 - 1    [12, 12, 9]
           #  pop 12, 12, 9 and push the sum  [33]
              implicit output

2

Cubix , 36 바이트

w;r5*U4I;I3*r;UW;;r;<\r/;r-I/+p+O@;w

온라인으로 사용해보십시오!

      w ; r
      5 * U
      4 I ;
I 3 * r ; U W ; ; r ; <
\ r / ; r - I / + p + O
@ ; w . . . . . . . . .
      . . .
      . . .
      . . .

그것을 지켜봐

몇 번 반복되는 상당히 선형적인 프로그램. 기본 단계 :

  • I3*r;U; 첫 번째 입력에 3을 곱한 후 스택 정리
  • I4*/r\ 다음 입력을 받고 4를 곱하십시오. 결과를 아래로 회전하십시오.
  • Iw5*Ur;w<;r;;W 다음 입력을 받고 5를 곱하고 스택을 정리하십시오.
  • I-r;w; 마지막 입력을 받고, par 5 결과에서 빼고 스택 정리
  • /+p+O\@ par 4 결과에 추가, par3 결과를 맨 위에 추가, 출력 및 중지

2

HP-15C (RPN), 14 바이트

16 진 명령 :

41 C4 F5 FC C5 F4 FC FA C5 F3 FC FA 31 FB

읽을 수있는 버전 :

001 {       44  1 } STO 1
002 {          33 } R⬇
003 {           5 } 5
004 {          20 } ×
005 {          34 } x↔y
006 {           4 } 4
007 {          20 } ×
008 {          40 } +
009 {          34 } x↔y
010 {           3 } 3
011 {          20 } ×
012 {          40 } +
013 {       45  1 } RCL 1
014 {          30 } −

프로그램을 실행하기 전에 네 개의 숫자가 순서대로 스택에로드됩니다.


좋은 첫 대답. PPCG에 오신 것을 환영합니다!
musicman523

2

Excel VBA, 20 바이트

익명 VBE 범위로부터 입력을 받아 직접 윈도우 함수 [A3:A6]있는 [A3:A5]수를 나타내는 3, 45각각 구멍을 파 [A6]어려움을 나타낸다. VBE 즉시 창으로 출력

?[3*A3+4*A4+5*A5-A6]

위의 요약 버전은 전화

Debug.Print Application.Evaluate("=3*A3+4*A4+5*A5-A6")

여기서 "=3*A3+4*A4+5*A5-A6"의해 나타낸 바와 같이, 셀 익명의 식으로 주어진다 [...]래퍼와 ?의 중단 버전 인 Print내재적으로 호출 Debug.컨텍스트에 의해

더 재미있는 버전, 34 바이트

위와 동일한 I / O 조건을 가진 익명 VBE 즉시 창 기능.

?[SUMPRODUCT(A3:A5,ROW(A3:A5))-A6]

위의 요약 버전은 전화

Debug.Print Application.Evaluate("=SUMPRODUCT(A3:A5,ROW(A3:A5))")

여기서 랩퍼가 "=SUMPRODUCT(A3:A5,ROW(A3:A5))"나타내는 익명 셀의 공식이 제공 되며 컨텍스트에 의해 내재 된 호출 의 더 이상 사용되지 않는 버전입니다 . 이 버전에서는 해당 범위 ( )의 범위와 행 번호가 배열로 전달됩니다.[...]?PrintDebug.[A3:A5]ROWS(A3:A5)

엑셀 버전, 18 바이트

물론, 위의 버전은 따라서

=3*A3+4*A4+5*A5-A6

=SUMPRODUCT(A3:A5,ROW(A3:A5))-A6





당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.