- プログラミングのお題スレ Part4
207 :デフォルトの名無しさん[sage]:2014/06/25(水) 07:21:14.49 ID:f3dQ4AsB - >>197 Prolog
'アルファベットの小文字aからzで成り立つS(0≦S≦100)が標準入力から与えられる。連続する文字をカウントする。出力の最後に改行を挿入すること。' :- write('In: '),read(_文字列), '連続する文字をカウントする'(_文字列,'',_出力文字列), writef('Out:\n%t\n',[_出力文字列]). '連続する文字をカウントする'('','') :- !. '連続する文字をカウントする'(_文字列,_出力文字列) :- 文字列の先頭から同一文字を切り取る(_文字列,_連続文字,_連続文字数,_残り文字列), '連続する文字をカウントする'(_残り文字列,_残り出力文字列), atomic_list_concat([_連続文字,_連続文字数,_残り出力文字列],_出力文字列). 文字列の先頭から同一文字を切り取る(_文字列,_連続文字,_連続文字数,_残り文字列) :- sub_atom(_文字列,0,1,_,_連続文字), 連続文字数と残り文字列を得る(_文字列,_連続文字,_連続文字数,_残り文字列). 連続文字数と残り文字列を得る(_文字列,_連続文字,_連続文字数,_残り文字列) :- sub_atom(_文字列,_連続文字数,1,_,_文字), \+(_連続文字 = _文字), sub_atom(_文字列,_連続文字数,_,0,_残り文字列),!. 連続文字数と残り文字列を得る(_文字列,_連続文字,_連続文字数,'') :- atom_length(_文字列,_連続文字数).
| - プログラミングのお題スレ Part4
210 :デフォルトの名無しさん[sage]:2014/06/25(水) 08:00:42.64 ID:f3dQ4AsB - >>203 Prolog
'2つの整数が与えられたとき、桁数が同じ場合を求める。 指数関数は使わないこと。'(_整数_1,_整数_2) :- number_chars(_整数_1,_数字ならび_1), number_chars(_整数_2,_数字ならび_2), length(_数字ならび_1,_桁数), length(_数字ならび_2,_桁数).
| - 推薦図書/必読書のためのスレッド 73
266 :デフォルトの名無しさん[sage]:2014/06/25(水) 12:57:26.46 ID:f3dQ4AsB - >>266
萩谷昌己のような人がそう言っているのだとしたら、 そんなものかなぁー って思うけれど。
| - プログラミングのお題スレ Part4
215 :207[sage]:2014/06/25(水) 16:49:42.18 ID:f3dQ4AsB - >>207 これ間違っていた。最初の述語の
'連続する文字をカウントする'(_文字列,'',_出力文字列), % これ3引数で呼び出しているが、これは第二引数を削除し忘れ。 'アルファベットの小文字aからzで成り立つS(0≦S≦100)が標準入力から与えられる。連続する文字をカウントする。出力の最後に改行を挿入すること。' :- write('In: '),read(_文字列), '連続する文字をカウントする'(_文字列,_出力文字列), writef('Out:\n%t\n',[_出力文字列]). % が正しい。
|
|