我是GProlog的初学者,我有一个关于正方形包装问题的学校项目(将子正方形包装在主正方形中)。
bool_to_int(B, I) :-
B -> I = 1; I = 0.
sum_size([], [], _, 0).
sum_size([X|Xs], [T|Ts], V, S) :-
sum_size(Xs, Ts, V, S2),
bool_to_int(X #=< V #/\ V #< X + T, I),
S #= S2 + T * I.
这是我代码的独立部分,其目的是通过检查对齐的平方和是否等于给定常数(此处称为S)来优化平方堆积问题的求解。 Xs是打包成主正方形的子正方形的X轴位置,Ts是大小的大小。
这是我的这段代码问题:
sum_size([0, 0, 1, 2, 2, 2], [2, 1, 1, 1, 1, 1], 0, 3).
-> true
在此示例中,主正方形为3x3。因此,这是将所有子正方形打包在主正方形中的预期答案:[0,0,1,2,2,2]是有效坐标。
现在,我希望GProlog通过编写以下代码为我解决问题:
length(L, 6), sum_size(L, [2, 1, 1, 1, 1, 1], 0, 3).
-> no
我不明白为什么答案是“否”,而不是给我可能的L值。