Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1 @@
|
|||
puzzle = [["151"],["",""],["40","",""],["","","",""],["X","11","Y","4","Z"]]
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
triangle n = n * (n+1) `div` 2
|
||||
|
||||
coeff xys x = maybe 0 id $ lookup x xys
|
||||
|
||||
row n cs = [coeff cs k | k <- [1..n]]
|
||||
|
||||
eqXYZ n = [(0, 1:(-1):1:replicate n 0)]
|
||||
|
||||
eqPyramid n h = do
|
||||
a <- [1..h-1]
|
||||
x <- [triangle (a-1) + 1 .. triangle a]
|
||||
let y = x+a
|
||||
return $ (0, 0:0:0:row n [(x,-1),(y,1),(y+1,1)])
|
||||
|
||||
eqConst n fields = do
|
||||
(k,s) <- zip [1..] fields
|
||||
guard $ not $ null s
|
||||
return $ case s of
|
||||
"X" - (0, 1:0:0:row n [(k,-1)])
|
||||
"Y" - (0, 0:1:0:row n [(k,-1)])
|
||||
"Z" - (0, 0:0:1:row n [(k,-1)])
|
||||
_ - (fromInteger $ read s, 0:0:0:row n [(k,1)])
|
||||
|
||||
equations :: [[String]] - ([Rational], [[Rational]])
|
||||
equations puzzle = unzip eqs where
|
||||
fields = concat puzzle
|
||||
eqs = eqXYZ n ++ eqPyramid n h ++ eqConst n fields
|
||||
h = length puzzle
|
||||
n = length fields
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
normalize :: [Rational] - [Integer]
|
||||
normalize xs = [numerator (x * v) | x <- xs] where
|
||||
v = fromInteger $ foldr1 lcm $ map denominator $ xs
|
||||
|
||||
run puzzle = map (normalize . drop 3) $ answer where
|
||||
(a, m) = equations puzzle
|
||||
lr = decompose 0 m
|
||||
answer = case solve 0 lr a of
|
||||
Nothing - []
|
||||
Just x - x : kernel lr
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
*Main run puzzle
|
||||
[[151,81,70,40,41,29,16,24,17,12,5,11,13,4,8]]
|
||||
*Main run [[""],["2",""],["X","Y","Z"]]
|
||||
[[3,2,1,1,1,0],[3,0,3,-1,1,2]]
|
||||
Loading…
Add table
Add a link
Reference in a new issue