1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| let rec (Add : int_inf * int_inf -> int_inf ) = function
([],[]) -> []
| ([],s) -> s
| (s,[]) -> s
| ([e],[f]) -> if (e+f)>=10000
then [1;e+f-10000]
else [e+f]
| (s,[f]) -> if (dernier(s)+f)>=10000
then ajd(ajd(debut(debut(s)),dernier(debut(s))+1),dernier(s)+f-10000)
else ajd(debut(s),dernier(s)+f)
| ([e],s) -> if (dernier(s)+e)>=10000
then ajd(ajd(debut(debut(s)),dernier(debut(s))+1),dernier(s)+e-10000)
else ajd(debut(s),dernier(s)+e)
| (s1,s2) -> if (dernier(s1)+dernier(s2))>=10000
then ajd(Add(ajd(debut(debut(s1)),(dernier(debut(s1))+1)),debut(s2)),(dernier(s1)+dernier(s2)-10000))
else ajd(Add(debut(s1),debut(s2)),(dernier(s1)+ dernier(s2)));; |
Partager