標準スクラッチとは何ですか?


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ですか?(また、出力は常に正ですか?)
ドアノブ

入力を逆にすることはできますか?
完全に人間

13
これはささいなことですが、いくつかのテストケースがいいでしょう。
デニス

9
興味深いのは、ゴルフに関するコードゴルフです。
sergiol

回答:


28

スクラッチ、145バイト

-2 boboquackに感謝
-??? 音で書くのは英語より短いから

(スクラッチが標準スクラッチであるため。)

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 translation: ask()and wait set(a)to (answer ask()and wait set(b)to (answer ask()and wait set(c)to (answer ask()and wait set(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.


6

Haskell、22バイト

(a#b)c d=3*a+4*b+5*c-d

オンラインでお試しください!使用法:(3#2)5 7yields 35

このあまり良くない入力フォーマットは、単純なソリューションよりも1バイト短くなります。

f a b c d=3*a+4*b+5*c-d

ポイントフリーで素晴らしい入力フォーマット:(23バイト)

(-).sum.zipWith(*)[3..]

オンラインでお試しください!にバインドしfて呼び出しますf [3,2,5] 7


5

Mathematica、13 14 バイト

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

@GregMartinに感謝します。入力を長さ4のリストとして取得します。


「しかし、それがバイトを節約するなら、多くの人は異なる方法で入力を取ります」ので、長さ4のリストとして入力を取り、2番目のソリューションを{3,4,5,-1}.#&(13バイト)に短縮する必要があると思います。
グレッグマーティン

あなたは正しい..
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レジスタに単一の値、標準スクラッチを返します。

非ゴルフアセンブリニーモニック:

; 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

数式の簡単な翻訳。おもしろいのは、これもスピードを最適化するときに書くコードと本質的に同じだということです。これは本当にのx86のの力を示してLEAするように設計されている命令、lは OAD 電子 ffective A 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×可換です)。
エリックアウトゴルファー

3

オクターブ、14バイト

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

オンラインでお試しください!

MATLの回答の約2倍の長さ。最初は文字通りこれをMATLに移植しましたが、判明したのiY*はだけではありません*sa順番に穴を、次に難易度を含むinput が列ベクトルでなければならないことに注意してください。


質問が言うように、バイトを節約するなら、どんなフォーマットでも入力をとることができます。これは14:で機能し@(a)[3:5 -1]*aます。入力は次の列ベクトルです[3 holes; 4 holes; 5holes; difficulty]
トムカーペンター

@TomCarpenterああ、リストと数字の部分は必須だと思いました。それは少し奇妙な言い回しです:「あなたは…するべきですが、あなたはそうするかもしれません」。その答えを修正します。
Sanchises


2

ニーム、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.まあ、あなたは実際にこれを必要としません。
エリックアウトゴルファー

@EriktheOutgolfer確かに私はしません。しかし、説明も必要ありません。削除してよろしいですか?
Okx

基本的に、メタコンセンサスが変更されたため、競合しないことを心配する必要はありません。
エリックアウトゴルファー

@EriktheOutgolferメタコンセンサスは主観的で不明確なので、競合しないことを心配しています。しかし、この場合、そこに存在することについて文句を言う理由はありません。そうしないと、そのコメントを投稿しなかった場合よりも多くの時間を費やしています。
Okx

何らかの理由で、インラインコードブロックのほとんどのNeim文字は次のように見えますか?ボックス。
電卓



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; 最後の入力を取得し、パー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 } −

4つの番号は、プログラムを実行する前に順番にスタックにロードされます。


いい最初の答え。PPCGへようこそ!
musicman523

2

Excel VBA、20バイト

匿名VBE範囲からの入力を受け取り、即時窓関数[A3:A6]うち[A3:A5]の数を表し34そして5それぞれ、パー穴と[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"によって示されるように、匿名セルの数式である場所は、暗黙的なコンテキストによる呼び出しの非推奨バージョンです。[...]?PrintDebug.

より楽しいバージョン、34バイト

上記と同じI / O条件を持つ匿名VBEイミディエイトウィンドウ関数。

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

上記は呼び出しの要約バージョンです

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

where "=SUMPRODUCT(A3:A5,ROW(A3:A5))"は、[...]ラッパーによって示されるように、匿名セルの数式として指定され、暗黙的な呼び出しの?非推奨バージョンです。PrintDebug.コンテキストによる。このバージョンでは、範囲[A3:A5]とその範囲の行番号(ROWS(A3:A5))が配列として渡されます

Excelバージョン、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.