Пример моей проблемы CLP (это небольшая часть более широкой проблемы, которая использует clpfd библиотеку):CLP в Прологе с участием последовательных сумм в списке
Для получения списка длины 5, факт el_sum(Pos,N,Sum)
указывает, что N последовательных элементов, начиная с позиции Pos (индекс от 1), имеют сумму, равную сумме. Так что, если у нас есть
el_sum(1,3,4).
el_sum(2,2,3).
el_sum(4,2,5).
Тогда [1,2,1,4,1]
будет работать на этом примере, так как 1 + 2 + 1 = 4, 2 + 1 = 3, 4 + 1 = 5.
Я борюсь с тем, как даже начать использовать el_sum's
, чтобы найти решения с входным списком [X1,X2,X3,X4,X5]
. Я думаю, что я должен использовать findall
, но я ничего не понимаю.
(Моя фактическая проблема намного больше, поэтому я ищу решение, которое не просто работает для трех фактов и небольшого списка).
Спасибо!