10/07/02 07:05:19
>>193 (>>189)
% Prolog また、改行ミスがあった。
'output_b.txtを読み込み、ある誕生日を入力したときに、その学生の学籍番号、氏名、誕生月、誕生日を二分探索法により出力する'(_誕生_月,_誕生_日) :-
get_split_lines('output_b.txt',[' ',月,日],LL),
二分探索法(LL,_誕生_月,_誕生_日,[_学籍番号,_氏名,_誕生_月,_誕生_日]),
write_formatted('%t %t %t %t月%t日\n',[_学籍番号,_誕生_月,_誕生_日]).
二分探索法(LL,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
'1-3月を13-15月に修正'(_誕生_月,_誕生月_0),
length(LL,Len),
Len0 is Len // 2,
append(L0,[[_学籍番号_1,_氏名_1,_誕生_月_1,_誕生_日_1|L1],LL),
length(L0,Len0),
'1-3月を13-15月に修正'(_誕生_月_1,_誕生月_10),
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月,_誕生_日,_誕生_月,_誕生_日,L) :- !.
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
[_誕生_月_0,_誕生_日] @> [_誕生_月_10,_誕生_日_1],!,
二分探索法(L0,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
[_誕生_月_0,_誕生_日] @< [_誕生_月_10,_誕生_日_1],!,
二分探索法(L1,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).