evo haskell-a:
Code:
import Data.Random.Source.DevRandom
import Data.Random.RVar
import Data.Random.Extras
import Data.Maybe
dealCard :: [(a,b)] -> RVar ([(a,b)],(a,b))
dealCard l = do
fromJust $ choiceExtract l
main = do
let cards = [(face,sign)|face<-['2','3','4','5','6','7','8','9','T','J','Q','K','A'],
sign <- ['p','t','k','h']]
dealHand :: [(a,b)] -> IO ([(a,b)],[(a,b)])
dealHand cards = do
(l',card1) <- runRVar (dealCard cards) DevRandom
(l'',card2) <- runRVar (dealCard l') DevRandom
(l''',card3) <- runRVar (dealCard l'') DevRandom
(l'''',card4) <- runRVar (dealCard l''') DevRandom
(l''''',card5) <- runRVar (dealCard l'''') DevRandom
(ret,card6) <- runRVar (dealCard l''''') DevRandom
return (ret,card1:card2:card3:card4:card5:card6:[])
(l',hand1) <- dealHand cards
(l'',hand2) <- dealHand l'
(l''',hand3) <- dealHand l''
(l'''',hand4) <- dealHand l'''
print hand1
print hand2
print hand3
print hand4
print l''''
i izlaz:
Code:
~/examples/haskell >>> ./cards
[('4','p'),('J','k'),('K','k'),('8','p'),('T','p'),('4','k')]
[('Q','p'),('3','h'),('7','h'),('A','p'),('Q','k'),('8','t')]
[('7','k'),('3','p'),('2','t'),('4','t'),('9','k'),('5','k')]
[('K','p'),('8','h'),('Q','t'),('A','k'),('2','h'),('5','t')]
[('2','p'),('2','k'),('3','t'),('3','k'),('4','h'),('5','p'),('5','h'),('6','p'),('6','t'),('6','k'),('6','h'),('7','p'),('7','t'),('8','k'),('9','p'),('9','t'),('9','h'),('T','t'),('T','k'),('T','h'),('J','p'),('J','t'),('J','h'),('Q','h'),('K','t'),('K','h'),('A','t'),('A','h')]