gpt4 book ai didi

matrix - Prolog - 从列表列表中获取元素

转载 作者:行者123 更新时间:2023-12-01 12:59:01 24 4
gpt4 key购买 nike

我无法弄清楚如何在不使用递归的情况下访问字符串列表中的单个字符,而是使用回溯。

例如,我有这个字符串列表,我希望能够从这些字符串('.' 'o'、'*')之一返回单个字符。我正在处理的程序将其视为行和列。我的数据库中的事实如下所示:

matrix(["...o....",
".******.",
"...o....",
".*...*..",
"..o..*..",
".....*..",
".o...*..",
"....o..o"].

我有谓词:

get(Row,Col,TheChar) :- 

获取行号和列号(索引从 1 开始)并返回该特定行和列的条目 (TheEntry)。

我感觉我的谓词头可能构建不正确,但我真的更关注如何在不递归的情况下逐个字符地遍历列表中的每个字符串并返回它。

我是 prolog 的新手,在这方面遇到了很大的困难。

如有任何帮助,我们将不胜感激!

谢谢!

最佳答案

get/3 的实现可能如下所示:

get(Row,Col,TheChar) :-    
matrix(M),
nth(Row,M,RowList),
nth(Col,RowList,TheChar).

请注意,TheChar 统一为一个字符代码,例如

| ?- get(1,4,X).
X = 111

如果您想查看字符,例如可以使用原子代码,例如

| ?- get(4,2,X), atom_codes(CharAtom,[X]).
X = 42
CharAtom = *

希望这对您有所帮助。

关于matrix - Prolog - 从列表列表中获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7912783/

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