このディレクトリの索引 http://toro.2ch.net/test/read.cgi/tech/1358572977/ # (問3) 与えられた自然数 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) が、 # これを逆に並べた数字の列 a(0)a(1)a(2)...a(p-2)a(p-1) と一致するかどうかを調べ、その結果を出力する # (プログラム3) を作成した。たとえば、 (プログラム3) を実行して変数 N に 202 を入力すると、 # 202 は 3 進数表示が 21111 であるから「一致しない」と出力される。また、変数 N に 203 を # 入力すると、 203 は 3 進数表示が 21112 であるから「一致する」と出力される。 '与えられた自然数 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) が、 これを逆に並べた数字の列 a(0)a(1)a(2)...a(p-2)a(p-1) と一致するかどうかを調べ、その結果を出力する'(N) :- '与えられた自然数 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) がこれを逆に並べた数字の列 a(0)a(1)a(2)...a(p-2)a(p-1) と一致するかどうかを調べ'(_Nの3進数表示,_結果), 結果を出力する(_結果). '与えられた自然数 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) がこれを逆に並べた数字の列 a(0)a(1)a(2)...a(p-2)a(p-1) と一致するかどうかを調べ'(N,一致する) :- '与えられた自然数 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) がこれを逆に並べた数字の列 a(0)a(1)a(2)...a(p-2)a(p-1) と一致するかどうかを調べ'(N,[],L,L),!. '与えられた自然数 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) がこれを逆に並べた数字の列 a(0)a(1)a(2)...a(p-2)a(p-1) と一致するかどうかを調べ'(_,一致しない). '与えられた自然数 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) がこれを逆に並べた数字の列 a(0)a(1)a(2)...a(p-2)a(p-1) と一致するかどうかを調べ'(0,L,L,[]) :- !. '与えられた自然数 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) がこれを逆に並べた数字の列 a(0)a(1)a(2)...a(p-2)a(p-1) と一致するかどうかを調べ'(N,L1,L,[M|R3]) :- M is N mod 3, N_1 is N // 3, '与えられた自然数 N の 3 進数表示 a(p-1)a(p-2)...a(2)a(1)a(0) がこれを逆に並べた数字の列 a(0)a(1)a(2)...a(p-2)a(p-1) と一致するかどうかを調べ'(N_1,[M|L1],R3). 結果を出力する(_結果) :- writef('%t\n',[_結果]).