このXKCDコミックで言及されている問題に対するこのECLiPSeソリューションを見ました。私はこれを純粋なPrologに変換しようとしました。
go:-
Total = 1505,
Prices = [215, 275, 335, 355, 420, 580],
length(Prices, N),
length(Amounts, N),
totalCost(Prices, Amounts, 0, Total),
writeln(Total).
totalCost([], [], TotalSoFar, TotalSoFar).
totalCost([P|Prices], [A|Amounts], TotalSoFar, EndTotal):-
between(0, 10, A),
Cost is P*A,
TotalSoFar1 is TotalSoFar + Cost,
totalCost(Prices, Amounts, TotalSoFar1, EndTotal).
これが、思いつくことができる最良の/最も宣言的な解決策ではないと思います。誰かが改善のための提案がありますか?前もって感謝します!