
Untitled
By: a guest on
Mar 25th, 2012 | syntax:
Haskell | size: 0.98 KB | hits: 43 | expires: Never
module Main
where
import qualified Data.List as L
import Control.Applicative
main = print $ sum2 d3_5 []
d :: [Integer]
d = [1..20]
d3 = [ (d1, d2, d3) | d1 <- d,
d2 <- d,
d3 <- d ]
up6 a | a<6 = 6
| otherwise = a
d3s = map (\(a,b,c) -> up6 (div (a+b+c+2) 3))
d3sr :: [Integer] -> [(Integer ,Integer)]
d3sr (h:t) = _d3sr [] (h, 1) t
_d3sr a t [] = t:a
_d3sr a (v,c) (h:t)
| (v == h) = _d3sr a (v, c+1) t
| otherwise = _d3sr ((v, c):a) (h, 1) t
d3r = ( d3sr .( L.sort . d3s ) ) d3
d3_6 = [ [d1, d2, d3, d4, d5, d6] | d1 <- d3r,
d2 <- d3r,
d3 <- d3r,
d4 <- d3r,
d5 <- d3r,
d6 <- d3r ]
d3_6sort = map (L.sortBy (\(a1,_) (a2,_) -> a1 `compare` a2)) d3_6
d3_5 = map (\(_:a) -> a) d3_6sort
roll5 = pure ( foldl1 sum_rolls ) <*> d3_5