10/07/23 07:03:30
>>307
% Prolog
色名を取得する :-
item(_item_id,_name,_color),
色の割り当て(_color,_色名),
write_formatted('%t %t %t\n',[_item_id,_name,_色名]),
fail.
色名を取得する.
色の割り当て(_色番号,_色名) :-
findall([_color_id,_name],color(_color_id,_name),L),
sort(L,L1),
reverse(L1,L2),
色の割り当て(_色番号,L2,_色名).
色の割り当て(N,_,_) :- N =< 0,!,fail.
色の割り当て(N,[[C,_色名]|R1],_色名) :-
1 is N // C.
色の割り当て(N,[[C,_]|R1],_色名) :-
1 is N // C,
M is N mod C,
色の割り当て(M,R1,_色名).
色の割り当て(N,[[C,_]|R1],_色名) :-
0 is N // C,
M is N mod C,
色の割り当て(M,R1,_色名).