% Author: Kevin Stewart 0700410
% An optimized version of exercise 6
% Date: 10/12/2010
%accepts an integer and split it into individual digits
usemod:- write('Enter a integer'), nl, read(Temp), (integer(Temp) -> testlen(Temp); nl, write('Not an integer'), usemod).
testlen(Temp):- atom_length(Temp, A), Mult = 1, C =1, count_loop(Temp, A, Mult, C).
count_loop(Temp, A, Mult, C):-
Mult1 is Mult * 10,
B is C + 1,
(B == A -> splitnum(Temp, Mult1, A, 1); count_loop(Temp, A, Mult1, B)).
splitnum(Temp, Mult1, A, C):- Temp1 is Temp mod Mult1, Num is (Temp - Temp1)/Mult1,
write('Num: '), write(Num), nl,
Mult is Mult1 / 10,
Temp2 is Temp1,
B is C + 1,
(A == B -> write('Thank you for using use mod'); splitnum(Temp2, Mult, A, C)).