- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或交互。
我喜欢这样的挑战,我希望尽快提交我的答案。
哪位玩家拥有最好的 7 张牌?
给定 9 张牌的无序列表(用空格分隔),找出哪个玩家的牌手最好。 Here is a list of poker hand rankings .示例输入:
2C 5H AS KS 2D 4D QD KH 3S
(ie: [[2C 5H] [AS KS] [2D 4D QD KH 3S]])
2C 5H AS KS 2D 4D QD KH 3S
(ie: [[2C 5H] [AS KS] [2D 4D QD KH 3S]])
Player 2 wins this hand. Player 1 has a pair of 2's, player 2 has a pair of kings.
5S 6S 8H 9D 7S 8S JH TS 2H
(ie: [[5S 6S] [8H 9D] [7S 8S JH TS 2H]])
Player 1 wins this hand Player 1 has a flush, player 2 has a straight.
2S 2H AC AS 2C AH 9H TS 2D
(ie: [[2S 2H] [AC AS] [2C AH 9H TS 2D]])
Player 1 wins this hand. Player 1 has quads, player 2 has a full house
5S 6S 2D 4D 9S AS KD JC 9D
(ie: [[5S 6S] [2D 4D] [9S AS KD JC 9D]])
A draw. Both players have Ace high.
1: 45
2: 32
D: 12
最佳答案
Perl,414 398 370/458 344/416 字符
换行不重要。
%M=map{$_,$Z++}0..9,T,J,Q,K,A;sub N{/.$/;$M{$`}.$&}
sub B{$s=@p=();
for$m(@_){$m-$_||($s+=2,++$p[$m])for@_}
@_=sort{$p[$b]-$p[$a]||$b-$a}@_;
$s=23 if$s<11&&($_[0]-$_[4]<5||$_[0]-$_[1]>8&&push@_,shift);
"@_"=~/.$/;$s+=14*(4<grep/$&/,@_);
$s=100*$s+$_ for@_;$s}
++$X{B((@c=map{N}split)[0..4])<=>B(@c[5..9])}for<>;
printf"1: %d\n2: %d\nD: %d\n",@X{1,-1,0}
N
可以转换每张卡片,使其具有数值。对于非人脸牌,这是一个简单的映射(5H ==> 5H),但它确实转换了人脸牌(KC => 13C,AD => 14D)。
%X
.解析完所有输入后,
%X
包含玩家 1 获胜、玩家 2 获胜或平局的手数。
for$m(@_){$m-$_||($s+=2,++$p[$m])for@_}
$s
由两个。请注意,我们最终会将每张卡片与其自身进行比较,因此
$s
至少为 10 和
$p[$x]
每张卡至少有一个
$x
.如果手牌包含三张,那么这三张牌将与另外两张牌匹配——这就像这三张牌中有 9 次匹配,“分数”至少为 18。
@_=sort{$p[$b]-$p[$a]||$b-$a}@_;
$s=23 if$s<11&&($_[0]-$_[4]<5||$_[0]-$_[1]>8&&push@_,shift);
$s<11
表示仅找到 5 个“对子”——每张与自己匹配的牌)并且 (1) 最高牌的值正好是 4大于最低牌的值(value) (
$_[0]-$_[4]==4
),或 (2) 最高值(value)的牌是 A,次高的牌是 5 (
$_[0]-$_[1]==9
),这意味着手牌是 A-2-3 -4-5 直。在后一种情况下,A 现在是手中最不值钱的牌,所以我们操纵
@_
反射(reflect)这一点(
push@_,shift
)
"@_"=~/.$/;$s+=14*(4<grep/$&/,@_);
"@_"=~/.$/
)具有设置
$&
的副作用。到手上最后一张牌的最后一个字符(花色)。当且仅当
4<grep/$&/,@_
的所有元素时,最终表达式 (
@_
) 才会为真具有相同的最后一个字符。
$s=100*$s+$_ for@_;$s}
Hand Score
---------- ------
High card 10 (each card matches itself for two points)
One pair 14 (2 additional matches)
Two pair 18 (4 additional matches)
Three of a kind 22 (6 additional matches)
Straight 23 (no pair, but 23 points for straight)
Flush 24 (no pair, but 14 additional points for the flush)
Full house 26 (8 additional matches)
4 of a kind 34 (12 additional matches)
Straight flush 37 (23 + 14 points)
%M=map{$_,$Z++}0..9,T,J,Q,K,A;sub N{/./;$M{$&}.$'}
sub A{my$I;
for$k(0..41){@d=@_;splice@d,$_,1for$k%7,$k/7;$s=@p=();
for$m(grep$_=N,@d){$m-$_||($s+=2,$p[$m]++)for@d}
@d=sort{$p[$b]-$p[$a]||$b-$a}@d;
$s=23 if$s<11&&($d[0]-$d[4]<5||$d[0]-$d[1]>8&&push@d,shift@d);
"@d"=~/.$/;$s+=14*(4<grep/$&/,@d);
$s=100*$s+$_ for@d;
$I=$s if$s>$I}$I}
++$X{A((@c=split)[0,1,4..8])<=>A(@c[2..8])}for<>;
printf"1: %d\n2: %d\nD: %d\n",@X{1,-1,0}
关于language-agnostic - Code Golf : Who has the best poker hand?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3364869/
我试图理解 java.util.concurrent.locks 库,并希望实现两个通过列表运行的线程,而第二个线程不应超过(领先)第一个线程。具体来说,我想实现手动锁定。 我写了下面的代码,但不起作
我正在寻找 Adobe Reader 中的张开的手/闭合的手 鼠标光标。他们在哪里?如果它们是非标准的,我用 C# 创建它们的最简单方法是什么? 最佳答案 是的,它们是非标准的。您只需要四处搜索,
我有这些警告,但我不知道如何解决它们。 warning: left-hand operand of comma has no effect warning: right-hand operand of
我在网站上寻求帮助,但仍然找不到此问题的答案。 这是代码: import java.util.Scanner; public class Player { private Card[] hand; p
当我尝试这样做时出现错误 friend std::ostream& operator<<(std::ostream& os, const hand& obj) { return obj.sho
我之前没有学过javascript,完全不知道自己该怎么做,因为我只是跟着别人的项目,希望有人能告诉我如何修改这些错误的地方。谢谢T_T 最佳答案 改变 function aniSprite (col
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 7 年前。 Improve t
题目地址:https://leetcode.com/problems/hand-of-straights/description/ 题目描述 Alice has a hand of cards,
我有一个包含几个变量的循环;其中一个在每一步递增。然而,有时,这个变量可能会被重置为 0。因此我可以写: (loop with z = 0 ... do (progn
在 this link ,期望的结果是当光标悬停在图例上时,鼠标不会变为手形。我怎样才能实现它? 我不确定,但是这样的东西有用吗? window.setTimeout("document.body.s
我有一个 GameActivity 和一个 GameOverActivity。我将游戏积分保存在 GameActivity 中,但会在 GameOverActivity 中显示这些积分。我必须做什么?
这个问题已经有答案了: Output of System.out.println(object) (4 个回答) 已关闭 9 年前。 我不确定为什么会得到这个输出。当我尝试为我的扑克程序打印一手牌时。
我使用 carousel bootstrap 3 来使用幻灯片文本。当第 1 行文本长到底部(例如:高度 300 像素)而第 2 行文本太短(例如:仅 10 像素)时,问题是当我们单击第 # 行旁边时
如何使用 JavaScript 在 td 元素中添加样式属性 cursor? 我已经试过了: var tabla = document.getElementById("table"); var fil
有没有办法从导入的模块中获取异常处理输出并从调用程序中处理它?例如,我有一个写入 HTTP 异常的导入模块 except urllib2.HTTPError, e: sys.stderr.wri
我在这里遵循 W3C 的标准 http://www.w3.org/TR/CSS2/ui.html在这里 http://www.quirksmode.org/css/cursor.html#note .
我正在使用 Unity 构建汽车模拟器游戏。对于输入,我使用 Logitheck 方向盘 G29。现在我需要使用 Hand Controller 来加速或刹车。这是我的手控器手控器 HC1 Link
我在 chrome 浏览器中运行我的 flutter 应用程序,它会显示以下错误。 Do not call didCreateEngineInitializer by hand. Start with
我想为我的 Lable 设置一个鼠标监听器,这样当用户将鼠标放在标签上时,我可以将光标更改为 HAND_CURSOR。 我试图设置样式 css“cursor: hand;”对于这个标签,但是在运行
我正在使用 idTCPServer 来处理数据。对于新设备,我需要将套接字移交给 dll(停止 tcp 服务器从该套接字读取数据)。 Indy 或 ICS 可以实现这一点吗? [编辑]出于测试目的,我
我是一名优秀的程序员,十分优秀!