day one logic style

master
Jason Staten 4 years ago
parent 1e82a2d4e6
commit 2fcd451102

@ -1,4 +1,5 @@
module DayOne where
import Control.Monad (guard)
-- How many different ways can you find to write allEven?
@ -100,3 +101,45 @@ maplayouts = [(al, mi, ga, tn, fl) |
-- [(Red,Green,Green,Blue,Blue),(Red,Blue,Blue,Green,Green),(Green,Red,Red,Blue,Blue),(Green,Blue,Blue,Red,Red),(Blue,Red,Red,Green,Green),(Blue,Green,Green,Red,Red)]
--
-- Haskell Wiki: Logic programming
-- https://wiki.haskell.org/Logic_programming_example
data USMap = USMap {
alabama :: Color,
florida :: Color,
georgia :: Color,
mississippi :: Color,
tennessee :: Color
} deriving Show
maplayouts2 :: [USMap]
maplayouts2 = do
al <- [Red, Blue, Green]
fl <- [Red, Blue, Green]
ga <- [Red, Blue, Green]
ms <- [Red, Blue, Green]
tn <- [Red, Blue, Green]
guard $ ms /= tn
guard $ ms /= al
guard $ al /= tn
guard $ al /= ms
guard $ al /= ga
guard $ al /= fl
guard $ ga /= fl
guard $ ga /= tn
return $ USMap {
alabama = al,
florida = fl,
georgia = ga,
mississippi = ms,
tennessee = tn
}
-- >>> maplayouts2
-- [USMap {alabama = Red, florida = Blue, georgia = Green, mississippi = Green, tennessee = Blue},USMap {alabama = Red, florida = Green, georgia = Blue, mississippi = Blue, tennessee = Green},USMap {alabama = Blue, florida = Red, georgia = Green, mississippi = Green, tennessee = Red},USMap {alabama = Blue, florida = Green, georgia = Red, mississippi = Red, tennessee = Green},USMap {alabama = Green, florida = Red, georgia = Blue, mississippi = Blue, tennessee = Red},USMap {alabama = Green, florida = Blue, georgia = Red, mississippi = Red, tennessee = Blue}]
--

Loading…
Cancel
Save