How to resolve the algorithm Poker hand analyser step by step in the J programming language
Published on 12 May 2024 09:40 PM
How to resolve the algorithm Poker hand analyser step by step in the J programming language
Table of Contents
Problem Statement
Create a program to parse a single five card poker hand and rank it according to this list of poker hands.
A poker hand is specified as a space separated list of five playing cards. Each input card has two characters indicating face and suit.
Faces are: a, 2, 3, 4, 5, 6, 7, 8, 9, 10, j, q, k Suits are: h (hearts), d (diamonds), c (clubs), and s (spades), or alternatively, the unicode card-suit characters: ♥ ♦ ♣ ♠
Duplicate cards are illegal. The program should analyze a single hand and produce one of the following outputs:
The programs output for the above examples should be displayed here on this page.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Poker hand analyser step by step in the J programming language
Source code in the j programming language
parseHand=: ' ' cut 7&u: NB. hand must be well formed
Suits=: <"> 7 u: '♥♦♣♦' NB. or Suits=: 'hdcs'
Faces=: <;._1 ' 2 3 4 5 6 7 8 9 10 j q k a'
suits=: {:&.>
faces=: }:&.>
flush=: 1 =&#&~. suits
straight=: 1 = (i.#Faces) +/@E.~ Faces /:~@i. faces
kinds=: #/.~ @:faces
five=: 5 e. kinds NB. jokers or other cheat
four=: 4 e. kinds
three=: 3 e. kinds
two=: 2 e. kinds
twoPair=: 2 = 2 +/ .= kinds
highcard=: 5 = 1 +/ .= kinds
IF=: 2 :'(,&(<m) ^: v)"1'
Or=: 2 :'u ^:(5 e. $) @: v'
Deck=: ,Faces,&.>/Suits
Joker=: <'joker'
joke=: [: ,/^:(#@$ - 2:) (({. ,"1 Deck ,"0 1 }.@}.)^:(5>[)~ i.&Joker)"1^:2@,:
punchLine=: {:@-.&a:@,@|:
rateHand=: [:;:inv [: (, [: punchLine -1 :(0 :0-.LF)@joke) parseHand
('invalid' IF 1:) Or
('high-card' IF highcard) Or
('one-pair' IF two) Or
('two-pair' IF twoPair) Or
('three-of-a-kind' IF three) Or
('straight' IF straight) Or
('flush' IF flush) Or
('full-house' IF (two * three)) Or
('four-of-a-kind' IF four) Or
('straight-flush' IF (straight * flush)) Or
('five-of-a-kind' IF five)
)
Hands=: <@deb;._2 {{)n
2♥ 2♦ 2♣ k♣ q♦
2♥ 5♥ 7♦ 8♣ 9♠
a♥ 2♦ 3♣ 4♣ 5♦
2♥ 3♥ 2♦ 3♣ 3♦
2♥ 7♥ 2♦ 3♣ 3♦
2♥ 7♥ 7♦ 7♣ 7♠
10♥ j♥ q♥ k♥ a♥
4♥ 4♠ k♠ 5♦ 10♠
q♣ 10♣ 7♣ 6♣ 4♣
}}
You may also check:How to resolve the algorithm Fairshare between two and more step by step in the FreeBASIC programming language
You may also check:How to resolve the algorithm Fairshare between two and more step by step in the Wren programming language
You may also check:How to resolve the algorithm Filter step by step in the PureBasic programming language
You may also check:How to resolve the algorithm Sum digits of an integer step by step in the Dyalect programming language
You may also check:How to resolve the algorithm The sieve of Sundaram step by step in the JavaScript programming language