From c293a156df51a29a71e40633a461a56d2e072411 Mon Sep 17 00:00:00 2001 From: WolframPaclet Date: Fri, 29 May 2020 14:59:21 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E4=B9=9D=E8=A1=8C=E6=A8=A1=E5=BC=8F?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E8=A7=84=E5=88=99=E7=A7=92=E6=9D=80ProjectEu?= =?UTF-8?q?ler=2054=E9=A2=98-ShowHand.md.=20=E6=AD=A4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E5=8F=97=20Mr.=20Wizzard=20=E7=9A=84=E9=A2=98=E8=A7=A3?= =?UTF-8?q?=E5=90=AF=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...00ProjectEuler 54\351\242\230-ShowHand.md" | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 "\344\271\235\350\241\214\346\250\241\345\274\217\345\214\271\351\205\215\350\247\204\345\210\231\347\247\222\346\235\200ProjectEuler 54\351\242\230-ShowHand.md" diff --git "a/\344\271\235\350\241\214\346\250\241\345\274\217\345\214\271\351\205\215\350\247\204\345\210\231\347\247\222\346\235\200ProjectEuler 54\351\242\230-ShowHand.md" "b/\344\271\235\350\241\214\346\250\241\345\274\217\345\214\271\351\205\215\350\247\204\345\210\231\347\247\222\346\235\200ProjectEuler 54\351\242\230-ShowHand.md" new file mode 100644 index 0000000..8b422b6 --- /dev/null +++ "b/\344\271\235\350\241\214\346\250\241\345\274\217\345\214\271\351\205\215\350\247\204\345\210\231\347\247\222\346\235\200ProjectEuler 54\351\242\230-ShowHand.md" @@ -0,0 +1,32 @@ +语言:Wolfram + +--- + +导入数据 +``` +data = Characters[ + Partition[#, 5] & /@ Import["p054_poker.txt", "Table"] +] /. Thread[Characters@"23456789TJQKA" -> Range@13]; +``` +给出规则 +``` +consecutiveQ = Differences@Sort@#[[;;, 1]] === {1,1,1,1} &; +pickMaxValue = Max@#[[;;, 1]] &; + +rules = { + straightFlush:{OrderlessPatternSequence[{_,sameSuit_} ..]} ? consecutiveQ :> {9, pickMaxValue@straightFlush}, + fourOfAKind:{OrderlessPatternSequence[{sameValue_,_} ..,_]} :> {8, sameValue}, + fullHouse:{OrderlessPatternSequence[{sameValueA_|sameValueB_,_} ..]} :> {7, pickMaxValue@fullHouse}, + flush:{OrderlessPatternSequence[{_,sameSuit_} ..]} :> {6, pickMaxValue@flush}, + straight_?consecutiveQ :> {5, pickMaxValue@straight}, + threeOfAKind:{OrderlessPatternSequence[{sameValue_,_} ..,_,_]} :> {4, sameValue}, + twoPairs:{OrderlessPatternSequence[{sameValueA_|sameValueB_,_} ..,_]} :> {3, Max[sameValueA, sameValueB]}, + onePair:{OrderlessPatternSequence[{sameValue_,_} ..,_,_,_]} :> {2, sameValue}, + highCard_ :> {1, pickMaxValue@highCard} +}; +``` +记数并计时 +``` +AbsoluteTiming@Count[Replace[data, rules, {2}], _?(Not@*OrderedQ)] +``` +> {0.133739, 376} \ No newline at end of file -- Gitee