Abelian sandpile model/Identity: Difference between revisions

m
→‎{{header|Haskell}}: (inlined one small function)
m (→‎{{header|Haskell}}: (inlined one small function))
Line 617:
[ "Cascade:"
, showCascade $ ([], x) : fmap ("->", ) xs
, "s1 + s2 == s2 + s1 -> " <> show (addSand s1 s2 == addSand s2 s1)
, showCascade [([], s1), (" +", s2), (" =", addSand s1 s2)]
, showCascade [([], s2), (" +", s1), (" =", addSand s2 s1)]
, "s3 + s3_id == s3 -> " <> show (addSand s3 s3_id == s3)
, showCascade [([], s3), (" +", s3_id), (" =", addSand s3 s3_id)]
, "s3_id + s3_id == s3_id -> " <> show (addSand s3_id s3_id == s3_id)
, showCascade [([], s3_id), (" +", s3_id), (" =", addSand s3_id s3_id)]
Line 632 ⟶ 629:
addSand :: [[Int]] -> [[Int]] -> [[Int]]
addSand xs ys =
cascaded(head . cascade $. chunksOf (length xs)) $ zipWith (+) (concat xs) (concat ys)
 
cascaded :: [[Int]] -> [[Int]]
cascaded = head . cascade
 
cascade :: [[Int]] -> [[[Int]]]
9,657

edits