Avustralya Futbolu Maçı Kazananını Belirle


13

Avustralya Futbolu'nda goller 6 puan, behinds 1 puan değerindedir. Skorlar, toplam skorun yanı sıra gol ve beher sayısını da içerebilir. İki farklı takım için gol ve behind sayısı göz önüne alındığında, hangi takımın oyunu kazandığını belirleyin.

g1, b1, g2, b2Giriş olarak dört tamsayı alın ve girilen ilk takımın mı yoksa ikinci takımın mı kazanacağı konusunda iki farklı değer verin. Girdi formatı esnektir, ancak girdi sırası hangi takımın ilk sırada olduğunu açıkça belirtmelidir. Örneğin, g1, g2, b1, b2buna izin verilirdi, ancak izin verilmezdi b1, g2, g1, b2.

Test Durumları

Test senaryoları trueilk takımın kazanması ve falseikinci takımın kazanması için kullanılacaktır. Girdi biçimindedir (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

Örnek olarak, girdi için (10,8),(11,1)takım 1 toplam puan alırken 10 gol ve 8 geride kaldı, takım 2 puan kazandı, böylece takım 1 kazandı .106+81=68116+11=67

Hiçbir girdi berabere olmaz - programınızın çizim girdisindeki davranışı önemli değildir.


Gal futbolu ve hurling için uzayabilir miyiz?
TRiG

@TRiG kendi sorunuzu yapın!
Stephen

Çok yakın olmayan bir şey düşünmeye çalışacağım.
TRiG

2
@TRiG, ​​GAA, base-6 yerine base-3 kullanıldığında aynı olur.
Shaggy

Evet @Shaggy, bu yüzden bu soruyu sadece eşdeğer bir GAA yapmak için kopyalayamadım. Benzer bir şey. Belki Uluslararası Kurallar Futbol dahil.
TRiG

Yanıtlar:


7

Jöle , 3 bayt

ḅ6M

Tamsayılar listelerin bir listesini kabul Bir monadic Link [[g1,b1],[g2,b2]], bir liste verir ki [1]ya [2].
(Çekiliş elde edilir [1,2])

... Ya da tam bir program yazdırma 1veya 2.

Çevrimiçi deneyin! Veya test takımına bakın .

Nasıl?

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

5

CP-1610 montajı ( Intellivision ), 9 DECLEs 1 ≈ 12 bayt

Rutin bir alma giriş R0 ( g1 ), R1 ( b1 ), R2 ( g2 ) ve R3 ( b2 ) ve 2 takım kazanırsa işaret bayrağı ayarlayarak, veya başka bir şekilde temizleyerek.

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'un çarpma talimatı yoktur ve bir seferde yalnızca 1 veya 2 konuma kayabilir, bu nedenle aşağıdaki ifadeyi hesaplarız:

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

Tam test kodu

          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

Çıktı

çıktı

ekran görüntüsü jzIntv


1. Bir CP-1610 op kodu, 'DECLE' olarak bilinen 10 bitlik bir değerle kodlanmıştır. Bu rutin 9 DECLE uzunluğundadır.




4

Uluslararası Fonetik Ezoterik Dil , 12 bayt (WIP dili)

6ɪθɪt6ɪθɪtʈo

1Doğru ve 0yanlış için çıktılar .

Henüz TIO yorumlayıcısı yok, ancak yukarıdaki havuzu klonlayarak ve arayarak çalıştırılabilir python main.py "code here".

Dilin TL; DR'si, her komutun Uluslararası Fonetik Alfabeden bir karakter olduğu yığın tabanlı bir dildir .

Bağımsız değişkenleri sırayla STDIN'den 4 girdi olarak alır g1, b1, g2, b2. Döngüler tam olarak uygulandıktan sonra 12 bayttan daha azına golf yapılabilir.

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; 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 bayt

6OxcOasz6OxcOaclmzh1co

Çevrimiçi deneyin!

Girdiyi 4 sınırlı tamsayı olarak alır ve ilk takım kazanan için 0, ikinci için 1 döndürür.

Açıklama:

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

Belirsiz sonuçlara izin verilirse -4 bayt:

6OxcOasz6OxcOaclmo

Puan farkı çıktı olacak; olumlu sonuçlar ilk takımın kazanması, negatif ise ikinci takımın kazanması anlamına gelir.



3

brainfuck , 45 38 36 32 29 28 bayt

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

Çevrimiçi deneyin!

-8 bayt için @Jo King'e teşekkürler

Girdi b1, g1, b2, g2'dir (hedefler ve behindeler değiştirilir) 1. takım kazanırsa þ basar. 2. takım kazanırsa boş yazar.

kod:

[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

Bunun 10'dan büyük girdilerle çalıştığını sanmıyorum, ama yine de harika bir çözüm. (Yine de not edin). Outgolf that later denemek verebilir :)
Roman Gräf

1
Evet, 9'dan büyük girişler en azından biraz zor, çünkü kod giriş başına yalnızca bir karakter kullanıyor. Daha :;<=>?yüksek puanlar girmek istiyorsanız bir sonraki ASCII karakterlerini ( vb.) Kullanmanız gerekir .
Dorian

"Null dışında karakter kodu olarak giriş" bir seçenek midir? Ayrıca, en azından tio kullandığınızda, tamsayıya bölündüğünde her iki puan da eşit olmalıdır.
Dorian

3

3.0 Kazı 17 16 blok, 160 143 bayt

Puan, burada önerilen puanlama yönteminden gelir

@A (veya sıfırdan Uzer_A) sayesinde 1 blok / 17 bayt kaydedildi _

Daha iyi bloklar halinde programlayın

Scratch'ta deneyin

Scratchblocks olarak :

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)

Yanıt Geçmişi

Bloklar halinde program

Keg cevabımın hemen hemen bir limanı.

Scratch'ta deneyin

Girdi şu biçimdedir: g1, b1, g2, b2

Scratchblocks sözdiziminde

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)

Şimdi ne dediğini biliyorum ... neden sıfırdan golf?!? Eğlenceli. Bu yüzden. Ayrıca, Scratch, burada CGCC'de çok sık yer almaması nedeniyle benzersizdir.




2

Fıçı , 10 bayt (SBCS)

(2|¿¿6*+)>

Çevrimiçi deneyin!

Avustralyalı olarak bu soruyu onaylıyorum.

Girdi şu şekilde alınır:

b1
g1
b2
g2

Ve 0 takım 2 ve 1 takım 1 anlamına gelir

Açıklaması

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

6δβZk

İç içe liste olarak giriş yapın [[g1,b1],[g2,b2]]. Çıktı 0ekibi 1 galibiyet ve eğer 1takım 2 galibiyet eğer.

Bana hatırlattığı için @Grimy'ye -1 bayt teşekkürler δ.

Çevrimiçi deneyin veya tüm test senaryolarını doğrulayın .

Açıklama:

Görünüşe göre yuvalanmış listelerde keyfi temel dönüşüm, açık bir harita dış ürünü olmadan çalışmaz .

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

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

0 yanlış

1 doğrudur

İşlev girişi (g1, b1, g2, b2)

-5 bayt için Doorknob'a teşekkürler

Çevrimiçi deneyin!


3
Sonraki alanı kaldırabilirsiniz return, ancak 26 bayt için bir uygulama ayrıntısını da kötüye kullanabilirsiniz .
Kapı tokmağı

2

Brain-Flak , 62 bayt

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

Çıkışlar 1ilk takım kaybederse ve 0onlar kazandı (veya bağlı) eğer.

Çevrimiçi deneyin!

# 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

Şiirsel , 751 bayt

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

Çevrimiçi deneyin!

Evlat, yazmak zor biriydi.

Girdi şu biçimde:

g1
b1
g2
b2

Bu, ilk takım kazanırsa "Eşleşmeyen IF / EIF" hata kodunu ve ikinci takım kazanırsa "Beklenmeyen EOF" hata kodunu verir. (Bu arada, beraberlik ikinci takım olarak değerlendirilir).


1

Retina 0.8.2 , 34 bayt

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

Çevrimiçi deneyin! Bağlantı, test senaryolarını içerir. Çıkışlar 1ikinci takımın kazanması etmezse ve 0bu olursa. Açıklama:

\d+
$*

Girişi tekli olarak dönüştürün.

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

Her çiftte ilk sayıyı altı ile çarpın ve ikincisini ekleyin.

(1*);\1$

İkinci sayının birinciden büyük olup olmadığını kontrol edin. Alternatif olarak, ilk takım kazanırsa ve kazanmazsa ^(1*);\1çıkacak olanı kullanabilirsiniz .01



1

ABC birleştirici , 111 74 bayt

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

Çevrimiçi deneyin!

En temel yığın işlemlerinin üzerinde hiçbir şey kullanmaz:

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

Boşluk, 115 bayt

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

Harfler S(boşluk), T(sekme) ve N(yeni satır) yalnızca vurgulama olarak eklendi.
[..._some_action]yalnızca açıklama olarak eklendi.

0Takım 1 kazanırsa ve aynı takım bayt için 1de olabilir) yazdırır -1.

Çevrimiçi deneyin (yalnızca ham alanlar, sekmeler ve yeni satırlarla).

Sahte kodda açıklama:

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 bayt

Sadece basit "6 ile çarp, toplamı ve karşılaştır" yaklaşımı, ancak matematik desteği aşırı eksik.

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

0Yanlış ve 01doğru çıktılar .


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

{@// ... }Eklenen yorumlar ( ) ile her şey açık olmalıdır .


1

Japt , 6 bayt

2D dizi olarak giriş yapın. 1Takım 1, 0beraberlik veya -1takım 2 için çıktılar .

mì6 rg

Dene

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.