このディレクトリの索引

# <<課題>> C # 出典 :: C/C++の宿題片付けます 127代目 #209 # 1行に一つづつ表示するプログラムを作成せよ。 # 空白が2個以上連続してもうまく動作するようにすること。また、コンマ(,)、 # ピリオド(,)は表示する単語に含めないこと。 # # (実行例) # ・入力 #   This is a pen. # # ・出力 # This # is # a # pen # 文字列から切り出した単語の行表示(_文字列) :- 文字列から単語の切り出し(_文字列,_単語ならび), '1行に一つずつ表示する'(_単語ならび). 文字列から単語の切り出し(_文字列,_単語ならび) :- atom_chars(_文字列,_文字ならび), 文字ならびを区切り文字により分割する(_文字ならび,L), 単語ならびに変換(L,_単語ならび). 文字ならびを区切り文字により分割する(L1,L2) :- '先頭から続く区切り文字は読み飛ばし、区切り文字で区切って語彙ならびを構成する'(L1,L2),!. 文字ならびを区切り文字により分割する(_,[]). '先頭から続く区切り文字は読み飛ばし、区切り文字で区切って語彙ならびを構成する'(L1,L2) :- '先頭から続く区切り文字は読み飛ばし、'(L1,L2),!. '先頭から続く区切り文字は読み飛ばし、区切り文字で区切って語彙ならびを構成する'(L1,L2) :- '区切り文字で区切って語彙ならびを構成する'(L1,L2). '先頭から続く区切り文字は読み飛ばし、'([A|R1],R2) :- 区切り文字(A), 文字ならびを区切り文字により分割する(R1,R2),!. '区切り文字で区切って語彙ならびを構成する'(_文字ならび,[L1|R]) :- '区切り文字で区切って'(_文字ならび,L1,A,L2), 文字ならびを区切り文字により分割する(L2,R),!. '区切り文字で区切って'(_文字ならび,L1,A,L2) :- append(L1,[A|L2],_文字ならび), 区切り文字(A). 区切り文字(' '). 区切り文字('\n'). 区切り文字('.'). 区切り文字(','). 単語ならびに変換(LL1,L) :- findall(_単語,( 要素の文字ならびを単語に変換する(LL1,_単語)),L). 要素の文字ならびを単語に変換する(LL1,_単語) :- member(L1,LL1), atomic_list_concat(L1,_単語). '1行に一つずつ表示する'(L) :- forall(member(A,L),writef('%w\n',[A])).