>>789
% Prolog

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,_曜日).