package Ġorg . k objects . kon sole . demo . poker Ċ Ċ import Ġorg . k objects . kon sole . Ansi Ċ import Ġorg . k objects . kon sole . Kon sole Ċ import Ġkotlin . math . floor Ċ import Ġkotlin . math . min Ċ import Ġkotlin . random . Random Ċ Ċ fun Ġrandom () Ġ= ĠRandom . Default . next Double () Ċ Ċ fun Ġrandom 1 0 () Ġ= Ġ( 1 0 Ġ* Ġrandom ()). toInt () Ċ Ċ class ĠP oker ( val Ġkon sole : ĠKon sole ) Ġ{ ĊĊĠĠĠ Ġval Ġall Cards Ġ= Ġmutable ListOf < Card >() ĊĠĠĠ Ġvar Ġcomputer Cash Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġplayer Cash Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġpot Ġ= Ġ 0 ĊĊĠĠĠ Ġvar Ġwatch S old Ġ= Ġfalse ĊĠĠĠ Ġvar Ġtie T ack S old Ġ= Ġfalse ĊĊĠĠĠ Ġsuspend Ġfun Ġquery Card Numbers (): ĠList < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġkon sole . write (" Now Ġwe Ġdraw Ġ-- Ġwhich Ġcards Ġdo Ġyou Ġwant Ġto Ġreplace ?") ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġkon sole . read () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcards Ġ= Ġmutable ListOf < Int >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġvalid Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġin Ġ' 1 ' .. ' 5 ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cards . size Ġ>= Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" No Ġmore Ġthan Ġ 3 Ġcards .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcards . add ( c . code Ġ- Ġ' 0 '. code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( c Ġ> Ġ' Ġ' Ġ&& Ġc Ġ!= Ġ',' Ġ&& Ġc Ġ!= Ġ'.' Ġ&& Ġc Ġ!= Ġ'; ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" Invalid Ġcard Ġnumber Ġ'$ c '") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalid Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( valid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcards . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" Please Ġenter Ġa Ġlist Ġof Ġcard Ġnumbers , Ġe . g . Ġ' 1 Ġ 2 '. ĠIf Ġyou Ġwish Ġto Ġreplace Ġno Ġcards , Ġdon 't Ġfill Ġanything ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġyes No ( question : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write ( question ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġkon sole . read (). lowercase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" yes ", Ġ" y " Ġ-> Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" no ", Ġ" n " Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" Answer Ġyes Ġor Ġno , Ġplease .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// Ġ 1 7 4 0 ĊĠĠĠ Ġfun Ġdeal Card (): ĠCard Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcard : ĠCard ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Ġ= ĠCard ( 2 Ġ+ ĠRandom . Default . nextInt ( 1 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS uit . values ()[ Random . Default . nextInt ( 4 )]) ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( all Cards . contains ( card )) ĊĠĠĠĠĠĠĠ Ġall Cards . add ( card ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcard ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġsuspend Ġfun Ġplayer Low In Money () Ġ{ ĊĠĠĠĠĠĠĠ Ġkon sole . write (" You Ġcan 't Ġbet Ġwith Ġwhat Ġyou Ġhaven 't Ġgot .") ĊĠĠĠĠĠĠĠ Ġif Ġ(! watch S old ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( yes No (" Would Ġyou Ġlike Ġto Ġsell Ġyour Ġwatch ? ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Random . Default . next Double () Ġ< Ġ 0 . 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I 'll Ġgive Ġyou Ġ$ 7 5 Ġfor Ġit .\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Cash Ġ+= Ġ 7 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" That 's Ġa Ġpretty Ġcr ummy Ġwatch Ġ- ĠI 'll Ġgive Ġyou Ġ$ 2 5 .\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Cash Ġ+= Ġ 2 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwatch S old Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! tie T ack S old ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( yes No (" Will Ġyou Ġpart Ġwith Ġthat Ġdi amond Ġtie Ġtack ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Random . Default . next Double () Ġ< Ġ 0 . 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" You Ġare Ġnow Ġ$ 1 0 0 Ġr icher .\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Cash Ġ+= Ġ 1 0 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" It 's Ġpaste . Ġ$ 2 5 .\ n ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Cash Ġ+= Ġ 2 5 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtie T ack S old Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġsuspend Ġfun Ġcomputer Low In Money () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( watch S old ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Ġyes No (" Would Ġyou Ġlike Ġto Ġbuy Ġback Ġyour Ġwatch Ġfor Ġ$ 5 0 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputer Cash Ġ+= Ġ 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwatch S old Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( tie T ack S old ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( yes No (" Would Ġyou Ġlike Ġto Ġbuy Ġback Ġyour Ġtie Ġtack Ġfor Ġ$ 5 0 ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputer Cash Ġ+= Ġ 5 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtie T ack S old Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġsuspend Ġfun Ġask For Amount ( minimum : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( minimum Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" Fold , Ġcheck Ġor Ġri se Ġto Ġ< amount >? ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" Fold , Ġsee Ġor Ġri se Ġto Ġ< amount >? ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġkon sole . read (). trim (). lowercase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input Ġ== Ġ" f " Ġ|| Ġinput Ġ== Ġ" fold ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( minimum Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input Ġ== Ġ" c " Ġ|| Ġinput Ġ== Ġ" check ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( input Ġ== Ġ" s " Ġ|| Ġinput Ġ== Ġ" see ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġminimum ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġinput . toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( d Ġ!= Ġfloor ( d ) Ġ|| Ġd Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" No Ġsmall Ġchange , Ġplease .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( d Ġ< Ġminimum ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" If Ġyou Ġcan 't Ġsee Ġmy Ġbet , Ġthen Ġfold .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġd . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" Amount Ġnot Ġrecognized .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġtrue Ġif Ġthe Ġgame Ġis Ġover . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġsuspend Ġfun Ġbet ting Round ( before Draw : ĠBoolean , Ġcomputer Rank : ĠRank ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcomputer Bet Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġplayer Bet Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( before Draw ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġcalculate Computer Bet ( true , Ġcomputer Rank , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( amount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Cash Ġ+= Ġpot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpot Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I Ġfold ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I 'll Ġcheck .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputer Bet Ġ= Ġamount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I 'll Ġopen Ġwith Ġ$$ amount .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġask For Amount ( computer Bet ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( amount Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Cash Ġ-= Ġplayer Bet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputer Cash Ġ+= Ġplayer Bet Ġ+ Ġpot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpot Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I Ġwin .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player Cash Ġ- Ġamount Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Low In Money () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Bet Ġ= Ġamount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player Bet Ġ== Ġcomputer Bet Ġ&& Ġ( before Draw Ġ|| Ġcomputer Bet Ġ!= Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġamount Ġ= Ġcalculate Computer Bet ( before Draw , Ġcomputer Rank , Ġplayer Bet ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( amount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputer Cash Ġ-= Ġcomputer Bet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Cash Ġ+= Ġcomputer Bet Ġ+ Ġpot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpot Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I Ġfold ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Bet Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I 'll Ġsee Ġyou .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputer Bet Ġ= Ġplayer Bet ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I Ġraise Ġto Ġ$ amount ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputer Bet Ġ= Ġamount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġplayer Cash Ġ-= Ġplayer Bet ; ĊĠĠĠĠĠĠĠ Ġcomputer Cash Ġ-= Ġcomputer Bet ; ĊĠĠĠĠĠĠĠ Ġpot Ġ+= Ġplayer Bet Ġ+ Ġcomputer Bet ; ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcalculate Computer Bet ( before Draw : ĠBoolean , Ġcomputer Rank : ĠRank , Ġplayer Bet : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomputer Score Ġ= Ġcomputer Rank . ordinal Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( before Draw Ġ&& Ġplayer Bet Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( computer Score Ġ+ Ġ( random () Ġ* Ġ 1 . 5 ). toInt () Ġ== Ġ 0 ) Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġmin ( computer Cash , Ġ 5 Ġ+ Ġ(( random () Ġ* Ġcomputer Score ). toInt () Ġ/ Ġ 5 ) Ġ* Ġ 5 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( player Bet Ġ> Ġcomputer Cash Ġ/ Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player Bet Ġ<= Ġcomputer Cash ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġcomputer Score Ġ+ ĠRandom . Default . next Double () Ġ* Ġ 3 Ġ> Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġplayer Bet ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmin ( computer Cash , Ġ Ġplayer Bet Ġ+ Ġ( 2 Ġ+ Ġ( random () Ġ* Ġcomputer Score ). toInt () Ġ/ Ġ 5 ) Ġ* Ġ 5 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĠMain Ġprogram ĊĠĠĠ Ġsuspend Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġkon sole . write ("${ Ansi . BOLD } PO KER ${ Ansi . NORMAL _ INT ENS ITY }\ n Creative ĠComputing ĠMor rist own , ĠNew ĠJ ersey ") ĊĠĠĠĠĠĠĠ Ġkon sole . write ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWelcome Ġto Ġthe Ġcas ino . ĠWe Ġeach Ġhave Ġ$ 2 0 0 . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠI Ġwill Ġopen Ġthe Ġbet ting Ġbefore Ġthe Ġdraw ; Ġyou Ġopen Ġafter . """. trim Indent () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġkon sole . write (" En ough Ġtalk Ġ-- Ġlet 's Ġget Ġdown Ġto Ġ${ Ansi . ITAL IC } business ${ Ansi . NORMAL _ STYLE }. ") ĊĠĠĠĠĠĠĠ Ġcomputer Cash Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠ Ġplayer Cash Ġ= Ġ 2 0 0 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay Round () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" Now ĠI Ġhave Ġ$$ computer Cash Ġand Ġyou Ġhave Ġ$$ player Cash .") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( computer Cash Ġ<= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputer Low In Money () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( computer Cash Ġ<= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I 'm Ġb usted . ĠCon grat ulations !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! yes No (" Another Ġround ? ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player Cash Ġ<= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Low In Money () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( player Cash Ġ<= Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" Your Ġw ad Ġis Ġshot !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġplay Round () Ġ{ ĊĠĠĠĠĠĠĠ Ġkon sole . write (" The Ġante Ġis Ġ$ 5 , ĠI Ġwill Ġdeal .") ĊĠĠĠĠĠĠĠ Ġpot Ġ+= Ġ 1 0 ; ĊĠĠĠĠĠĠĠ Ġplayer Cash Ġ-= Ġ 5 ; ĊĠĠĠĠĠĠĠ Ġcomputer Cash Ġ-= Ġ 5 ; ĊĠĠĠĠĠĠĠ Ġall Cards . clear () ĊĊĠĠĠĠĠĠĠ Ġval Ġcomputer Hand Ġ= ĠHand ( List ( 5 ) Ġ{ Ġdeal Card () Ġ}) ĊĠĠĠĠĠĠĠ Ġval Ġplayer Hand Ġ= ĠHand ( List ( 5 ) Ġ{ Ġdeal Card () Ġ}) ĊĊĠĠĠĠĠĠĠ Ġplayer Hand . sort () ĊĠĠĠĠĠĠĠ Ġkon sole . write (" Your Ġhand :\ n $ player Hand ") ĊĊĠĠĠĠĠĠĠ Ġvar Ġcomputer Evaluation Ġ= Ġcomputer Hand . sort And Evaluate () ĊĠĠĠĠĠĠĠ Ġif Ġ( bet ting Round ( before Draw Ġ= Ġtrue , Ġcomputer Rank Ġ= Ġcomputer Evaluation . rank )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcard Numbers Ġ= Ġquery Card Numbers () ĊĠĠĠĠĠĠĠ Ġfor Ġ( cn Ġin Ġcard Numbers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Hand . replace Card ( cn Ġ- Ġ 1 , Ġdeal Card ()); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġplayer Hand . sort () ĊĠĠĠĠĠĠĠ Ġkon sole . write (" Your Ġnew Ġhand :\ n $ player Hand ") ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( u Ġin Ġ 0 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! computer Evaluation . hold [ u ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputer Hand . replace Card ( u , Ġdeal Card ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(++ count Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( count Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I Ġam Ġtaking Ġone Ġcard .") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I Ġam Ġtaking Ġ$ count Ġcards .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcomputer Evaluation Ġ= Ġcomputer Hand . sort And Evaluate (); ĊĠĠĠĠĠĠĠ Ġif Ġ( bet ting Round ( false , Ġcomputer Evaluation . rank )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġkon sole . write (" Now Ġwe Ġcompare Ġhands .") ĊĠĠĠĠĠĠĠ Ġkon sole . write (" My ĠHand :\ n $ computer Hand ") ĊĠĠĠĠĠĠĠ Ġval Ġplayer Evaluation Ġ= Ġplayer Hand . sort And Evaluate (); ĊĠĠĠĠĠĠĠ Ġkon sole . write (" You Ġhave Ġ$ player Evaluation .") ĊĊĠĠĠĠĠĠĠ Ġkon sole . write (" And ĠI Ġhave Ġ$ computer Evaluation .") ĊĠĠĠĠĠĠĠ Ġwhen Ġ( computer Evaluation . compareTo ( player Evaluation )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" I Ġwin .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomputer Cash Ġ+= Ġpot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpot Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" You Ġwin .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplayer Cash Ġ+= Ġpot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpot Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkon sole . write (" The Ġhand Ġis ĠDraw n ; Ġall Ġ$$ pot Ġremains Ġin Ġthe Ġpot .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠS uit Ġ{ ĊĠĠĠĠĠĠĠ ĠDI AM ON DS , ĠCL UB S , ĠHE ART S , ĠSPA DES ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠCard ( val Ġvalue : ĠInt , Ġval Ġsuit : ĠS uit ) Ġ: ĠComparable < Card > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠCard ): ĠInt Ġ= Ġvalue . compareTo ( other . value ) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Ġis ĠCard Ġ&& Ġother . value Ġ== Ġvalue Ġ&& Ġother . suit Ġ== Ġsuit ĊĊĠĠĠĠĠĠĠ Ġfun Ġvalue ToString () Ġ= Ġwhen Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 1 Ġ-> Ġ" Jack " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 2 Ġ-> Ġ" Queen " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 3 Ġ-> Ġ" King " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 4 Ġ-> Ġ" Ace " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġvalue . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( value Ġ== Ġ 1 0 ) Ġ" 1 0 " Ġelse Ġvalue ToString (). substring ( 0 , Ġ 1 )) Ġ+ Ġwhen Ġ( suit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS uit . DI AM ON DS Ġ-> Ġ" âĻ ¦ \ ufe 0 f ï¸ı " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS uit . CL UB S Ġ-> Ġ" âĻ £ \ ufe 0 f ï¸ı " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS uit . HE ART S Ġ-> Ġ" âĻ ¥ \ ufe 0 f " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS uit . SPA DES Ġ-> Ġ" âĻ ł \ ufe 0 f " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠHand ( initial Cards : ĠList < Card >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcards Ġ= Ġinitial Cards . to Mutable List () ĊĊĠĠĠĠĠĠĠ Ġfun Ġreplace Card ( index : ĠInt , Ġcard : ĠCard ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcards [ index ] Ġ= Ġcard ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsort () Ġ= Ġcards . sort () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( z Ġin Ġcards . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! sb . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" âĶĤ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( cards [ z ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġsort And Evaluate (): ĠEvaluation Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsort () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġmax Count Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpivot Ġ= ĠlistOf ( cards [ 4 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhold Ġ= ĠMutable List ( 5 ) Ġ{ Ġfalse Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstraight Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġflush Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cards [ i ]. suit Ġ!= Ġcards [ i Ġ- Ġ 1 ]. suit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflush Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cards [ i ]. value Ġ!= Ġcards [ i Ġ- Ġ 1 ]. value Ġ+ Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstraight Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cards [ i ]. value Ġ== Ġcards [ i Ġ- Ġ 1 ]. value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Ġ> Ġmax Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġ( count Ġ== Ġmax Count Ġ&& Ġcards [ i ]. value Ġ> Ġpivot [ 0 ]. value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Count Ġ= Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Ġ= ĠlistOf ( cards [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold [ i ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold [ i Ġ- Ġ 1 ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( stra ight Ġ&& Ġflush ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEvaluation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank Ġ= ĠRank . STR A IGHT _ FLUSH , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Ġ= ĠlistOf ( cards [ 4 ]), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold Ġ= ĠList ( 5 ) Ġ{ Ġtrue Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrank : ĠRank ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( max Count ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank Ġ= ĠRank . SCH MAL TZ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Ġ= Ġcards . reversed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank Ġ= ĠRank . FO UR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cards [ 0 ]. value Ġ== Ġpivot [ 0 ]. value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Ġ= ĠlistOf ( pivot [ 0 ], Ġcards [ 4 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Ġ= ĠlistOf ( pivot [ 0 ], Ġcards [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsecond Pair Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cards [ i ]. value Ġ!= Ġpivot [ 0 ]. value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġcards [ i ]. value Ġ== Ġcards [ i Ġ- Ġ 1 ]. value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Ġ= ĠlistOf ( pivot [ 0 ], Ġcards [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold [ i ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold [ i Ġ- Ġ 1 ] Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Pair Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( max Count Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank Ġ= Ġif Ġ( second Pair ) ĠRank . FULL _ HO USE Ġelse ĠRank . TH REE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank Ġ= Ġif Ġ( second Pair ) ĠRank . TWO _ PAIR Ġelse ĠRank . A _ PAIR ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( rank Ġ< ĠRank . FULL _ HO USE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( flush ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank Ġ= ĠRank . FLUSH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Ġ= Ġcards . reversed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold . fill ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( stra ight ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank Ġ= ĠRank . STR A IGHT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Ġ= Ġcards . reversed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold . fill ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEvaluation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrank Ġ= Ġrank , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpivot Ġ= Ġpivot , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhold Ġ= Ġhold ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġenum Ġclass ĠRank Ġ{ ĊĠĠĠĠĠĠĠ ĠS CH MAL TZ , ĠA _ PAIR , ĠTWO _ PAIR , ĠTHREE , ĠSTR A IGHT , ĠFL USH , ĠFULL _ HO USE , ĠFO UR , ĠSTR A IGHT _ FLUSH ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠEvaluation ( ĊĠĠĠĠĠĠĠ Ġval Ġrank : ĠRank , ĊĠĠĠĠĠĠĠ Ġval Ġpivot : ĠList < Card >, ĊĠĠĠĠĠĠĠ Ġval Ġhold : ĠList < Boolean >) Ġ: ĠComparable < Evaluation > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠEvaluation ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġrank . compareTo ( other . rank ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( result Ġ== Ġ 0 Ġ&& Ġi Ġ< Ġpivot . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġpivot [ i ]. compareTo ( other . pivot [ i ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhigh Ġ= Ġpivot [ 0 ]. value ToString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( rank ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRank . SCH MAL TZ Ġ-> Ġ" Sch m alt z , Ġ$ high " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRank . A _ PAIR Ġ-> Ġ" A Ġpair , Ġ$ high Ġhigh " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRank . TWO _ PAIR Ġ-> Ġ" Two ĠPair , Ġ${ high } s Ġand Ġ${ pivot [ 1 ]. value ToString () }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRank . TH REE Ġ-> Ġ" Three Ġ${ high } s \"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRank . STR A IGHT Ġ-> Ġ"$ high - high Ġstraight " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRank . FLUSH Ġ-> Ġ"$ high - high Ġflush " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRank . FULL _ HO USE Ġ-> Ġ Ġ" Full ĠHouse , Ġ${ high } s Ġover Ġ${ pivot [ 1 ]. value ToString ()} s " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRank . FO UR Ġ-> Ġ" Four Ġ${ high } s ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRank . STR A IGHT _ FLUSH Ġ-> Ġ"$ high - high Ġstraight Ġflush " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ