このディレクトリの索引

# 出典 :: ★★ Java の宿題ここで答えます Part 68 ★★ #380 # 【 課題 】 # 1・コマンドライン引数で2つの文字列を入力し、1番目に指定された文字列の中に2番目に指定された文字列が存在する場合は # 「この文字列はあります。(○文字目)」と表示し、存在しない場合は「この文字列は存在しません」と表示しなさい。 入力文字数は、1番目の文字列は10文字以上とし、2番目の文字列は2文字以上4文字以内とする。 # また、文字列は先頭から検索し、最初に見つかった文字のインデックスを表示することとする。。 # # 2・任意の文字列を内部で指定し、コマンドライン引数で2つの文字列を入力する。 # もし内部で指定した文字列に、1番目に指定した文字列が存在する場合は、その文字列を # 2番目に指定した文字列と置き換えてから表示し、存在しない場合は「置き換えなし」と表示しなさい。 # 入力文字数は、1番目、2番目ともに4文字以内とする。また最初に内部指定文字列を表示し、 # 1番目の文字列が複数する場合は、すべて置き換わっていること。 # # 3・コマンドライン引数で入力された文字列が # 3文字以下なら、その文字列を20個文字列連結して表示 # 4文字以上なら”たくさん” を表示しなさい。 # 文字列連結の際はStringBufferクラスを使用しなさい # for文を使用しなさい # コマンド引数(_コマンド引数ならび) :- current_prolog_flag(argv,_コマンド引数ならび). '1・コマンドライン引数で2つの文字列を入力し、1番目に指定された文字列の中に2番目に指定された文字列が存在する場合は 「この文字列はあります。(○文字目)」と表示し、存在しない場合は「この文字列は存在しません」と表示しなさい。入力文字数は、1番目の文字列は10文字以上とし、2番目の文字列は2文字以上4文字以内とする。 また、文字列は先頭から検索し、最初に見つかった文字のインデックスを表示することとする。' :- コマンド引数([_文字列_1,_文字列_2]), '文字列_1の中に文字列_2が含まれるかどうかを診断し結果を表示する'(_文字列_1,_文字列_2). '文字列_1の中に文字列_2が含まれるかどうかを診断し結果を表示する'(_文字列_1,_文字列_2) :- '文字列_1の中に文字列_2が含まれるかどうかを診断し'(_文字列_1,_文字列_2,_診断), 結果を表示する(_診断). '文字列_1の中に文字列_2が含まれるかどうかを診断し'(_文字列_1,_文字列_2,_診断) :- '1番目に指定された文字列の中に2番目に指定された文字列が存在する場合は'(_文字列_1,_文字列_2,_診断). '文字列_1の中に文字列_2が含まれるかどうかを診断し'(_文字列_1,_文字列_2,_診断) :- '存在しない場合は'(_文字列_1,_文字列_2,_診断). '1番目に指定された文字列の中に2番目に指定された文字列が存在する場合は'(_文字列_1,_文字列_2,_診断) :- sub_atom(_文字列_1,S,_,_,_文字列_2), S2 is S + 1, atomic_list_concat([この文字列はあります。,S2,文字目],_診断). '存在しない場合は'(_文字列_1,_文字列_2,この文字列は存在しません) :- \+('1番目に指定された文字列の中に2番目に指定された文字列が存在する場合は'(_文字列_1,_文字列_2,_診断)). 結果を表示する(_診断) :- writef('%w\n',[_診断]). % 二問目 '2・任意の文字列を内部で指定し、コマンドライン引数で2つの文字列を入力する。 もし内部で指定した文字列に、1番目に指定した文字列が存在する場合は、その文字列を 2番目に指定した文字列と置き換えてから表示し、存在しない場合は「置き換えなし」と表示しなさい。 入力文字数は、1番目、2番目ともに4文字以内とする。また最初に内部指定文字列を表示し、 1番目の文字列が複数する場合は、すべて置き換わっていること。' :- コマンド引数([_文字列_1,_文字列_2]), 内部で指定した置換対象文字列(_置換対象文字列), 文字列置換(_置換対象文字列,_文字列_1,_文字列_2,_置換された文字列), writef('%w\n',[_置換された文字列]). 文字列置換(_置換対象文字列,_文字列_1,_文字列_2,置き換えなし) :- \+(sub_atom(_置換対象文字列,_,_,_,_文字列_1)),!. 文字列置換(_置換対象文字列,_文字列_1,_文字列_2,_置換された文字列) :- 文字列置換_1(_置換対象文字列,_文字列_1,_文字列_2,_置換された文字列). 文字列置換_1(_置換対象文字列,_文字列_1,_文字列_2,_置換された文字列) :- 副文字列(_置換対象文字列,_前文字列,_文字列_1,_後文字列), 文字列置換_2(_前文字列,_文字列_1,_後文字列,_文字列_2,_置換された文字列),!. 文字列置換_1(_文字列,_,_,_文字列). 文字列置換_2(_前文字列,_文字列_1,_後文字列,_文字列_2,_置換された文字列) :- 文字列置換_1(_後文字列,_文字列_1,_文字列_2,_置換された文字列_2), atomic_list_concat([_前文字列,_文字列_2,_置換された文字列_2],_置換された文字列),!. 内部で指定した置換対象文字列(日暮るればうたふ乙女が声すみてとほき田面に早苗とるなり). %三問目 '3・コマンドライン引数で入力された文字列が 3文字以下なら、その文字列を20個文字列連結して表示 4文字以上なら"たくさん"を表示しなさい。 文字列連結の際はStringBufferクラスを使用しなさい' :- コマンド引数([_文字列]), 'コマンドライン引数で入力された文字列が 3文字以下なら、その文字列を20個文字列連結して表示 4文字以上なら"たくさん"を表示しなさい'(_文字列). 'コマンドライン引数で入力された文字列が 3文字以下なら、その文字列を20個文字列連結して表示 4文字以上なら"たくさん"を表示しなさい'(_文字列) :- sub_atom(_文字列1,0,_文字列長,0,_文字列), '3文字以下なら、その文字列を20個文字列連結して表示 4文字以上なら"たくさん"を表示しなさい'(_文字列,_文字列長). '3文字以下なら、その文字列を20個文字列連結して表示 4文字以上なら"たくさん"を表示しなさい'(_文字列,_文字列長) :- '3文字以下なら、その文字列を20個文字列連結して表示'(_文字列,_文字列長). '3文字以下なら、その文字列を20個文字列連結して表示 4文字以上なら"たくさん"を表示しなさい'(_文字列,_文字列長) :- 4文字以上なら"たくさん"を表示しなさい'(_文字列,_文字列長). '3文字以下なら、その文字列を20個文字列連結して表示'(_文字列,_文字列長) :- _文字列長 =< 3, 'その文字列を20個文字列連結して表示'(_文字列). 'その文字列を20個文字列連結して表示'(_文字列) :- 'その文字列を20個文字列連結して(_文字列,_表示文字列), 表示(_表示文字列). 'その文字列を20個文字列連結して(_文字列,_表示文字列) :- findall(_文字列,between(1,20,_),_文字列ならび), atomic_list_concat(_文字列ならび,_表示文字列). 表示(_表示文字列) :- writef('%w\n',[_表示文字列]).