オーストラリアのサッカーの試合の勝者を決定する


12

オーストラリアのフットボールでは、ゴールは6ポイントの価値があり、背後は1ポイントの価値があります。スコアには、目標と背後の数、および合計スコアが含まれる場合があります。2つの異なるチームの目標と背後の数を考慮して、ゲームに勝ったチームを決定します。

g1, b1, g2, b2入力として4つの整数を受け取り、入力された最初のチームまたは2番目のチームが勝ったかどうかについて2つの異なる値を出力します。入力形式は柔軟ですが、入力順序はどのチームが最初であるかを明確にする必要があります。たとえば、g1, g2, b1, b2許可されますが、許可されb1, g2, g1, b2ません。

テストケース

テストケースはtrue、最初のチームの勝利とfalse2番目のチームの勝利に使用します。入力の形式はです(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は同一で、ベース6ではなくベース3を使用します。
シャギー

ええ、@ Shaggy。だから、この質問をコピーして同等のGAAの質問を作成することはできませんでした。似たような。多分、国際ルールフットボールを含む。
TRiG

回答:


7

ゼリー、3 バイト

ḅ6M

整数のリストのリストを受け取る単項リンク[[g1,b1],[g2,b2]]、リスト[1]またはを生成します[2]
(引き分けは[1,2]

...または完全なプログラム印刷1または2

オンラインでお試しください!または、テストスイートを参照してください。

どうやって?

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

5

CP-1610アセンブリ(インテリ)、9 DECLEs 1つの ≈12バイト

R0g1)、R1b1)、R2g2)、およびR3b2)で入力を受け取り、2番目のチームが勝った場合にサインフラグを設定するか、そうでなければクリアするルーチン。

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オペコードは、「DECLE」として知られる10ビット値でエンコードされます。このルーチンの長さは9 DECLEです。




4

国際表音難解言語、12バイト(WIP言語)

6ɪθɪt6ɪθɪtʈo

1trueおよび0falseの出力。

TIOインタープリターはまだありませんが、上記のリポジトリーを複製し、を呼び出すことにより実行可能ですpython main.py "code here"

言語のTL; DRは、すべての命令が国際音声文字の文字であるスタックベースの言語であるということです。

引数をSTDINからの4つの入力として順番に受け取ります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
クーシエル・ジュリエット!
-roblogic

aɪəmnɑːtəˈmjuːzdbaɪðəhʊd; bɪˈniːθɪtɪzˈsɪmplidʒʌstəˈnʌðərstæ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、2番目のチームが1の場合は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

スコアの差を出力します。肯定的な結果は最初のチームが勝つことを意味し、否定的な結果は2番目のチームが勝つことを意味します。



3

brainfuck45 38 36 32 29 28バイト

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

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

-8バイトの@Jo Kingに感謝

入力はb1、g1、b2、g2です(目標と背後は交換されます)チーム1が勝った場合、ifを印刷します。チーム2が勝った場合、nullを出力します。

コード:

[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以上の入力で機能するとは思わないが、とにかく素晴らしい解決策です。(まだ注意してください)。後でアウトゴルフしようとするかもしれません:)
ローマン

1
はい、コードは入力ごとに1文字しか使用しないため、9を超える入力は少なくとも少し注意が必要です。:;<=>?より高いスコアを入力する場合は、次のASCII文字(など)を使用する必要があります。
ドリアン

「ヌル以外の文字コードとして入力する」オプションはありますか?さらに、少なくともtioを使用する場合、256で整数で除算する場合、両方のスコアが等しくなければなりません。
ドリアン

3

スクラッチ3.0 17 16ブロック、160 143バイト

スコアはここで提案されたスコアリング方法から得られます

@A(またはUzer_Aのスクラッチ)のおかげで1ブロック/ 17バイトが節約されました _

より良いブロックでプログラムする

スクラッチで試してみてください

スクラッチブロックとして

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)

回答履歴

ブロック単位のプログラム

樽の答えのかなりの部分です。

スクラッチで試してみてください

入力の形式は g1, b1, g2, b2

Scratchblocks構文で

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)

今、私はあなたが言っていることを知っています... なぜ最初からゴルフをするのですか?!? まあ、それは楽しいです。それが理由です。また、スクラッチは、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

05AB1E6 5 バイト

6δβZk

ネストされたリストとして入力します[[g1,b1],[g2,b2]]0チーム1が勝ち、1チーム2が勝った場合に出力します。

について思い出させてくれた@Grimyに -1バイト感謝しδます。

オンラインそれを試してみたり、すべてのテストケースを確認してください

説明:

ネストされたリストの任意のベース変換は、明示的なマップ外積なしでは機能しません。

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

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

Poetic、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

これにより、最初のチームが勝った場合は「Mismatched IF / EIF」、2番目のチームが勝った場合は「Unexpected EOF」というエラーコードが表示されます。(ちなみに、同点は2番目のチームの勝利として扱われます)。


1

Retina 0.8.2、34バイト

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

オンラインでお試しください!リンクにはテストケースが含まれます。12番目のチームが勝てず、勝った場合に出力され0ます。説明:

\d+
$*

入力を単項に変換します。

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

各ペアで、最初の数値に6を掛け、2番目の数値を加算します。

(1*);\1$

2番目の数値が最初の数値より大きいかどうかを確認します。あるいは、最初のチームが勝った場合とそうでない場合の^(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)

1つの小さな注意:入力は 0、それを使用して、入力を後続の入力のヒープアドレスとして再利用します。負の入力を持つことができる課題では0、ヒープアドレスを負にすることはできないため、ヒープアドレスとして再プッシュする必要があります。



1

SimpleTemplate、84バイト

数学のサポートが非常に不足していることを除いて、単純な「6で乗算、合計して比較」というアプローチだけです。

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

0falseおよび01trueの出力。


ゴルフをしていない:

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