gpt4 book ai didi

prolog - 具有相同开始和结束的所有子串

转载 作者:行者123 更新时间:2023-12-05 00:51:59 26 4
gpt4 key购买 nike

我必须完成作业,但我对 Prolog 的了解非常有限。任务如下:
编写一个 Prolog 程序,该程序可以列出一个字符串的所有子串,其长度至少为两个字符且首尾字符相同。

例如:

?- sameend("teletubbies", R).
R = "telet";
R = "ele";
R = "eletubbie";
R = "etubbie";
R = "bb";
false.

我解决这个问题的方法是我应该用头/尾遍历字符串并找到与当前相同的下一个字母的索引(它满足最小 2 长度要求)并用 sub_string 剪切子字符串谓词。

最佳答案

这在一定程度上取决于您对字符串的确切含义。传统上,在 Prolog 中,字符串是一个字符列表。为确保您真正获得这些,请使用以下指令。见 this answer更多。

:- set_prolog_flag(double_quotes, chars).

sameend(Xs, Ys) :-
phrase( ( ..., [C], seq(Zs), [C], ... ), Xs),
phrase( ( [C], seq(Zs), [C] ), Ys).

... --> [] | [_], ... .

seq([]) -->
[].
seq([E|Es]) -->
[E],
seq(Es).

关于prolog - 具有相同开始和结束的所有子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43430620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com