PrologでまったりPart 2
■ このスレッドは過去ログ倉庫に格納されています
0064デフォルトの名無しさん
NGNGところで>>55,56の私のプログラムですが、
あらゆる組合せを無条件に生成してから最後にチェックしているので遅いですね。
そこで、組合せのわかっている部分を取り出して始点にすれば探索空間を絞れます。
--- pizza.pl.old Wed Jan 5 18:33:38 2005
+++ pizza.pl Wed Jan 5 18:34:36 2005
@@ -14,6 +14,8 @@
select(P,Prices,RPrices),
associate(R,RTypes,RMeats,RVegetables,RPrices).
+pizza_menu([(hawaiian,mussels,_,_),(marco_polo,_,tomato,_),(pepperoni,_,_,7.00),(super_supreme,_,_,_),(ninja,_,_,_)]).
+
pizza_combinations(S) :-
member((hawaiian,mussels,_,Price1),S),Price1 > 6.50,
member((marco_polo,Meat2,tomato,_),S),Meat2 \= ham,
@@ -27,5 +29,6 @@
pizza_solution(S) :-
pizza_types(Types), pizza_meats(Meats), pizza_vegetables(Vegetables),
pizza_prices(Prices),
+ pizza_menu(S),
associate(S,Types,Meats,Vegetables,Prices),
pizza_combinations(S).
あとはもはや冗長となったtypesの扱いを削ることができ、
そうすれば44さんのプログラムとほぼ同じ形になりますね。ふむ。
■ このスレッドは過去ログ倉庫に格納されています