transform([0], []). transform([4], [i,v]). transform([9], [i,x]). transform([Digit], [i|Rest]) :- intbtw(1, 3, Digit), Newdigit is Digit - 1, transform([Newdigit], Rest). transform([Digit], [v|Rest]) :- intbtw(5, 8, Digit), Newdigit is Digit - 5, transform([Newdigit], Rest). transform([0, Digit], Answer) :- transform([Digit], Answer). transform([4, Digit], [x,l|Rest]) :- transform([Digit], Rest). transform([9, Digit], [x,c|Rest]) :- transform([Digit], Rest). transform([Digit1, Digit2], [x|Rest]) :- intbtw(1, 3, Digit1), Newdigit is Digit1 - 1, transform([Newdigit, Digit2], Rest). transform([Digit1, Digit2], [l|Rest]) :- intbtw(5, 8, Digit1), Newdigit is Digit1 - 5, transform([Newdigit, Digit2], Rest). intbtw(L, H, I) :- L =< H, !, ibt(L, H, I). ibt(L, H, I) :- number(I), !, L =< I, I =< H. ibt(L, H, I) :- I is L. ibt(L, H, I) :- L1 is L+1, L1 =< H, ibt(L1, H, I).