到目前为止,我能想到的最好的事情是这个功能:
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)
在某个时候使用类似的东西来获取长度较短的列表。
我将不胜感激任何贡献。