火星人一直怀着极大的好奇心从太空观察澳大利亚统治足球火柴。他们完全爱上了这场比赛,因此受到鼓舞,开始了他们自己的足球联赛。然而,作为一个愚蠢的生物,他们无法理解这个得分系统。
我们知道,在澳大利亚规则中,一个进球等于6分(G=6),落后等于1分(B=1)。火星人足够聪明地计算出有两种类型的分数,但他们没有足够聪明的意识到,他们可以通过分析比赛结果来推断出这些分数的积分值。国际奥林匹斯蒙斯委员会(International奥林usMons Committee )没有被吓倒,它规定,在所有的火星人足球比赛中,球门和后部的得分值(即G和B)将被随机选择。
当G = 6和B = 1 (在澳大利亚规则中)时,正好有四个整数对( [g,b] ),这样一个具有g目标和b后面的团队就有一个gb积分。我们将把满足gG+bB=gb的[g,b]对称为完美分数。澳大利亚规则中的四个完美分数是
、[3,9]、[4,8]和[7,7].
给定两个严格的正整数G和B,它们代表火星规则足球比赛中的目标和后面的点数,编写一个程序或函数来确定该比赛的所有可能的完美分数。规则:
这是密码-高尔夫:每种语言中最短的提交(以字节为单位)获胜。
输入->输出
[6, 1] -> [[2, 12], [3, 9], [4, 8], [7, 7]]
[6, 2] -> [[3, 18], [4, 12], [5, 10], [6, 9], [8, 8], [14, 7]]
[1, 1] -> [[2, 2]]
[1, 6] -> [[7, 7], [8, 4], [9, 3], [12, 2]]
[7, 1] -> [[2, 14], [8, 8]]
[7, 5] -> [[6, 42], [10, 14], [12, 12], [40, 8]]
[13, 8] -> [[9, 117], [10, 65], [12, 39], [16, 26], [21, 21], [34, 17], [60, 15], [112, 14]]*这个问题从来没有在地球上发生过。
发布于 2020-05-08 09:17:58
>PLãʒ*OyPQ> # Increase both values in the (implicit) input-pair by 1
P # And take the product of those
L # Pop and push a list in the range [1, (G+1)*(B+1)]
ã # Create all possible pairs by taking the cartesian product with itself
ʒ # Filter those pairs [g,b] by:
* # Multiply it with the (implicit) input-pair at the same positions:
# [G,B] * [g,b] will result in [Gg,Bb]
O # Sum those: Gg+Bb
yP # Take the product of the current pair: gb
Q # And check that both values are the same: Gg+Bb == gb
# (after which the result is output implicitly)最后一个测试用例不再使用(G+1)\times(B+1)的上限而不是我的初始(2^G+2^B) (字节计数保持不变)。一定要为提供这个数学上界的@SurculoseSputumPython的答案投票。
发布于 2020-05-08 15:15:46
发布于 2020-05-08 20:49:16
fq*FTs*VTQ^Sy*FQ2端口@KevinCruijssen的05AB1E答案,经过一些修改,使其更适合于Pyth。
尤其是…的上界
来自@SurculoseSputum的回答被用来推导出:
fq*FTs*VTQ^Sy*FQ2
y*FQ Multiply G and B, then multiply by 2
S Range( 1, 2*GB )
^ 2 Cartesian product of that range with itself
f Filter for elements (g,b) satisfying:
*FT g*b
q equals
s*VTQ G*g + B*b奖金:@xnor的Python回答端口(21个字节)
AQVSJ*GHI!%JN+NH+G/JN在两行上输出每对g,b。我觉得这个解决方案很有趣,因为它只包含大写字母和运算符。
https://codegolf.stackexchange.com/questions/204469
复制相似问题