diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-06-28 01:11:58 +0200 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-06-28 01:11:58 +0200 |
commit | 115efe92ddd63a31332ca740d76eaf889a9c79ed (patch) | |
tree | 133e16ac8cb9a25e6afe68d5b3e7208c620c2e93 /problem54.ijs | |
parent | 767c8d9bea824b05fd24549e7dce6c738c90aaab (diff) |
problem 54
Diffstat (limited to 'problem54.ijs')
-rw-r--r-- | problem54.ijs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/problem54.ijs b/problem54.ijs new file mode 100644 index 0000000..1ea9083 --- /dev/null +++ b/problem54.ijs @@ -0,0 +1,41 @@ +trans =: {{(0,~2+i.17){~'23456789TJQKAHDSC'i.y}} + +split =: {{<"1 y$~(x%~#y),x}} + +read =: {{2 split 5 split 2 split (#~0~:]) trans fread y}} + +score =: monad define + 'values suits' =. |:>>y + order =. \:values + suits =. order{suits + values =. order{values + 'counts pairvals' =. |:\:~{{(#y),{.y}}/.~values + usuits =. ~.suits NB. unique suits + consecs =. 5<&|.\2+i.13 + if. (1=#usuits)*.values-:10 11 12 13 14 do. + type =. 10 NB. Royal flush + elseif. (1=#usuits)*.(<values) e. consecs do. + type =. 9 NB. Straight flush + elseif. counts -: 4 1 do. + type =. 8,{.pairvals NB. Four of a kind + elseif. counts -: 3 2 do. + type =. 7,2{.pairvals NB. Full house + elseif. 1=#usuits do. + type =. 6 NB. Flush + elseif. (<values) e. consecs do. + type =. 5 NB. Straight + elseif. counts -: 3 1 1 do. + type =. 4,{.pairvals NB. Three of a kind + elseif. counts -: 2 2 1 do. + type =. 3,\:~2{.pairvals NB. Two pairs + elseif. counts -: 2 1 1 1 do. + type =. 2,{.pairvals NB. One pair + else. + type =. 1 NB. High card + end. + type,values +) + +winner =: {{{.\:score"0>y}} + +problem54 =: +/0=winner"0 read 'p054_poker.txt'
\ No newline at end of file |