Abelian sandpile model/Identity: Difference between revisions
Content added Content deleted
m (→{{header|Haskell}}: (inlined one small function)) |
|||
Line 617: | Line 617: | ||
[ "Cascade:" |
[ "Cascade:" |
||
, showCascade $ ([], x) : fmap ("->", ) xs |
, showCascade $ ([], x) : fmap ("->", ) xs |
||
, "s1 + s2 == s2 + s1 -> " <> show (addSand s1 s2 == addSand s2 s1) |
, "s1 + s2 == s2 + s1 -> " <> show (addSand s1 s2 == addSand s2 s1) |
||
, showCascade [([], s1), (" +", s2), (" =", addSand s1 s2)] |
, showCascade [([], s1), (" +", s2), (" =", addSand s1 s2)] |
||
, showCascade [([], s2), (" +", s1), (" =", addSand s2 s1)] |
, showCascade [([], s2), (" +", s1), (" =", addSand s2 s1)] |
||
, "s3 + s3_id == s3 -> " <> show (addSand s3 s3_id == s3) |
, "s3 + s3_id == s3 -> " <> show (addSand s3 s3_id == s3) |
||
, showCascade [([], s3), (" +", s3_id), (" =", addSand s3 s3_id)] |
, showCascade [([], s3), (" +", s3_id), (" =", addSand s3 s3_id)] |
||
, "s3_id + s3_id == s3_id -> " <> show (addSand s3_id s3_id == 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)] |
, showCascade [([], s3_id), (" +", s3_id), (" =", addSand s3_id s3_id)] |
||
Line 632: | Line 629: | ||
addSand :: [[Int]] -> [[Int]] -> [[Int]] |
addSand :: [[Int]] -> [[Int]] -> [[Int]] |
||
addSand xs ys = |
addSand xs ys = |
||
(head . cascade . chunksOf (length xs)) $ zipWith (+) (concat xs) (concat ys) |
|||
cascaded :: [[Int]] -> [[Int]] |
|||
cascaded = head . cascade |
|||
cascade :: [[Int]] -> [[[Int]]] |
cascade :: [[Int]] -> [[[Int]]] |