到目前为止,我能想到的最好的事情是这个功能:
numberFromList([X], X) :- digit(X), !. numberFromList(List, N) :- member(X, List), delete(List, X, LX), numberFromList(LX, NX), N is NX * 10 + X.
wheredigit/1是一个验证原子是否为十进制数字的函数。
numberFromList(List, N)查找可以由 中的所有数字组成的所有数字List。
例如[2, 3] -> 23, 32。但我想得到这个结果:[2, 3] -> 2, 3, 23, 32
我花了很多时间思考这个问题,我怀疑你可能会append(L, _, List)在某个时候使用类似的东西来获取长度较短的列表。
我将不胜感激任何贡献。