diff --git a/02.hs b/02.hs index c420895..fc770f9 100644 --- a/02.hs +++ b/02.hs @@ -101,19 +101,19 @@ nextExprsLists' newExprs oldExprs = let listNewExprs = [ e | e <- newExprs, type let listOldExprs = [ e | e <- oldExprs, typeOf e == ListT] in let intOldExprs = [ e | e <- oldExprs, typeOf e == IntT] in nextSimpleExprsLists newExprs ++ - [[e :+: e' | e <- listNewExprs, e' <- listNewExprs], - [e :+: e' | e <- listNewExprs, e' <- listOldExprs], - [e :+: e' | e <- listOldExprs, e' <- listNewExprs], - [SubList e from to | e <- listNewExprs, from <- intNewExprs, to <- intNewExprs], - [SubList e from to | e <- listOldExprs, from <- intNewExprs, to <- intNewExprs], - [SubList e from to | e <- listNewExprs, from <- intOldExprs, to <- intNewExprs], - [SubList e from to | e <- listNewExprs, from <- intNewExprs, to <- intOldExprs], - [SubList e from to | e <- listOldExprs, from <- intOldExprs, to <- intNewExprs], - [SubList e from to | e <- listOldExprs, from <- intNewExprs, to <- intOldExprs], - [SubList e from to | e <- listNewExprs, from <- intOldExprs, to <- intOldExprs]] + [concat [[e :+: e' | e <- listNewExprs, e' <- listNewExprs], + [e :+: e' | e <- listNewExprs, e' <- listOldExprs], + [e :+: e' | e <- listOldExprs, e' <- listNewExprs]], + concat [[SubList e from to | e <- listNewExprs, from <- intNewExprs, to <- intNewExprs], + [SubList e from to | e <- listOldExprs, from <- intNewExprs, to <- intNewExprs], + [SubList e from to | e <- listNewExprs, from <- intOldExprs, to <- intNewExprs], + [SubList e from to | e <- listNewExprs, from <- intNewExprs, to <- intOldExprs], + [SubList e from to | e <- listOldExprs, from <- intOldExprs, to <- intNewExprs], + [SubList e from to | e <- listOldExprs, from <- intNewExprs, to <- intOldExprs], + [SubList e from to | e <- listNewExprs, from <- intOldExprs, to <- intOldExprs]]] nextExprs' :: [Expr] -> [Expr] -> [Expr] -nextExprs' newExprs oldExprs = concatShuffle $ nextExprsLists' newExprs oldExprs +nextExprs' newExprs oldExprs = concatShuffle $ nextExprsLists' newExprs oldExprs data Example = Example {exampleInput :: [Int], exampleOutput :: [Int]}