Skip to content
Snippets Groups Projects
Commit 0f0f6b05 authored by Janne Sirviö's avatar Janne Sirviö :hushed:
Browse files

Changes for the repo

parent e882125f
No related branches found
No related tags found
No related merge requests found
...@@ -22,6 +22,8 @@ description: Please see the README on GitHub at <https://github.com/gith ...@@ -22,6 +22,8 @@ description: Please see the README on GitHub at <https://github.com/gith
dependencies: dependencies:
- base >= 4.7 && < 5 - base >= 4.7 && < 5
- random >= 1.1 - random >= 1.1
- containers
- array
library: library:
source-dirs: src source-dirs: src
...@@ -36,6 +38,7 @@ executables: ...@@ -36,6 +38,7 @@ executables:
- -with-rtsopts=-N - -with-rtsopts=-N
dependencies: dependencies:
- twenty-one - twenty-one
- transformers
tests: tests:
twenty-one-test: twenty-one-test:
......
module Card
( Suit (..)
, Value (..)
, Card (..)
) where
data Suit = Spades | Diamonds | Clubs | Hearts
deriving (Eq,Ord,Enum,Bounded,Show,Read)
data Value = Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten | Jack | Queen | King | Ace
deriving (Eq,Ord,Enum,Bounded,Show,Read)
data Card = Card { _suit :: Suit
,_value :: Value
} deriving (Eq, Show)
type Deck = [Card]
allCardValues :: [Value]
allCardValues = [minBound..maxBound] :: [Value]
allCardSuits :: [Suit]
allCardSuits = [minBound..maxBound] :: [Suit]
deck :: Deck
deck = Card <$> allCardSuits <*> allCardValues
showCard :: Card -> String
showCard (Card {_suit = s, _value = v}) = show v ++ " of " ++ show s
pullCardFromDeck :: Deck -> Int -> Card
pullCardFromDeck deck num = deck!!num
\ No newline at end of file
...@@ -2,10 +2,31 @@ module Lib ...@@ -2,10 +2,31 @@ module Lib
( generateNumber ( generateNumber
) where ) where
import System.Random (randomRIO) import System.Random
import Data.Map
import Data.Array.IO
import Control.Monad
generateNumber:: Int -> Int -> Int -> IO () generateNumber:: Int -> Int -> Int -> IO ()
generateNumber min max n = do generateNumber min max n = do
number <- randomRIO (min, max) -- :: IO Integer number <- randomRIO (min, max) -- :: IO Integer
putStrLn $ "The number " ++ show n ++ " is " ++ show number putStrLn $ "The number " ++ show n ++ " is " ++ show number
-- | Randomly shuffle a list
-- /O(N)/
shuffle :: [a] -> IO [a]
shuffle xs = do
ar <- newArray n xs
forM [1..n] $ \i -> do
j <- randomRIO (i,n)
vi <- readArray ar i
vj <- readArray ar j
writeArray ar j vi
return vj
where
n = length xs
newArray :: Int -> [a] -> IO (IOArray Int a)
newArray n xs = newListArray (1,n) xs
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment