このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1248012902/493
#  【 課題 】http://ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/840.txt
# 
# 入力した10進数の数字を表示し、10進数を2進数に、10進数を36進数に変換し、表示する。
# 36進数は{0〜9,A〜Z}の文字を使用しなければいけない。

入力した10進数の数字を表示し、10進数を2進数に、10進数を36進数に変換し、表示する(_10進数) :-
    N進数(2,_10進数,_2進数文字列),
    N進数(36,_10進数,_36進数文字列),
    write_formatted('10進数 %t は 2進数表現では %t 36進数表現では %t となります\n',[_10進数,_2進数,_36進数]).

'2進数10進数変換'(L,N) :-
    reverse(L,L1),
    '2進数10進数変換の二'(L1,N).

'2進数10進数変換の二'([],0).
'2進数10進数変換の二'([A|R1],N) :-
    '2進数10進数変換の二'(R1,N2),
    N is N2 * 2 + A.

N進数(N,_10進数,_N進数文字列) :-
    N進数(N,_10進数,[],X),
    concat_atom(X,_N進数文字列).

N進数(N,J,Y,[M|Y]) :- J < N,N進数利用文字(J,M),!.
N進数(N,J,Y,X) :-
    J >= N,
    J2 is J // N,
    M is J mod N,
    N進数利用文字(M,M2),
    N進数(N,J2,[M2|Y],X).

N進数利用文字(0,'0').
N進数利用文字(1,'1').
N進数利用文字(2,'2').
N進数利用文字(3,'3').
N進数利用文字(4,'4').
N進数利用文字(5,'5').
N進数利用文字(6,'6').
N進数利用文字(7,'7').
N進数利用文字(8,'8').
N進数利用文字(9,'9').
N進数利用文字(10,'A').
N進数利用文字(11,'B').
N進数利用文字(12,'C').
N進数利用文字(13,'D').
N進数利用文字(14,'E').
N進数利用文字(15,'F').
N進数利用文字(16,'G').
N進数利用文字(17,'H').
N進数利用文字(18,'I').
N進数利用文字(19,'J').
N進数利用文字(20,'K').
N進数利用文字(21,'L').
N進数利用文字(22,'M').
N進数利用文字(23,'N').
N進数利用文字(24,'O').
N進数利用文字(25,'P').
N進数利用文字(26,'Q').
N進数利用文字(27,'R').
N進数利用文字(28,'S').
N進数利用文字(29,'T').
N進数利用文字(30,'U').
N進数利用文字(31,'V').
N進数利用文字(32,'W').
N進数利用文字(33,'X').
N進数利用文字(34,'Y').
N進数利用文字(35,'Z').