使合同桥非常有趣的事情之一是它非常复杂的“人工”元游戏。这种手的得分系统只是其中的一小部分。
桥牌是一种纸牌游戏。每个玩家得到13张牌的手,游戏从出价开始。竞标决定了游戏的其余部分,因此也是关键的部分。为了确保你和你的合作伙伴不出价过高(或过低),这个人工评分系统是为了告诉你你的手有多好。
这是一只手的样本:
S:KQT5
H:J72
D:965
C:AK8
S,H,D,C代表西服(黑桃,红桃,钻石和球棒),其余的是那些套装中的牌。所以这只手有黑桃皇后(Q),黑桃王(K),黑桃十(T),黑桃五,心杰克,心七,等等。
评分系统的工作方式如下:
因此,上面的手有13点。
给定上述格式的桥牌手,计算出手有多少个点。西服将永远列在黑桃,红心,钻石和俱乐部,和牌将始终按顺序A,K,Q,J,T,9-2。
S:KQT5
H:J72
D:965
C:AK8
\-> 13
S:AKQT6
H:54
D:J83
C:732
\-> 12
S:
H:KQT8754
D:A86
C:432
\-> 15
S:9876
H:843
D:652
C:432
\-> 0
S:AKQT5
H:AQJ6
D:Q3
C:AK
\-> 28
这是密码-高尔夫,所以以字节为单位的最短代码将获胜。
发布于 2018-03-05 15:32:02
½Γ}♣▓="pì∩û╨▐M↨}╚-
到目前为止,最短的答案是打败了果冻(尽管我希望很快会被打败.)
使用解压版本来解释。
LZF{"JQKA"I^+i5-:++F5+
L Collect input in a list (if this is not needed, we can yet save another byte)
Z Put a zero under the top of the stack, used as the accumulator
F Loop for every suit
{ F Calculate the "score" for the string describing the suit
"JQKA"I^ Find the 1-based index of current character in "JQKA", 0 for not found
+ Add to the accumulator
i5-:+ Subtract 5 from the current 0-based index, and take the sign
+ Add to the accumulator
5+ Add 5 extra points for each suit
这是通过翻译实现的。
至
这样就可以利用signum函数的性质。
通过这样做,我们可以避免显式处理卡数节省了几个字节。
发布于 2022-02-03 14:51:08
k=input()
l=k.split("\n")
print(4*k.count("A")+3*k.count("K")+2*k.count("Q")+k.count("J")+sum([max(len(m)-6,0) for m in l])
对于这些目的,.count
是一个很好的函数,我不使用[2:]
作为长度之和,因为我只需减去2。
总的来说,这个答案只是简单的方式。
https://codegolf.stackexchange.com/questions/71968
复制相似问题