ตัดสินผู้ชนะเกมฟุตบอลออสเตรเลีย


13

ในฟุตบอลออสเตรเลียเป้าหมายมีค่า 6 คะแนนและหลังมีค่า 1 คะแนน คะแนนอาจรวมถึงจำนวนของเป้าหมายและด้านหลังเช่นเดียวกับคะแนนรวม กำหนดจำนวนประตูและด้านหลังสำหรับสองทีมที่แตกต่างกันกำหนดทีมที่ชนะในเกม

ใช้จำนวนเต็มสี่จำนวนg1, b1, g2, b2เป็นอินพุตและเอาต์พุตสองค่าที่แตกต่างกันไม่ว่าทีมแรกหรือทีมที่สองจะเป็นผู้ชนะ รูปแบบอินพุตมีความยืดหยุ่น แต่ลำดับอินพุตต้องอนุญาตให้ชัดเจนว่าทีมใดเป็นอันดับแรก ตัวอย่างเช่นg1, g2, b1, b2จะได้รับอนุญาต แต่b1, g2, g1, b2จะไม่

กรณีทดสอบ

กรณีทดสอบจะใช้trueสำหรับการชนะทีมแรกและfalseสำหรับการชนะทีมที่สอง (g1,b1),(g2,b2)การป้อนข้อมูลที่อยู่ในรูปแบบ

(1,0),(0,1)        true
(2,0),(0,11)       true
(10,8),(11,1)      true
(0,0),(1,0)        false
(100,100),(117,0)  false
(7,7),(5,12)       true
(2,0),(0,13)       false

ตัวอย่างเช่นสำหรับอินพุต(10,8),(11,1)ทีม 1 ทำคะแนนได้ 10 เป้าหมายและ 8 หลังรวมเป็นคะแนนในขณะที่ทีม 2 ทำคะแนนคะแนนดังนั้นทีมที่ 1 ชนะ .106+81=68116+11=67

ไม่มีการป้อนข้อมูลใด ๆ ที่จะดึง - พฤติกรรมของโปรแกรมของคุณในการดึงการจับไม่สำคัญ


เราจะขยายสาขาฟุตบอลเกลิคและเหวี่ยงได้ไหม?
TRiG

@TRiG สร้างคำถามของคุณเอง!
สตีเฟ่น

ฉันจะลองนึกถึงบางสิ่งที่ไม่ได้อยู่ใกล้เกินไป
TRiG

2
@TRiG, ​​GAA จะเหมือนกันเพียงใช้ base-3 แทน base-6
Shaggy

ใช่ @Shaggy ซึ่งเป็นสาเหตุที่ฉันไม่สามารถคัดลอกคำถามนี้เพื่อสร้าง GAA ที่เทียบเท่าได้ สิ่งที่คล้ายกัน อาจรวมถึงกฎกติกาฟุตบอลระหว่างประเทศ
TRiG

คำตอบ:


7

เยลลี่ 3 ไบต์

ḅ6M

การเชื่อมโยงเอกยอมรับรายชื่อของรายการของจำนวนเต็มให้[[g1,b1],[g2,b2]]ซึ่งผลตอบแทนถัวเฉลี่ยรายการหรือ[1] (วาดจะให้ผลผลิต)[2]
[1,2]

... หรือการพิมพ์โปรแกรมเต็มรูปแบบหรือ12

ลองออนไลน์! หรือดูการทดสอบในตัว

อย่างไร?

ḅ6M - Link: list of lists of integers, X
 6  - literal six
ḅ   - convert (X) from base 6 (vectorises)
  M - maximal indices

5

ชุดประกอบCP-1610 ( Intellivision ), 9 DECLEs 1 ≈ 12 ไบต์

การป้อนข้อมูลตามปกติในR0 ( ), R1 ( ), R2 ( ) และR3 ( ) และการตั้งค่าธงสัญญาณหากทีมที่ 2 ชนะหรือล้างเป็นอย่างอื่นg1b 1 g 2 b 2b1g2b2

275   PSHR  R5        ; push return address
110   SUBR  R2,   R0  ; R0 -= R2
082   MOVR  R0,   R2  ; R2 = R0
04C   SLL   R0,   2   ; R0 <<= 2
0D0   ADDR  R2,   R0  ; R0 += R2
0D0   ADDR  R2,   R0  ; R0 += R2
0C8   ADDR  R1,   R0  ; R0 += R1
118   SUBR  R3,   R0  ; R0 -= R3
2B7   PULR  R7        ; return

CP-1610 ไม่มีคำแนะนำการคูณและอาจเลื่อนทีละ 1 หรือ 2 ตำแหน่งเท่านั้นดังนั้นเราจึงคำนวณนิพจน์ต่อไปนี้แทน:

((R0 - R2) << 2) + (R0 - R2) + (R0 - R2) + R1 - R3

รหัสทดสอบเต็มรูปแบบ

          ROMW    10              ; use 10-bit ROM width
          ORG     $4800           ; map this program at $4800

          ;; ------------------------------------------------------------- ;;
          ;;  test code                                                    ;;
          ;; ------------------------------------------------------------- ;;
main      PROC
          SDBD                    ; set up an interrupt service routine
          MVII    #isr,     R0    ; to do some minimal STIC initialization
          MVO     R0,       $100
          SWAP    R0
          MVO     R0,       $101

          EIS                     ; enable interrupts

          SDBD                    ; R4 = pointer to test cases
          MVII    #@@data,  R4
          MVII    #$200,    R5    ; R5 = backtab pointer

@@loop    PSHR    R5              ; save R5 on the stack
          MVI@    R4,       R0    ; load the next test case
          MVI@    R4,       R1    ; into R0 .. R3
          MVI@    R4,       R2
          MVI@    R4,       R3
          CALL    score           ; invoke our routine
          BMI     @@true

          MVII    #$80,     R0    ; set output to '0'
          B       @@output

@@true    MVII    #$88,     R0    ; set output to '1'

@@output  PULR    R5              ; restore R5
          MVO@    R0,       R5    ; draw the output

          SDBD                    ; was it the last test case?
          CMPI    #@@end,   R4
          BLT     @@loop          ; if not, jump to @@loop

          DECR    R7              ; loop forever

@@data    DECLE   1, 0, 0, 1      ; test cases
          DECLE   2, 0, 0, 11
          DECLE   10, 8, 11, 1
          DECLE   0, 0, 1, 0
          DECLE   100, 100, 117, 0
          DECLE   7, 7, 5, 12
          DECLE   2, 0, 0, 13
@@end     ENDP

          ;; ------------------------------------------------------------- ;;
          ;;  ISR                                                          ;;
          ;; ------------------------------------------------------------- ;;
isr       PROC
          MVO     R0,       $0020 ; enable display

          CLRR    R0
          MVO     R0,       $0030 ; no horizontal delay
          MVO     R0,       $0031 ; no vertical delay
          MVO     R0,       $0032 ; no border extension
          MVII    #$D,      R0
          MVO     R0,       $0028 ; light-blue background
          MVO     R0,       $002C ; light-blue border

          JR      R5              ; return from ISR
          ENDP

          ;; ------------------------------------------------------------- ;;
          ;;  routine                                                      ;;
          ;; ------------------------------------------------------------- ;;
score     PROC
          PSHR    R5              ; push the return address

          SUBR    R2,       R0    ; R0 -= R2
          MOVR    R0,       R2    ; R2 = R0
          SLL     R0,       2     ; R0 <<= 2
          ADDR    R2,       R0    ; R0 += R2
          ADDR    R2,       R0    ; R0 += R2
          ADDR    R1,       R0    ; R0 += R1
          SUBR    R3,       R0    ; R0 -= R3

          PULR    R7              ; return
          ENDP

เอาท์พุต

เอาท์พุต

ภาพหน้าจอจากjzIntv


1. CP-1610 opcode ถูกเข้ารหัสด้วยค่า 10 บิตหรือที่เรียกว่า 'DECLE' รูทีนนี้มีความยาว 9 DECLE




4

ภาษาลึกลับการออกเสียงระหว่างประเทศ , 12 ไบต์ (ภาษา WIP)

6ɪθɪt6ɪθɪtʈo

เอาต์พุต1สำหรับ true และ0false

ไม่มีล่าม TIO python main.py "code here"แต่เป็นที่ทำงานได้โดยโคลนพื้นที่เก็บข้อมูลดังกล่าวข้างต้นและเรียก

สินค้า TL; DR ของภาษาก็คือว่ามันเป็นภาษาสแต็คตามที่การเรียนการสอนทุกคนเป็นตัวละครจากที่สัทอักษรสากล

ใช้เวลาในการขัดแย้งเป็น 4 ปัจจัยการผลิตจาก STDIN g1, b1, g2, b2ในการสั่งซื้อ อาจจะลงไปต่ำกว่า 12 ไบต์เมื่อลูปถูกนำไปใช้อย่างสมบูรณ์

6ɪθɪt6ɪθɪtʈo
6            ; Push 6
 ɪ           ; Take number input, push
  θ          ; Pop 2, multiply, push
   ɪ         ; Take number input, push
    t        ; Pop 2, add, push
     6       ; Push 6
      ɪ      ; Take number input, push
       θ     ; Pop 2, multiply, push
        ɪ    ; Take number input, push
         t   ; Pop 2, add, push 
          ʈ  ; Pop 2, if a > b push 1, otherwise 0
           o ; Pop, print

6
kuːl ˈlæŋgwɪʤ, djuːd!
roblogic

aɪəmnɑːt əˈmjuːzd baɪðəhʊd; bɪˈniːθ ɪtɪz ˈsɪmpli dʒʌst əˈnʌðər stæk-beɪst ˈlæŋɡwɪdʒ aɪ ˈstrɒŋli dɪsˈkɜːrɪdʒ ju tu ʌpvoʊtðɪs ˈænsər




3

33 , 22 ไบต์

6OxcOasz6OxcOaclmzh1co

ลองออนไลน์!

นำเข้าเป็นจำนวนเต็ม 4 ตัวคั่นและส่งกลับ 0 สำหรับทีมแรกที่ชนะ 1 สำหรับวินาที

คำอธิบาย:

6Oxc                   | Multiplies the first number by 6
    Oa                 | Adds the second number
        6Oxc           | Multiplies the third number by 6
            Oa         | Adds the fourth number
      sz      clmz     | Subtract this from the first team's score
                  h1co | Print 0 if the first team's score is greater, 1 otherwise

-4 ไบต์หากอนุญาตผลลัพธ์ที่ไม่ชัด:

6OxcOasz6OxcOaclmo

จะเอาท์พุทความแตกต่างคะแนน; ผลลัพธ์ในเชิงบวกหมายถึงการชนะทีมแรก, ติดลบหมายถึงการชนะทีมที่สอง



3

brainfuck , 45 38 36 32 29 28 ไบต์

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

ลองออนไลน์!

ขอบคุณ @Jo King สำหรับ -8 ไบต์

ข้อมูลที่ป้อนคือ b1, g1, b2, g2 (แลกเปลี่ยนกับเป้าหมายและด้านหลัง) พิมพ์þหากทีม 1 ชนะ พิมพ์ null หากทีม 2 ชนะ

รหัส:

[tape: p1, p2, print marker]

[Get input and calculate scores]
,               input behinds of team 1
[               while input
  >,                go to next cell and input goals of team
  [<++++++>-]       add it 6 times to behinds
,]              repeat this with the second pair of values

[Determine, which one is better]
-               set print marker
[               while score of both teams is greater than zero
  [-<]              decrement and go to previous cell (team 1 or empty cell/in the first run, it will decrement the print marker a second time)
  >>                return to team 2 (or two cells to the right of the first team that became 0)
]
>               go one cell right. If team 1 won, we are at the print marker now
                If team 2 won, we are one cell right of the print marker
.           Print that

ฉันไม่คิดว่ามันจะใช้งานได้กับอินพุตที่มากกว่า 10 แต่ก็เป็นทางออกที่ดีอยู่ดี (จะสังเกตว่ามันหยุดนิ่ง) อาจจะให้ลองไป outgolf ภายหลังว่า :)
โรมันกราฟ

1
ใช่ข้อมูลที่มากกว่า 9 อย่างน้อยเป็นเรื่องยุ่งยากเพราะรหัสจะใช้อักขระหนึ่งตัวต่อหนึ่งอินพุตเท่านั้น คุณต้องใช้อักขระ ASCII ถัดไป ( :;<=>?ฯลฯ ) หากคุณต้องการป้อนคะแนนที่สูงขึ้น
Dorian

"อินพุตเป็นรหัสอักขระยกเว้น null" เป็นตัวเลือกหรือไม่ นอกจากนี้คะแนนทั้งสองจะต้องเท่ากันเมื่อหารด้วยจำนวนเต็ม 256 อย่างน้อยเมื่อคุณใช้ tio
Dorian

3

Scratch 3.0 17 16 บล็อก160 143 ไบต์

คะแนนมาจากวิธีการให้คะแนนที่เสนอที่นี่

บันทึก 1 บล็อก / 17 ไบต์ขอบคุณ @A (หรือ Uzer_A เมื่อเริ่มต้น) _

โปรแกรมในบล็อกที่ดีขึ้น

ลองใช้งานใน Scratch

ในฐานะ Scratchblock :

when gf clicked
repeat(2
ask[]and wait
set[m v]to((answer)*(6)
ask[]and wait
change[m v]by(answer
add(m)to[x v
end
say<(item(1) of [x v]) > (m)

คำตอบประวัติ

โปรแกรมเป็นบล็อก

ค่อนข้างพอร์ตของคำตอบถังของฉัน

ลองใช้งานใน Scratch

อินพุตอยู่ในรูปแบบของ g1, b1, g2, b2

ใน Scratchblock ไวยากรณ์

when gf clicked
repeat(0
set[m v]to(0
ask[]and wait
change[m v]by((answer)*(6)
ask[]and wait
change[m v]by(answer
add(m)to[x v
end
say<(item(1) of [x v]) > (m)

ตอนนี้ฉันรู้ว่าสิ่งที่คุณพูด ... ทำไมกอล์ฟในรอยขีดข่วน? มันสนุกดี นั่นเป็นเหตุผล นอกจากนี้ Scratch มีความโดดเด่นไม่เหมือนใครใน CGCC




2

ถังขนาด 10 ไบต์ (SBCS)

(2|¿¿6*+)>

ลองออนไลน์!

ในฐานะชาวออสเตรเลียฉันเห็นด้วยกับคำถามนี้

ข้อมูลที่นำมาเป็น:

b1
g1
b2
g2

และ 0 หมายถึงทีม 2 และ 1 หมายถึงทีม 1

อธิบาย

(2| #twice
¿¿  #get input in the form of bn, gn where n is the team number
*6+ #multiply the goals by 6 and add the values
)>  #compare the two values to determine the winner

2

05AB1E , 6 5 ไบต์

6δβZk

[[g1,b1],[g2,b2]]การป้อนข้อมูลเป็นรายการที่ซ้อนกัน เอ้าต์พุต0หากทีม 1 ชนะและ1ถ้าทีม 2 ชนะ

-1 ไบต์ขอบคุณที่@Grimyδสำหรับการเตือนฉันเกี่ยวกับ

ลองมันออนไลน์หรือตรวจสอบกรณีทดสอบทั้งหมด

คำอธิบาย:

เห็นได้ชัดว่าการแปลงฐานโดยพลการในรายการแบบซ้อนไม่สามารถใช้งานได้หากไม่มีผลิตภัณฑ์ด้านนอกแผนที่อย่างชัดเจน

 δβ    # Apply arbitrary base-conversion double-vectorized,
6      # using the (implicit) input-list of lists and 6 as base
       # (i.e. [a,b] becomes 6a+b (or to be more precise: 6¹a + 6⁰b))
   Z   # Get the maximum of this mapped list (without popping the list itself)
    k  # And get the 0-based index of this maximum in the mapped list
       # (after which the top of the stack is output implicitly as result)


2

C (gcc) , 39 35 31 26 ไบต์

e(a,b,c,d){a=(a-c)*6>d-b;}

0 เป็นเท็จ

1 เป็นจริง

อินพุตไปยังฟังก์ชันคือ (g1, b1, g2, b2)

ขอบคุณ Doorknob สำหรับ -5 ไบต์

ลองออนไลน์!


3
คุณสามารถลบพื้นที่หลังreturnแต่คุณยังสามารถละเมิดรายละเอียดการดำเนินงานสำหรับ26 ไบต์
Doorknob

2

Brain-Flakขนาด 62 ไบต์

([((({})({}){}){}{}[(({})({}){}){}{}]<(())>)(<>)]){({}())<>}{}

เอาท์พุต1หากทีมแรกแพ้และ0หากพวกเขาชนะ (หรือเสมอกัน)

ลองออนไลน์!

# Input: G B g b

   (                                 <(())>)                   # Push 1 under...
    ({})({}){}){}{}                                            #   6G + B
                   [                ]                          #   Minus
                    (({})({}){}){}{}                           #   6g + b
                                             <>                # Switch stacks
([(                                         (  )])             # Push 0 under -(6G+B-6g+b)
                                                   ({}())<>    # Add 1 and switch stacks...
                                                  {        }   #   until one stack reaches 0
                                                            {} # Pop, leaving either 1 or 0


2

บทกวี 751 ไบต์

the game:a game o soccer
for a moment of my fun,i kicked my leg
o,i hurt a player
o.m.gee,o no
suddenly i then apologized a little
o.m.gee,o no
but really,i loved a good soccer battle
a game i am doing,i love it
there is a game,a twenty-to-one unwinnable match(as we called it,i mean)a match we won
a wonder of an event i saw
i played,i go in again
i am happy in a match-up of teams,i am pumped
then o,a coach i saw played soccer
i know i do admire a game o soccer
o,a match was not a bummer,and also i am making in an extra score
i think i saw a split net,a hole i ripped out a net
i am ready to win a match
o,my people and i love a sport,a bit o soccer
i am going in a game,i score,i win
o really,i am doing a game o soccer
play ball
i am gonna wi-n

ลองออนไลน์!

เด็กชายนี่เป็นคนที่เขียนยาก

อินพุตอยู่ในรูปแบบต่อไปนี้:

g1
b1
g2
b2

สิ่งนี้ให้รหัสข้อผิดพลาดของ "ไม่ตรงกัน IF / EIF" หากทีมแรกชนะและ "EOF ที่ไม่คาดคิด" หากทีมที่สองชนะ (อนึ่งการเสมอกันจะถือว่าเป็นทีมที่สองที่ชนะ)


1

เรติน่า 0.8.2 , 34 ไบต์

\d+
$*
(1*),
$1$1$1$1$1$1
(1*);\1$

ลองออนไลน์! ลิงก์มีกรณีทดสอบ ผล1ถ้าทีมที่สองไม่ชนะและ0ถ้าเป็นเช่นนั้น คำอธิบาย:

\d+
$*

แปลงอินพุตเป็น unary

(1*),
$1$1$1$1$1$1

ในแต่ละคู่ให้คูณหมายเลขแรกด้วยหกและเพิ่มวินาที

(1*);\1$

ตรวจสอบว่าตัวเลขที่สองมากกว่าครั้งแรกหรือไม่ อีกวิธีหนึ่งคุณสามารถใช้^(1*);\1ซึ่งจะแสดงผล0หากทีมแรกชนะและ1ถ้าไม่



1

ตัวประกอบ ABC , 111 74 ไบต์

.o 0 4 iiii
f
	subI
	pushI 6
	mulI
	addI
	subI
	pushI 0
	ltI
.d 0 1 b
	rtn

ลองออนไลน์!

ไม่ใช้สิ่งใดเหนือการดำเนินการสแต็กพื้นฐานที่สุด:

subI    | B = [g1-g2,b1,b2]
pushI 6 | B = [6,g1-g2,b1,b2]
mulI    | B = [6*g1-6*g2,b1,b2]
addI    | B = [6*g1+b1-6*g2,b2]
subI    | B = [6*g1+b1-6*g2-b2]
pushI 0 | B = [0,6*g1+b1-6*g2-b2]
ltI     | B = [0<6*g1+b1-6*g2-b2]



1

ช่องว่าง 115 ไบต์

[S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   T   _STDIN_as_integer][T    T   T   _Retrieve_integer][S S S T  T   S N
_Push_6][T  S S N
_Multiply][S N
S _Duplicate][S N
S _Duplicate][T N
T   T   _STDIN_as_integer][T    T   T   _Retrieve_integer][T    S S S _Add][S N
S _Duplicate][S N
S _Duplicate][T N
T   T   _STDIN_as_integer][T    T   T   _Retrieve_input][S S S T    T   S N
_Push_6][T  S S N
_Multiply][S N
S _Duplicate][S N
S _Duplicate][T N
T   T   _STDIN_as_integer][T    T   T   _Retrieve_input][T  S S S _Add][T   S S T   _Subtract][N
T   T   N
_If_negative_jump_to_Label_NEGATIVE][S S S N
_Push_0][T  N
S T _Print_as_integer][N
N
N
_Exit_Program][N
S S N
_Label_NEGATIVE][S S S T    N
_Push_1][T  N
S T _Print_as_integer]

เพิ่มตัวอักษรS(ช่องว่าง), T(แท็บ) และN(บรรทัดใหม่) เป็นการเน้นเท่านั้น
[..._some_action]เพิ่มเป็นคำอธิบายเท่านั้น

พิมพ์0หากทีม 1 ชนะและ1(อาจเป็น-1จำนวนไบต์เดียวกันด้วย) หากทีม 2 ชนะ

ลองใช้ออนไลน์ (ด้วยพื้นที่ว่างเปล่าแท็บและบรรทัดใหม่เท่านั้น)

คำอธิบายในรหัสเทียม:

Integer g1 = STDIN as integer
Integer t1 = g1*6
Integer b1 = STDIN as integer
t1 = t1 + b1
Integer g2 = STDIN as integer
Integer t2 = g2*6
Integer b2 = STDIN as integer
t2 = t2 + b2
If(t1 - t2 < 0):
  Goto NEGATIVE
Print 0
Exit program

Label NEGATIVE:
  Print 1
  (implicitly exit with an error)

00



1

SimpleTemplateขนาด 84 ไบต์

เพียงแค่ "คูณด้วย 6 ผลรวมและเปรียบเทียบ" aproach ยกเว้นการสนับสนุนทางคณิตศาสตร์ขาดไปอย่างสุดขั้ว

{@set*A argv.0,6}{@incbyargv.1 A}{@set*B argv.2,6}{@incbyargv.3 B}0{@ifB is lowerA}1

เอาต์พุต0สำหรับ false และ01true


Ungolfed:

{@// multiply the first argument by 6}
{@set* teamA argv.0, 6}

{@// add the 2nd argument to the previous result}
{@inc by argv.1 teamA}

{@// same as before, for argument 3 and 4}
{@set* teamB argv.2, 6}
{@inc by argv.3 teamB}

{@echo 0}
{@// alternative: teamA is greater than teamB}
{@if teamB is lower than teamA}
    {@echo 1}
{@/}

ทุกสิ่งควรมีความชัดเจนเมื่อเพิ่มความคิดเห็น ( {@// ... })



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