将字符列表转换为字符串列表,每个字符串在 Prolog 中包含 3 个字符
converting character list to list of strings with each one contains 3 characters in Prolog
我想使用 Prolog 将字符列表转换为字符串列表,每个字符串包含 3 个字符。
例如,['a'、'b'、'c'、'd'、'e'、'f'] 将转换为 [ "abc", "def"].
我试过的是
toTriplets([H1|[H2|[H3|T]]],[F|R]) :- string_concat(H1,H2,X) , string_concat(X,H3,F) , toTriplets(T,R).
但是,当我执行命令时,这给了我错误
?- toTriplets(['a','b','c','d','e','f'],X).
false.
我的代码有什么问题?实在想不通...
问题是您缺少递归的基本情况。
例如
toTriplets([],[]).
确实,您有 机会来决定是仅接受三元组 - 如上所述 - 还是接受不完整的三元组,例如
toTriplets([A,B],[AB]) :- string_concat(A,B,AB).
toTriplets([A],[S]) :- atom_string(A,S).
我想使用 Prolog 将字符列表转换为字符串列表,每个字符串包含 3 个字符。
例如,['a'、'b'、'c'、'd'、'e'、'f'] 将转换为 [ "abc", "def"].
我试过的是
toTriplets([H1|[H2|[H3|T]]],[F|R]) :- string_concat(H1,H2,X) , string_concat(X,H3,F) , toTriplets(T,R).
但是,当我执行命令时,这给了我错误
?- toTriplets(['a','b','c','d','e','f'],X).
false.
我的代码有什么问题?实在想不通...
问题是您缺少递归的基本情况。 例如
toTriplets([],[]).
确实,您有 机会来决定是仅接受三元组 - 如上所述 - 还是接受不完整的三元组,例如
toTriplets([A,B],[AB]) :- string_concat(A,B,AB).
toTriplets([A],[S]) :- atom_string(A,S).