Sha256: 1f2af833cf71ee274da2624dae97df27c133f6f6963b586e74641398d559b493

Contents?: true

Size: 1.06 KB

Versions: 352

Compression:

Stored size: 1.06 KB

Contents

module Garden (garden, defaultGarden, lookupPlants, Plant(..)) where
import qualified Data.Map as M
import Data.List (sort)
import Data.List.Split (chunksOf)

data Plant = Grass
           | Clover
           | Radishes
           | Violets
           deriving (Enum, Eq, Show, Read)

type Student = String
type Garden = M.Map String [Plant]

defaultStudents :: [String]
defaultStudents =
  [ "Alice", "Bob", "Charlie", "David", "Eve", "Fred"
  , "Ginny", "Harriet", "Ileana", "Joseph", "Kincaid", "Larry"
  ]

fromChar :: Char -> Plant
fromChar c = case c of
  'G' -> Grass
  'C' -> Clover
  'R' -> Radishes
  'V' -> Violets
  _   -> error ("Unknown plant " ++ show c)

defaultGarden :: String -> Garden
defaultGarden = garden defaultStudents

garden :: [Student] -> String -> Garden
garden students plantString = M.fromListWith (++) pairs
  where plantRows = map (map fromChar) (lines plantString)
        doRow = zip (sort students) . chunksOf 2
        pairs = concatMap doRow (reverse plantRows)

lookupPlants :: Student -> Garden -> [Plant]
lookupPlants = M.findWithDefault []

Version data entries

352 entries across 352 versions & 1 rubygems

Version Path
trackler-2.2.1.135 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.134 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.133 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.132 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.131 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.130 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.129 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.128 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.127 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.126 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.125 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.124 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.123 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.122 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.121 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.120 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.119 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.118 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.117 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs
trackler-2.2.1.116 tracks/haskell/exercises/kindergarten-garden/examples/success-standard/src/Garden.hs