【发布时间】:2017-04-15 19:53:26
【问题描述】:
我必须解决一个家庭作业,但我对 Prolog 的了解非常有限。任务如下:
编写一个 Prolog 程序,它可以列出一个字符串的所有这些子字符串,其长度至少为两个字符,并且第一个和最后一个字符相同。
例如:
?- sameend("teletubbies", R).
R = "telet";
R = "ele";
R = "eletubbie";
R = "etubbie";
R = "bb";
false.
我解决这个问题的方法是我应该用头/尾遍历字符串并找到下一个与当前相同的字母的索引(它满足最小 2 长度要求)并用sub_string 谓词。
【问题讨论】:
-
你能展示一下你目前的方法吗?
-
这只是一个想法,但在代码中可能看起来像这样:sameend([H|T], R) :- sameend([T], R), % 并且应该有再次递归调用以检查相同字符的位置,然后从 H 的位置到下一次出现的 sub_string()。
标签: prolog declarative-programming