main = SumPuz.Start SumPuz.Start = let words_1_0 = Flite.Cons (Flite.str "ANANAB") (Flite.Cons (Flite.str "ELPPA") (Flite.Cons (Flite.str "YRREHC") (Flite.Cons (Flite.str "HCAEP") (Flite.Cons (Flite.str "TOCIRPA") (Flite.Cons (Flite.str "EVILO") (Flite.Cons (Flite.str "NOMEL") (Flite.Cons (Flite.str "AVAUG") (Flite.Cons (Flite.str "ODACAVA") (Flite.Cons (Flite.str "AYAPAP") (Flite.Cons (Flite.str "IHCTIL") (Flite.Cons (Flite.str "NOLEM") Flite.Nil))))))))))) in SumPuz.count_45 words_1_0 words_1_0 words_1_0 SumPuz.count_45 !xs_0 ys_1 zs_2 = SumPuz.sumMap (SumPuz.fx_46 ys_1 zs_2) xs_0 SumPuz.fx_46 !ys_0 zs_1 x_2 = SumPuz.sumMap (SumPuz.fy_47 x_2 zs_1) ys_0 SumPuz.fy_47 x_0 !zs_1 y_2 = SumPuz.sumMap (SumPuz.fz_48 x_0 y_2) zs_1 SumPuz.fz_48 !x_0 !y_1 z_2 = if (SumPuz.valid_49 x_0 y_1 z_2) 1 0 SumPuz.valid_49 !x_0 !y_1 z_2 = SumPuz.and (eq (SumPuz.len x_0) (SumPuz.len y_1)) (SumPuz.and (eq (SumPuz.len x_0) (SumPuz.len z_2)) (SumPuz.isSingleton (SumPuz.solutions_50 x_0 y_1 z_2 (Flite.Pair 0 Flite.Nil)))) :: Flite.List = Flite.Nil | Flite.Cons a1 a2 :: Flite.Pair = Flite.Pair a1 a2 SumPuz.solutions_50 !_x_0 yys_1 !_x_2 !clds_3 = select _x_0 (Flite.Nil -> select _x_2 (Flite.Nil -> <{SumPuz._c;78;3_69}> (eq (SumPuz.fst clds_3) 0) clds_3) (Flite.Cons z_2_0 _x_2_1 -> select _x_2_1 (Flite.Nil -> <{SumPuz._c;83;3_70}> (eq (SumPuz.fst clds_3) 1) z_2_0 clds_3) ) ) (Flite.Cons x_1_0 xs_1_1 -> select _x_2 (Flite.Cons z_2_0 zs_2_1 -> SumPuz.ofAll (SumPuz.solns_53 (SumPuz.fst clds_3) x_1_0 (SumPuz.head yys_1) z_2_0 (SumPuz.solutions_50 xs_1_1 (SumPuz.tail yys_1) zs_2_1)) (SumPuz.ofAll (SumPuz.bindings_51 (SumPuz.head yys_1) (SumPuz.fromTo (SumPuz.ifNull (SumPuz.tail yys_1) 1 0) 9)) (SumPuz.bindings_51 x_1_0 (SumPuz.fromTo (SumPuz.ifNull xs_1_1 1 0) 9) (SumPuz.snd clds_3)))) ) SumPuz.snd !_x_0 = select _x_0 (Flite.Pair x_1_0 y_1_1 -> y_1_1) SumPuz.ifNull !_x_0 t_1 e_2 = select _x_0 (Flite.Nil -> t_1) (Flite.Cons x_1_0 xs_1_1 -> e_2) SumPuz.fromTo n_0 m_1 = Flite.Cons n_0 (<{SumPuz._c;108;22_59}> (eq n_0 m_1) n_0 m_1) <{SumPuz._c;108;22_59}> !_x_0 n_1 m_2 = select _x_0 (True -> Flite.Nil) (False -> SumPuz.fromTo (add n_1 1) m_2) SumPuz.bindings_51 l_0 !ds_1 !lds_2 = <{SumPuz._c;56;3_68}> (SumPuz.lookup_52 l_0 lds_2) lds_2 l_0 ds_1 SumPuz.lookup_52 a_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nothing) (Flite.Cons _x_1_0 rest_1_1 -> select _x_1_0 (Flite.Pair b_2_0 c_2_1 -> <{SumPuz._c;17;3_67}> (eq a_0 b_2_0) a_0 rest_1_1 c_2_1) ) <{SumPuz._c;17;3_67}> !_x_0 a_1 rest_2 c_3 = select _x_0 (False -> SumPuz.lookup_52 a_1 rest_2) (True -> Flite.Just c_3) :: Flite.Maybe = Flite.Nothing | Flite.Just a1 <{SumPuz._c;56;3_68}> !_x_0 lds_1 l_2 !ds_3 = select _x_0 (Flite.Nothing -> SumPuz.map (SumPuz.flip Flite.Cons lds_1) (SumPuz.zip (SumPuz.repeat l_2) (SumPuz.diff_41 ds_3 (SumPuz.rng lds_1)))) (Flite.Just d_1_0 -> if (SumPuz.member_43 d_1_0 ds_3) (Flite.Cons lds_1 Flite.Nil) Flite.Nil) SumPuz.member_43 x_0 !_x_1 = select _x_1 (Flite.Nil -> False) (Flite.Cons y_1_0 ys_1_1 -> <{SumPuz._c;34;3_62}> (eq x_0 y_1_0) x_0 ys_1_1) <{SumPuz._c;34;3_62}> !_x_0 x_1 ys_2 = select _x_0 (False -> SumPuz.member_43 x_1 ys_2) (True -> True) SumPuz.rng = SumPuz.map SumPuz.snd SumPuz.map f_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> Flite.Cons (f_0 x_1_0) (SumPuz.map f_0 xs_1_1)) SumPuz.diff_41 = SumPuz.foldl (SumPuz.flip SumPuz.del_42) SumPuz.del_42 x_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons y_1_0 ys_1_1 -> <{SumPuz._c;27;3_63}> (eq x_0 y_1_0) y_1_0 x_0 ys_1_1) <{SumPuz._c;27;3_63}> !_x_0 y_1 x_2 ys_3 = select _x_0 (False -> Flite.Cons y_1 (SumPuz.del_42 x_2 ys_3)) (True -> ys_3) SumPuz.flip !f_0 x_1 y_2 = f_0 y_2 x_1 SumPuz.foldl f_0 a_1 !_x_2 = select _x_2 (Flite.Nil -> a_1) (Flite.Cons x_1_0 xs_1_1 -> SumPuz.foldl f_0 (f_0 a_1 x_1_0) xs_1_1) SumPuz.repeat x_0 = Flite.Cons x_0 (SumPuz.repeat x_0) SumPuz.zip !_x_0 ys_1 = select _x_0 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> select ys_1 (Flite.Nil -> Flite.Nil) (Flite.Cons y_2_0 ys_2_1 -> Flite.Cons (Flite.Pair x_1_0 y_2_0) (SumPuz.zip xs_1_1 ys_2_1)) ) SumPuz.tail !_x_0 = select _x_0 (Flite.Cons x_1_0 xs_1_1 -> xs_1_1) SumPuz.head !_x_0 = select _x_0 (Flite.Cons x_1_0 xs_1_1 -> x_1_0) SumPuz.ofAll f_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> SumPuz.append (f_0 x_1_0) (SumPuz.ofAll f_0 xs_1_1)) SumPuz.append !_x_0 ys_1 = select _x_0 (Flite.Nil -> ys_1) (Flite.Cons x_1_0 xs_1_1 -> Flite.Cons x_1_0 (SumPuz.append xs_1_1 ys_1)) SumPuz.fst !_x_0 = select _x_0 (Flite.Pair x_1_0 y_1_1 -> x_1_0) SumPuz.solns_53 c_0 x_1 y_2 z_3 f_4 !s_5 = let qr_1_0 = SumPuz.divMod10 (add (add (SumPuz.img_54 s_5 x_1) (SumPuz.img_54 s_5 y_2)) c_0) in SumPuz.ofAll (SumPuz.curry f_4 (SumPuz.fst qr_1_0)) (SumPuz.bindings_51 z_3 (Flite.Cons (SumPuz.snd qr_1_0) Flite.Nil) s_5) SumPuz.curry !f_0 x_1 y_2 = f_0 (Flite.Pair x_1 y_2) SumPuz.img_54 !lds_0 !l_1 = SumPuz.fromJust (SumPuz.lookup_52 l_1 lds_0) SumPuz.fromJust !_x_0 = select _x_0 (Flite.Just x_1_0 -> x_1_0) SumPuz.divMod10 !n_0 = <{SumPuz._c;100;3_61}> (<{SumPuz.<=_39}> n_0 9) n_0 <{SumPuz.<=_39}> !x_0 !y_1 = not (lt y_1 x_0) <{SumPuz._c;100;3_61}> !_x_0 n_1 = select _x_0 (True -> Flite.Pair 0 n_1) (False -> <{SumPuz._c;103;7_60}> (SumPuz.divMod10 (sub n_1 10))) <{SumPuz._c;103;7_60}> !_x_0 = select _x_0 (Flite.Pair q_1_0 r_1_1 -> Flite.Pair (add q_1_0 1) r_1_1) <{SumPuz._c;83;3_70}> !_x_0 z_1 clds_2 = select _x_0 (False -> Flite.Nil) (True -> SumPuz.bindings_51 z_1 (Flite.Cons 1 Flite.Nil) (SumPuz.snd clds_2)) <{SumPuz._c;78;3_69}> !_x_0 clds_1 = select _x_0 (False -> Flite.Nil) (True -> Flite.Cons (SumPuz.snd clds_1) Flite.Nil) SumPuz.isSingleton !_x_0 = select _x_0 (Flite.Nil -> False) (Flite.Cons x_1_0 _x_1_1 -> select _x_1_1 (Flite.Nil -> True) (Flite.Cons y_2_0 ys_2_1 -> False) ) SumPuz.len !xs_0 = SumPuz.lenAcc 0 xs_0 SumPuz.lenAcc !acc_0 !_x_1 = select _x_1 (Flite.Nil -> acc_0) (Flite.Cons x_1_0 xs_1_1 -> SumPuz.lenAcc (add acc_0 1) xs_1_1) SumPuz.and !_x_0 x_1 = if _x_0 x_1 False SumPuz.sumMap f_0 !xs_1 = SumPuz.sumMapAcc_44 f_0 xs_1 0 SumPuz.sumMapAcc_44 f_0 !_x_1 !acc_2 = select _x_1 (Flite.Nil -> acc_2) (Flite.Cons x_1_0 xs_1_1 -> SumPuz.sumMapAcc_44 f_0 xs_1_1 (add (f_0 x_1_0) acc_2)) Flite.str !_x_0 = select _x_0 ("" -> Flite.Nil) (_ -> Flite.Cons (Flite.char (string_select _x_0 0)) (Flite.str (<{StdString.%_10}> _x_0 (_Tuple2 1 (string_size _x_0))))) <{StdString.%_10}> !str_0 !_x_1 = select _x_1 (_Tuple2 a b -> string_slice str_0 a b) Flite.char !c_0 = toInt_char c_0