มาตรฐานคืออะไร


12

ในสนามกอล์ฟค่ามาตรฐานของหลักสูตรจะคำนวณโดยใช้สูตรนี้:

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

งานของคุณคือการคำนวณรอยขีดข่วนมาตรฐานของสนามกอล์ฟซึ่งมีปัจจัยการผลิตทั้งสี่นี้

คุณควรป้อนข้อมูลในรูปแบบมาตรฐานใด ๆ ในรูปแบบ

[num_of_3_pars, num_of_4_pars, num_of_5_pars], difficulty rating

แต่ถ้ามันช่วยประหยัดไบต์คุณหลายคนใช้วิธีการที่แตกต่างกัน

คุณควรส่งออกผลลัพธ์สุดท้ายโดยวิธีการที่ยอมรับใน meta เช่นกลับมาจากฟังก์ชั่น

รหัสที่สั้นที่สุดชนะเพราะนี่คือ !


อินพุตทั้งหมดจะเป็นจำนวนเต็มและอย่างน้อย 1 หรือไม่ (นอกจากนี้ผลลัพธ์จะเป็นค่าบวกเสมอหรือไม่)
Doorknob

เราสามารถรับอินพุตที่กลับรายการได้หรือไม่?
มนุษย์โดยรวม

13
เล็กน้อยเช่นนี้กรณีทดสอบบางอย่างจะดี
Dennis

9
ที่น่าสนใจคือรหัสเกี่ยวกับกอล์ฟ
sergiol

คำตอบ:


28

ขีดข่วน145 ไบต์

-2 ขอบคุณ boboquack
- ??? เพราะการเขียนเป็นOtoสั้นกว่าภาษาอังกฤษ

(เพราะ Scratch เป็นรอยขีดข่วนมาตรฐาน)

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 () และรอ set (a) ถึง (answer ask) และรอ set ( b) ถึง (answer ask () และรอ set (c) to (answer ask () และรอ set (d) ถึง (answer say ((c) - ((a) + (d))) + (4 ) * (((ก) + (ข)) + (ค

นี่คือตัวอย่างการเรียกใช้:

A = 18, B = 13 c = 41, d = 23; answer = 124.




6

Haskell , 22 ไบต์

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

ลองออนไลน์! การใช้งาน: อัตราผลตอบแทน(3#2)5 735

รูปแบบอินพุตที่ไม่ดีนี้มีขนาดหนึ่งไบต์ที่สั้นกว่าโซลูชันทางตรง:

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

รูปแบบอินพุตที่ไม่มีจุดและดี: (23 ไบต์)

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

ลองออนไลน์! เชื่อมโยงกับและโทรกับff [3,2,5] 7


5

Mathematica, 13 14 ไบต์

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

ขอบคุณ @GregMartin รับอินพุตเป็นรายการความยาว 4


ขอบคุณที่ "แต่ถ้ามันช่วยประหยัดไบต์คุณหลายคนใช้วิธีการที่แตกต่างกัน" ฉันคิดว่าคุณควรจะใช้รายการเป็นความยาว 4 รายการและทำให้การแก้ปัญหาที่สองสั้นลง{3,4,5,-1}.#&(13 ไบต์)
Greg Martin

คุณพูดถูก ..
Keyu Gan




4

Julia 0.5 , 15 ไบต์

!v=v⋅[3:5;-1]

ลองออนไลน์!


คือสามไบต์หรือฉัน miscounting? จะ.*เป็นการปรับปรุงหรือไม่ แก้ไข: ไม่เป็นไร - พลาดส่วนที่รวม
Julian Wolf

ใช่สามไบต์ .*ทำการคูณองค์ประกอบที่ชาญฉลาดเท่านั้น มันไม่ได้ใช้ผลรวมของผลิตภัณฑ์
Dennis


3

x86-64 รหัสเครื่อง 14 ไบต์

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

ฟังก์ชั่นต่อไปนี้เรียกประชุม 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

เพียงการแปลสูตรอย่างง่าย สิ่งที่น่าสนใจคือรหัสนี้เป็นโค้ดเดียวกับที่คุณเขียนเมื่อปรับความเร็วให้เหมาะสมเช่นกัน นี้จริงๆแสดงให้เห็นถึงพลังของ x86 นั้นLEAการเรียนการสอนซึ่งถูกออกแบบมาเพื่อลิตร OAD อี ffective ddress แต่สามารถทำได้นอกจากนี้และปรับ (คูณโดยอำนาจต่ำของ 2) ในคำสั่งเดียวจึงทำให้มีประสิทธิภาพอเนกประสงค์เลขคณิตเทียม .


3

เจลลี่ , 10 7 ไบต์

3r5×⁸S_

ลองออนไลน์!

-3 ไบต์ขอบคุณ Erik The Outgolfer!

มันทำงานอย่างไร!

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], = อาร์กิวเมนต์ซ้ายเพื่อแยกความแตกต่างจาก the S, ×คือ commutative)
Erik the Outgolfer

3

อ็อกเทฟ , 14 ไบต์

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

ลองออนไลน์!

เกี่ยวกับสองครั้งตราบใดที่คำตอบ MATL ผมเริ่มแท้จริงรังเพลิงนี้เพื่อ MATL แต่มันกลับกลายเป็นมีความยาวมากกว่าเพียงแค่iY* *sโปรดทราบว่าอินพุตaที่มีรูตามลำดับและความยากควรเป็นเวกเตอร์คอลัมน์


ในฐานะที่เป็นคำถามว่าคุณสามารถใช้การป้อนข้อมูลในรูปแบบใด ๆ ถ้ามันจะช่วยประหยัดไบต์งานนี้สำหรับ @(a)[3:5 -1]*a14: การป้อนข้อมูลเป็นเวกเตอร์คอลัมน์ของ[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.คุณไม่ต้องการสิ่งนี้จริงๆ
Erik the Outgolfer

@EriktheOutgolfer แน่ใจว่าฉันไม่ แต่ฉันก็ไม่ต้องการคำอธิบาย คุณต้องการให้ฉันลบออกไหม
Okx

โดยทั่วไปคุณไม่ต้องกังวลกับการไม่แข่งขันเนื่องจากฉันทามติ meta เปลี่ยนไป
Erik the Outgolfer

@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

Brachylog , 18 16 ไบต์

∧5⟦₁↺b;?z×ᵐġ₃+ᵐ-

ลองออนไลน์!

-2 ขอบคุณที่Fatalize


∧5⟦₁↺b;?z×ᵐġ₃+ᵐ-คือ 2 ไบต์น้อยกว่า
ทำให้เสียชีวิต

@ ทำให้เป็นจริงมันน่าจะน้อยกว่า 3 ไบต์ถ้าไม่มีบั๊กที่มีจำนวนเต็มและอินพุทนำหน้า
Erik the Outgolfer

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\@ เพิ่มไปยังผลลัพธ์พาร์ 4 นำผลลัพธ์พาร์ 3 ไปที่ด้านบนสุดเพิ่มเอาต์พุตและหยุด

2

HP-15C (RPN), 14 ไบต์

รหัสฐานสิบหกการเรียนการสอน:

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, 4และ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"ได้รับจะเป็นสูตรของเซลล์ที่ไม่ระบุชื่อตามที่ระบุโดย[...]เสื้อคลุมและ?เป็นรุ่นที่เลิกใช้ของการPrintโทรที่มีนัยDebug.โดยบริบท

เวอร์ชันที่สนุกมากขึ้น 34 ไบต์

ฟังก์ชั่นหน้าต่าง VBE แบบไม่ระบุชื่อทันทีที่มีเงื่อนไข I / O เดียวกันข้างต้น

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

ด้านบนเป็นรูปแบบย่อของการโทร

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

ที่"=SUMPRODUCT(A3:A5,ROW(A3:A5))"ได้รับจะเป็นสูตรของเซลล์ที่ไม่ระบุชื่อตามที่ระบุโดย[...]เสื้อคลุมและ?เป็นรุ่นที่เลิกใช้ของการPrintโทรที่มีนัยDebug.โดยบริบท ในรุ่นนี้ช่วง[A3:A5]และหมายเลขแถวของช่วงนั้น ( ROWS(A3:A5)) จะถูกส่งผ่านเป็นอาร์เรย์

รุ่น Excel ขนาด 18 ไบต์

แน่นอนรุ่นข้างต้นให้ยืมตัวเองเพื่อรุ่น excel ของ

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

และ

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





โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.