このディレクトリの索引

# 出典 :: #672 # よろしくお願いします # [1] 授業単元:関数の復習と応用 # [2] 問題文(含コード&リンク):() # 曜日計算をします。曜日を2つ入力してください。 # 曜日1:水曜 # 曜日2:木曜 # # 水曜 + 木曜 = 日曜 '曜日計算をします。曜日を2つ入力してください。 曜日1:水曜 曜日2:木曜 水曜 + 木曜 = 日曜' :- '曜日_1と曜日_2を入力してください。'(_曜日_1,_曜日_2), 'それぞれの曜日を曜日番号に置き換え、二つの曜日番号を加算して、余りの番号から対応する曜日を得る'(_曜日_1,_曜日_2,_曜日), '曜日_1、曜日_2、曜日を表示する'(_曜日_1,_曜日_2,_曜日). '曜日_1と曜日_2を入力してください。'(_曜日_1,_曜日_2) :- 曜日_1の入力(_曜日_1), 曜日_2の入力(_曜日_2). 曜日_1の入力(_曜日_1) :- write('曜日を二つ入力します\n曜日1: '), 行入力(_曜日1). 曜日_2の入力(_曜日_2) :- write('曜日_2 : '), 行入力(_曜日_2). 'それぞれの曜日を曜日番号に置き換え、二つの曜日番号を加算して、余りの番号から対応する曜日を得る'(_曜日_1,_曜日_2,_曜日) :- 'それぞれの曜日を曜日番号に置き換え、'(_曜日_1,_曜日_2,_曜日番号_1,_曜日番号_2), '二つの曜日番号を加算して、7を法として余りをとり、その曜日を得る'(_曜日番号_1,_曜日番号_2,_曜日). 'それぞれの曜日を曜日番号に置き換え、'(_曜日_1,_曜日_2,_曜日番号_1,_曜日番号_2) :- 曜日番号(_曜日_1,_曜日番号_1), 曜日番号(_曜日_2,_曜日番号_2). 曜日番号(日曜,0). 曜日番号(月曜,1). 曜日番号(火曜,2). 曜日番号(水曜,3). 曜日番号(木曜,4). 曜日番号(金曜,5). 曜日番号(土曜,6). '二つの曜日番号を加算して、7を法として余りをとり、その曜日を得る'(_曜日番号_1,_曜日番号_2,_曜日) :- '二つの曜日番号を加算して、'(_曜日番号_1,_曜日番号_2,_曜日番号_3), '7を法として余りをとり、その曜日を得る'(_曜日番号_3,_曜日). '二つの曜日番号を加算して、'(_曜日番号_1,_曜日番号_2,_曜日番号_3) :- _曜日番号_3 is _曜日番号_1 + _曜日番号_2. '7を法として余りをとり、その曜日を得る'(_曜日番号_3,_曜日) :- _余り is _曜日番号_3 mod 7, 曜日番号(_曜日,_余り). '曜日_1、曜日_2、曜日を表示する'(_曜日_1,_曜日_2,_曜日) :- writef('%w + %w = %w\n',[_曜日_1,_曜日_2,_曜日]). 行入力(_行) :- read_line_to_codes(current_input,_コードならび), atom_codes(_行,_コードならび). % 第二案 t789 :- write('曜日を二つ入力します\n曜日1: '), get_line(_曜日1), write('曜日2: '), get_line(_曜日2), 曜日加算(_曜日1,_曜日2,_曜日), write_formatted('%t + %t = %t\n',[_曜日1,_曜日2,_曜日]). 曜日加算(_曜日1,_曜日2,_曜日) :- L = [日曜,月曜,火曜,水曜,木曜,金曜,土曜], append(L1,[_曜日2|_],L), append(L,L1,L2), 曜日加算(L2,_曜日1,L2,_曜日2,_曜日). 曜日加算([_曜日1|R1],_曜日1,L2,_曜日2,_曜日) :- 曜日加算の二([_曜日1|R1],L2,_曜日2,_曜日). 曜日加算([Y|R1],_曜日1,L2,_曜日2,_曜日) :- 曜日加算(R1,_曜日1,L2,_曜日2,_曜日). 曜日加算の二([_曜日X|_],[_曜日2|_],_曜日2,_曜日). 曜日加算の二([_|R1],[Y|R2],_曜日2,_曜日) :- 曜日加算の二(R1,R2,_曜日2,_曜日).