このディレクトリの索引

# 出典 :: # 問題文 # データを読み込み2進、8進、10進、16進で表示せよ。 # ただし、読み込みはgetchar()で4桁入力。表示はputchar()で必要桁数表示する。 # データが0の時処理を終了、データ入力はXXXXとする。 'データを読み込み2進、8進、10進、16進で表示' :- forall('データを読み込み'(_データ),(_データ='0',!,fail;true),'2進、8進、10進、16進で表示'(_データ)). 'データを読み込み'(_データ) :- write('4桁の数字を入力してください : '), 行入力(_行), atom_numbe(Line,_10進数). '2進、8進、10進、16進で表示'(_10進数). '2進、8進、10進、16進で表示'(0) :- !. '2進、8進、10進、16進で表示'(_10進数) :- 'N進数'(2,_10進数,_2進数文字列), 'N進数'(8,_10進数,_8進数文字列), 'N進数'(16,_10進数,_16進数文字列), writef('%tの 2進数表示は %w, 8進数表示は %w, 16進数表示は %w,です\n',[_2進数文字列,_8進数文字列,_16進数文字列]). 'N進数'(N,_10進数,_N進数文字列) :- 'N進数'(N,_10進数,[],X), atomic_list_concat(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進数利用文字ならび'(N,_利用文字ならび) :- length(L1,N), findall(A,'N進数利用文字'(_,A),L), append(L1,_,L). 'N進数剰余数利用文字ならび'(N,_剰余数利用文字ならび) :- length(L1,N), findall([M,A],'N進数利用文字'(M,A),L), append(L1,_,L). 'N進数を利用した簡単な暗号化'(N,_文,_暗号化された文) :- atom_codes(_文,Codes), Y is 65536 // N, atomic_length(Y,_桁数), 'N進数を利用した簡単な暗号化'(N,_桁数,Codes,_暗号化された文字ならび), atomic_list_concat(_暗号化された文字ならび,' ',_暗号化された文). 'N進数を利用した簡単な暗号化'(_,_,[],[]). 'N進数を利用した簡単な暗号化'(N,_桁数,L1,L2) :- 'N進数を利用した簡単な暗号化して行く'(N,_桁数,L1,L2). 'N進数を利用した簡単な暗号化して行く'(N,_桁数,[A|R1],[C|R2]) :- 'N進数'(N,A,[],L), '頭部に零を詰める'(_桁数,L,L2), atom_chars(C,L2), 'N進数を利用した簡単な暗号化'(N,_桁数,R1,R2). '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'). 'N進数利用文字'(36,'a'). 'N進数利用文字'(37,'b'). 'N進数利用文字'(38,'c'). 'N進数利用文字'(39,'d'). 'N進数利用文字'(40,'e'). 'N進数利用文字'(41,'f'). 'N進数利用文字'(42,'g'). 'N進数利用文字'(43,'h'). 'N進数利用文字'(44,'i'). 'N進数利用文字'(45,'j'). 'N進数利用文字'(46,'k'). 'N進数利用文字'(47,'l'). 'N進数利用文字'(48,'m'). 'N進数利用文字'(49,'n'). 'N進数利用文字'(50,'o'). 'N進数利用文字'(51,'p'). 'N進数利用文字'(52,'q'). 'N進数利用文字'(53,'r'). 'N進数利用文字'(54,'s'). 'N進数利用文字'(55,'t'). 'N進数利用文字'(56,'u'). 'N進数利用文字'(57,'v'). 'N進数利用文字'(58,'w'). 'N進数利用文字'(59,'x'). 'N進数利用文字'(60,'y'). 'N進数利用文字'(61,'z'). atomic_length(A,_長さ) :- atom(A), atom_length(A,_長さ). atomic_length(A,_長さ) :- number(A), number_chars(A,L), length(L,_ながさ).