[new examples
martin.hofmann@uni-bamberg.de**20090929074836] hunk ./expl/Examples.hs 32
--- memory leak
+
hunk ./expl/Examples.hs 38
---allodd [S(S(S Z))] = True
+allodd [S(S(S Z))] = True
hunk ./expl/Examples.hs 42
---allodd [Z, S(S(S Z))] = False
+allodd [Z, S(S(S Z))] = False
hunk ./expl/Examples.hs 46
---allodd [S Z, S(S(S Z))] = True
+allodd [S Z, S(S(S Z))] = True
hunk ./expl/Examples.hs 51
---allodd [S(S(S Z)), Z] = False
---allodd [S(S(S Z)), S Z] = True
---allodd [S(S(S Z)), S(S Z)] = False
---allodd [S(S(S Z)), S(S(S Z))] = True
+allodd [S(S(S Z)), Z] = False
+allodd [S(S(S Z)), S Z] = True
+allodd [S(S(S Z)), S(S Z)] = False
+allodd [S(S(S Z)), S(S(S Z))] = True
hunk ./expl/Examples.hs 155
+evens [S Z] = []
+evens [S(S Z)] = [S(S Z)]
+evens [S(S(S Z))] = []
hunk ./expl/Examples.hs 161
-evens [Z,S (S (S Z))] = [Z]
+evens [Z,S(S(S Z))] = [Z]
hunk ./expl/Examples.hs 165
-evens [S Z, S( S (S Z))] = []
+evens [S Z, S(S(S Z))] = []
hunk ./expl/Examples.hs 169
-evens [S (S Z), S( S (S Z))] = [S (S Z)]
+evens [S (S Z), S(S(S Z))] = [S (S Z)]
hunk ./expl/Examples.hs 194
+fibAdd :: Peano -> Peano -> Peano
+fibAdd Z (S Z) = (S Z)
+fibAdd (S Z) (S Z) = S (S Z)
+fibAdd (S Z) (S (S Z)) = S (S (S Z))
+fibAdd (S ( S Z)) (S (S (S Z))) = S (S (S( S( S Z))))
+
hunk ./expl/Examples.hs 206
+incr :: [Peano] -> [Peano]
+incr []         = []
+incr [Z]        = [S Z]
+incr [S Z]      = [S(S Z)]
+--incr [S(S Z)]   = [S(S(S Z))]
+incr [Z,S Z]    = [S Z,S(S Z)]
+--incr [Z,S(S Z)] = [S Z,S(S(S Z))]
+incr [S Z,Z]    = [S(S Z),S Z]
+
hunk ./expl/Examples.hs 326
+
hunk ./expl/Examples.hs 373
+
hunk ./expl/Examples.hs 492
-zeros [Z,S x,S y] = [Z]
-zeros [S x,Z,S y] = [Z]
-zeros [S y,S x,Z] = [Z]
-zeros [Z,Z,S x] = [Z,Z]
-zeros [Z,S x,Z] = [Z,Z]
-zeros [S x,Z,Z] = [Z,Z]
-zeros [Z,Z,Z] = [Z,Z,Z]
+--zeros [Z,S x,S y] = [Z]
+--zeros [S x,Z,S y] = [Z]
+--zeros [S y,S x,Z] = [Z]
+--zeros [Z,Z,S x] = [Z,Z]
+--zeros [Z,S x,Z] = [Z,Z]
+--zeros [S x,Z,Z] = [Z,Z]
+--zeros [Z,Z,Z] = [Z,Z,Z]
+
+-- ---------------------------------------------------------------------------
+-- Non-List Problems
+-- ---------------------------------------------------------------------------
+
+data Object = O1 | O2 | O3
+data State = START | LOD Object State | UNL Object State | FLY State
+
+rocket :: [Object] -> State -> State
+rocket [] s    = FLY s
+rocket [x] s   = UNL x (FLY (LOD x s))
+rocket [x,y] s = UNL x (UNL y (FLY (LOD y (LOD x s))))
+
+data Disc = D0 | D Disc
+data Action = NOOP | MV Disc Peg Peg Action
+data Peg = PegA | PegB | PegC
+
+hanoi :: Disc -> Peg -> Peg -> Peg -> Action -> Action
+hanoi D0 src auc dst s        = MV D0 src dst s
+hanoi (D D0) src aux dst s    = MV D0 aux dst 
+                                 (MV (D D0) src dst 
+                                   (MV D0 src aux s))
+hanoi (D(D D0)) src aux dst s = MV D0 src dst
+                                 (MV (D D0) aux dst
+                                   (MV D0 aux src
+                                     (MV (D(D D0)) src dst
+                                       (MV D0 dst aux
+                                         (MV (D D0) src aux
+                                           (MV D0 src dst s ))))))