首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >中国心脏评分

中国心脏评分
EN

Code Golf用户
提问于 2018-10-07 04:41:23
回答 1查看 214关注 0票数 6

中国红心,也被称为宫朱(拱猪,追逐猪),是一个变化的心游戏。这是一个4人纸牌游戏,目的是获得最高的分数。你可以在维基百科上读到更多关于它的内容。这一次,我们要实现一个程序(满或函数)来计算得分。

评分

在这一轮比赛中,发挥最高价值牌的球员赢得了这轮比赛中的所有牌。比赛结束后,分数由这些卡片计算出来:

  • ♥2,♥3,♥4各0分;
  • ♥5,♥6,♥7,♥8,♥9,♥10 = -10点;
  • ♥J = -20点;
  • ♥Q = -30点;
  • ♥K = -40点;
  • ♥A =-50分;
  • ♠Q = -100点;♠Q称为猪(猪)
  • ♦J = +100点;♦J称为山羊/绵羊(羊)
  • 沿x2 10= +50点,♣与其他卡一起使用;♣10称为双/变压器(变压器)

特别规则:

  • 如果一个玩家只收集♣10,那么它就值+50分。但是,如果玩家将♣10与任何其他非零分卡一起收集,则会使其他牌的积分加倍。
  • 如果一名球员收集所有的心,♥2 ~♥A (全红),♥2~♥A )计算为+200分,而不是-200分。
  • 如果一个球员收集所有的心加上♠Q和♦J,♠Q是+100分,而不是-100分。

评分规则可能因地而异。请注意,此挑战不包括"sell“(卖/明牌),这将使其更加复杂。

输入/输出

输入将是一个字符串(或一个字符列表)。

  • 23456789TJQKA for ♥2 ~ ♥A
  • P for ♠Q
  • G for ♦J
  • D for ♣10

从输入中忽略所有其他卡片。你不会把角色从这个名单上拿出来的。在这个挑战中,我们使用了一副牌(52张)。所以,输入中不会有重复的卡片。

输出为整数,这些卡片的得分。

示例和测试用例

代码语言:javascript
复制
Input            Output
234               0
56789T           -60
T                -10
J                -20
Q                -30
K                -40
A                -50
TJQK             -100
P                -100
G                 100
TJQKP            -200
PG                0
2468TQKG          0
D                 50
234D              50
GD                200
PGD               0
TJQKGD            0
23456789TJQK     -150
3456789TJQKA     -200
23456789TJQKA     200
23456789TJQKAP    100
23456789TJQKAG    300
23456789TJQKAPG   400
2356789TJQKAPD   -600
23456789TJQKAPGD  800
DP2A45968TJK7QG3  800
DP24             -200
G2P6D4           -20

规则

  • 这是密码-高尔夫,以字节为单位的最短代码获胜。
  • 标准漏洞是禁止的。

注:得分规则的一些细节可能因比赛而异。有些规则允许所有的心加♠Q计数为+300分,无论♦J是否被收集。有些规则将♥2、♥3、♥4应用于♣10,而收集♥2、♥3、♥4和♣10则为0而不是+50分。然而,你的答案必须遵循这篇文章中描述的规则。

EN

回答 1

Code Golf用户

发布于 2018-10-07 15:22:54

木炭,107个字节

代码语言:javascript
复制
≔”A↘⊟T“{»aS¡I⁷”ζ≔×χΣΦ”)⊟≡GO∧”№θ§ζκηF¬⌊E…⮌ζ¹³№θι≦±ηF№θG≧⁺¹⁰⁰η¿⌊Eζ№θι≧⁺¹⁰⁰ηF№θP≧⁻¹⁰⁰ηF№θD¿Φ…ζ¹²№θκ≧ײη≧⁺⁵⁰ηIη

在网上试试!链接是详细的代码版本。解释:

代码语言:javascript
复制
≔”A↘⊟T“{»aS¡I⁷”ζ

保存字符串PGAKQJT98765432以供以后使用。特别是,这条线以13颗心结束,以12张得分卡开始。

代码语言:javascript
复制
≔×χΣΦ”)⊟≡GO∧”№θ§ζκη

在字符串005432111111上循环。将与卡对应的数字从显示在输入中的保存字符串中保存下来,然后取和并乘以10。

代码语言:javascript
复制
F¬⌊E…⮌ζ¹³№θι≦±η

如果至少有一颗心没有出现在输入中,那么否定总数。

代码语言:javascript
复制
F№θG≧⁺¹⁰⁰η

每只山羊加100只羊。

代码语言:javascript
复制
¿⌊Eζ№θι≧⁺¹⁰⁰η

如果山羊和所有的心都在,那就加100给猪,

代码语言:javascript
复制
F№θP≧⁻¹⁰⁰η

否则,每只猪减去100。

代码语言:javascript
复制
F№θD¿Φ…ζ¹²№θκ≧ײη≧⁺⁵⁰η

对于每个变压器,如果任何得分卡的礼物,然后加倍的总数,否则加50。

代码语言:javascript
复制
Iη

输出总数。

票数 1
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/173570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档