Tentukan Pemenang Pertandingan Sepak Bola Australia


13

Di Sepak Bola Australia, gol bernilai 6 poin dan di belakangnya bernilai 1 poin. Skor dapat mencakup jumlah gol dan gol belakang, serta total skor. Mengingat jumlah gol dan tertinggal untuk dua tim yang berbeda, tentukan tim mana yang memenangkan pertandingan.

Ambil empat bilangan bulat g1, b1, g2, b2sebagai input, dan hasilkan dua nilai berbeda untuk apakah tim pertama atau tim kedua yang dimasukkan menang. Format input fleksibel, tetapi urutan input harus memungkinkan tim mana yang lebih dulu jelas. Misalnya, g1, g2, b1, b2akan diizinkan, tetapi b1, g2, g1, b2tidak mau.

Uji Kasus

Kasus uji akan digunakan trueuntuk kemenangan tim pertama dan falseuntuk kemenangan tim kedua. Input dalam format (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

Sebagai contoh, untuk input (10,8),(11,1), tim 1 mencetak 10 gol dan 8 di belakang, dengan total poin, sementara tim 2 mencetak poin, jadi tim 1 menang .106+81=68116+11=67

Tidak ada input yang akan menjadi draw - perilaku program Anda pada input draw tidak masalah.


Bisakah kita memperluas untuk sepak bola Gaelic dan melemparkan?
TRiG

@TRiG buat pertanyaan Anda sendiri!
Stephen

Saya akan mencoba memikirkan sesuatu yang tidak terlalu dekat.
TRiG

2
@TRiG, ​​GAA akan identik, hanya menggunakan basis-3 bukan basis-6.
Shaggy

Ya @Shaggy, itulah sebabnya saya tidak bisa hanya menyalin pertanyaan ini untuk membuat GAA yang setara. Sesuatu yang serupa. Mungkin termasuk Football Aturan Internasional.
TRiG

Jawaban:


7

Jelly , 3 byte

ḅ6M

Tautan monadik yang menerima daftar daftar bilangan bulat [[g1,b1],[g2,b2]],, yang menghasilkan daftar [1]atau [2].
(Undian akan menghasilkan [1,2])

... Atau pencetakan program lengkap 1atau 2.

Cobalah online! Atau lihat test-suite .

Bagaimana?

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

5

Perakitan CP-1610 ( Intellivision ), 9 DECLEs 1 ≈ 12 byte

Rutin mengambil input dalam R0 ( ), R1 ( ), R2 ( ) dan R3 ( ) dan mengatur bendera tanda jika tim ke-2 menang, atau membersihkannya jika tidak.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 tidak memiliki instruksi multiplikasi dan hanya dapat bergeser 1 atau 2 posisi pada satu waktu, jadi kami menghitung ekspresi berikut sebagai gantinya:

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

Kode uji lengkap

          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

Keluaran

keluaran

tangkapan layar dari jzIntv


1. Sebuah opcode CP-1610 dikodekan dengan nilai 10-bit, yang dikenal sebagai 'DECLE'. Rutin ini panjangnya 9 DECLE.




4

Bahasa Esoterik Fonetik Internasional , 12 byte (bahasa WIP)

6ɪθɪt6ɪθɪtʈo

Output 1untuk benar dan 0salah.

Belum ada juru bahasa TIO, tetapi masih bisa dijalankan dengan mengkloning repositori di atas, dan menelepon python main.py "code here".

TL; DR dari bahasanya adalah bahasa berbasis stack di mana setiap instruksi adalah karakter dari Alfabet Fonetik Internasional .

Dibawa dalam argumen sebagai 4 input dari STDIN, dalam urutan g1, b1, g2, b2. Mungkin golf turun hingga kurang dari 12 byte setelah loop diimplementasikan sepenuhnya.

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ɪ əm nɑːt əˈmjuːzd baɪ ðə hʊd; Namun, setelah pertama-tama, silakan-mulai saja. aɪ ˈstrɒŋli dɪsˈkɜːrɪdʒ ju tu ʌpvoʊt ðɪs ˈænsər.

3

Perl 6 , 13 byte

6+*>*×6+*

Cobalah online!

Mengambil input sebagai 4 bilangan bulat, dan pada dasarnya hanya melakukan seperti yang ditanyakan pertanyaan


3

Cascade , 16 byte

#6&
>
 |/
 +
* &

Cobalah online!

Menggunakan kembali 6*a+blogika yang sama untuk kedua tim kemudian mencetak apakah skor pertama lebih tinggi dari yang lain



3

33 , 22 byte

6OxcOasz6OxcOaclmzh1co

Cobalah online!

Mengambil input sebagai 4 bilangan bulat terbatas, dan mengembalikan 0 untuk kemenangan tim pertama, 1 untuk yang kedua.

Penjelasan:

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 byte jika hasil tidak jelas diizinkan:

6OxcOasz6OxcOaclmo

Akan menampilkan perbedaan skor; hasil positif berarti kemenangan tim pertama, negatif berarti kemenangan tim kedua.



3

brainfuck , 45 38 36 32 29 28 byte

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

Cobalah online!

Terima kasih kepada @ Jo King untuk -8 byte

Input adalah b1, g1, b2, g2 (gol dan di belakang dipertukarkan) Mencetak þ, jika tim 1 menang. Mencetak null, jika tim 2 menang.

kode:

[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

Saya tidak berpikir ini bekerja dengan input lebih dari 10, tetapi solusi yang bagus pula (Akan mencatatnya masih). Mungkin bisa mencoba untuk mengungguli itu nanti :)
Roman Gräf

1
Ya, input lebih besar dari 9 setidaknya sedikit rumit, karena kode hanya menggunakan satu karakter per input. Anda perlu menggunakan karakter ASCII berikutnya ( :;<=>?dll.) Jika Anda ingin memasukkan skor yang lebih tinggi.
Dorian

Apakah "input sebagai kode karakter kecuali null" merupakan opsi? Plus, kedua skor harus sama, ketika bilangan bulat dibagi 256, setidaknya saat Anda menggunakan tio.
Dorian

3

Gores 3.0 17 16 blok, 160 143 byte

Skor berasal dari metode penilaian yang diusulkan di sini

1 blok / 17 byte disimpan berkat @A (atau Uzer_A saat awal) _

Program dalam blok yang lebih baik

Cobalah di Awal

Sebagai 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)

Jawab Sejarah

Program dalam blok

Cukup banyak port jawaban Tong saya.

Cobalah di Awal

Masukan dalam bentuk g1, b1, g2, b2

Dalam sintaks 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)

Sekarang saya tahu apa yang Anda katakan ... mengapa golf di awal?!? Ya menyenangkan. Itu sebabnya. Selain itu, Scratch unik karena tidak sering ditampilkan di sini di CGCC.



2

Bersih , 34 byte

import StdEnv
$a b c d=a*6+b>c*6+d

Cobalah online!

Mendefinisikan $ :: Int Int Int Int -> Booldengan argumen yang diambil seperti$ g1 b1 g2 b2


2

Tong , 10 byte (SBCS)

(2|¿¿6*+)>

Cobalah online!

Sebagai orang Australia, saya menyetujui pertanyaan ini.

Input diambil sebagai:

b1
g1
b2
g2

Dan 0 berarti tim 2 dan 1 berarti tim 1

Dijelaskan

(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 byte

6δβZk

Masukan sebagai daftar bersarang [[g1,b1],[g2,b2]]. Keluaran 0jika tim 1 menang dan 1jika tim 2 menang.

-1 byte terima kasih kepada @Grimy untuk mengingatkan saya tentang δ.

Cobalah secara online atau verifikasi semua kasus uji .

Penjelasan:

Konversi basis yang sewenang-wenang pada daftar bersarang tidak berfungsi tanpa produk luar peta yang eksplisit .

 δβ    # 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 byte

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

0 salah

1 itu benar

Input ke fungsi adalah (g1, b1, g2, b2)

Berkat Doorknob untuk -5 byte

Cobalah online!


3
Anda dapat menghapus spasi setelahnya return, tetapi Anda juga dapat menyalahgunakan detail implementasi untuk 26 byte .
Gagang Pintu

2

Brain-Flak , 62 byte

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

Keluaran 1jika tim pertama kalah, dan 0jika mereka menang (atau diikat).

Cobalah online!

# 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

Puitis , 751 byte

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

Cobalah online!

Wah, ini yang sulit untuk ditulis.

Input dalam format berikut:

g1
b1
g2
b2

Ini memberikan kode kesalahan "IF / EIF tidak cocok" jika tim pertama menang, dan "EOF tak terduga" jika tim kedua menang. (Kebetulan, dasi dianggap sebagai kemenangan tim kedua).


1

Retina 0.8.2 , 34 byte

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

Cobalah online! Tautan termasuk kasus uji. Keluaran 1jika tim kedua tidak menang dan 0jika itu terjadi. Penjelasan:

\d+
$*

Konversikan input ke unary.

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

Di setiap pasangan, gandakan angka pertama dengan enam dan tambahkan yang kedua.

(1*);\1$

Periksa apakah angka kedua lebih besar dari yang pertama. Atau, Anda bisa menggunakan ^(1*);\1yang akan dihasilkan 0jika tim pertama menang dan 1jika tidak.



1

ABC-assembler , 111 74 byte

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

Cobalah online!

Itu tidak menggunakan apa pun di atas operasi stack paling dasar:

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

Ruang putih, 115 byte

[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]

Huruf S(spasi), T(tab), dan N(baris baru) ditambahkan hanya sebagai penyorotan.
[..._some_action]ditambahkan sebagai penjelasan saja.

Mencetak 0jika tim 1 menang dan 1(bisa juga -1untuk byte-count yang sama) jika tim 2 menang.

Cobalah online (dengan spasi, tab, dan hanya baris baru).

Penjelasan dalam pseudo-code:

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

Ruby , 21 byte

->a,b,x,y{b-y>6*x-=a}

Cobalah online!

Bekerja di sekitar solusi yang membosankan, menyelamatkan satu byte dan menyebutnya sehari.


1

SimpleTemplate , 84 byte

Hanya pendekatan sederhana "kalikan dengan 6, jumlah dan bandingkan", kecuali dukungan matematika sangat kurang.

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

Keluaran 0untuk false dan 01true.


Tidak Disatukan:

{@// 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}
{@/}

Semuanya harus jelas dengan komentar ( {@// ... }) yang ditambahkan.


1

Japt , 6 byte

Input sebagai 2D-array. Output 1untuk tim 1, 0untuk seri atau -1untuk tim 2.

mì6 rg

Cobalah

mì6 rg     :Implicit input of array
m          :Map
 ì6        :  Convert from base-6 digit array
    r      :Reduce by
     g     :  Sign of difference

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.