确定澳大利亚足球比赛的获胜者


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个屁股,共计106+81=68点,而队2得分116+11=67点,这样球队1胜。

没有输入将成为绘图-程序在绘图输入上的行为无关紧要。


我们可以扩展盖尔足球和投掷吗?
TRiG

@TRiG提出您自己的问题!
斯蒂芬

我会尝试考虑不太紧密的地方。
TRiG

2
@ TRiG,GAA相同,只是使用base-3而不是base-6。
毛茸茸的

是的,@ Shaggy,这就是为什么我不能只复制这个问题来制作一个等效的GAA。相似的东西。也许包括国际足球规则。
TRiG

Answers:


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字节

例行程序输入R0g1),R1b1),R2g2)和R3b2)的输入,并在第二队获胜时设置符号标志,否则将其清除。

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操作码使用10位值(称为“ DECLE”)进行编码。该例程的长度为9 DECLE。




4

国际语音神秘语言,12字节(WIP语言)

6ɪθɪt6ɪθɪtʈo

输出1为true和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
kuːlˈlæŋgwɪʤ,djuːd!
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,第二个团队则返回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

brainfuck45 38 36 32 29 28字节

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

在线尝试!

感谢@Jo King -8个字节

输入为b1,g1,b2,g2(交换了目标和后代)如果第1队获胜,则打印þ。如果第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的输入,但无论如何都是一个很好的解决方案。(仍会记下来)。可能会给一个尝试outgolf后来:)
罗马格拉夫

1
是的,大于9的输入至少有点棘手,因为该代码每个输入仅使用一个字符。:;<=>?如果要输入更高的分数,则需要使用下一个ASCII字符(等)。
多里安

是否可以选择“输入为空字符以外的字符代码”?另外,至少在使用tio时,两个分数必须相等,即被256除以整数。
多里安

3

划伤3.0 17 16个块,160个 143字节

分数来自建议的计分法在这里

多亏@A(或Uzer_A从头开始)

更好地编程

在Scratch上尝试

作为便签本

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)

回答历史

分块编程

我的Keg回答几乎是全部。

在Scratch上尝试

输入形式为 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)

现在我知道您在说什么... 为什么要从头开始打高尔夫球?!? 好吧,很有趣。这就是为什么。另外,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

05AB1E6 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

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+
$*

将输入转换为一元。

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

在每对中,将第一个数字乘以6,然后加上第二个。

(1*);\1$

检查第二个数字是否大于第一个。另外,如果一线队获胜,如果没有,则可以使用^(1*);\1哪个输出。01



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使用相同的字节数)。

在线尝试(仅使用空格,制表符和换行符)。

伪代码中的解释:

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,相加并比较”的方法。

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

输出0为false和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}
{@/}

加上注释({@// ... }),一切都应该清楚。


1

Japt,6 个字节

输入为二维数组。第11队,0平局或第-12 队的输出。

mì6 rg

尝试一下

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.