Prolog - 使用列表列表和其中一个子列表中的元素
Prolog - Working with a list of lists and an element inside one of the sublists
我知道这里的一些问题与这个类似,但我没有经验,我不知道如何使用它们并将解决方案转换为我的问题;/
我有一个列表,里面有列表,比如这个:
[ [5],[4,7],[1,2,7],[2,6,7],[2,4,6,7],[2,4,7],[9,8],[3],[1] ]
我需要知道数字 3 的索引。我需要知道的数字只会出现在列表列表中一次,这是调用该函数的前提条件。对于数字 3,我需要的索引是索引 9(从 1 开始)。我有这个函数草稿:
given_elem_finds_pos(ListOfLists, Element, Pos):-
nth1(Pos, ListOfLists, [Element|_]).
但如果元素是子列表的头部,则它只是 returnsPos。我需要知道如何获取例如的索引数字 8.
然后我做了这个:
given_elem_finds_pos( [[H|T]| R], Element, Ind):-
member(Element, [H|T]),
Ind1 is Ind + 1,
given_elem_finds_pos(R, Element, Ind1).
但又一次,没有成功..任何人都可以帮忙吗?非常感谢!
你的第二种方法是朝着正确的方向前进。想想你想要描述什么:如果 Element
是你想要停止的 [H|T]
的一个元素,因此,不需要在这里进行递归调用。此外,您想要 return 当前索引,因此您需要一个额外的参数(一个用于计数器,一个用于最终索引)。如果 Element
不是列表的元素,则需要递归子句。这是一个元素
的情况的子句
given_elem_finds_pos( [List| R], Element, Solution,Solution):-
member(Element, List).
由于您必须添加额外的参数,因此您需要一个额外的谓词来调用您的扩展谓词:
given_elem_finds_pos(ListOfLists, Element, Ind):-
given_elem_finds_pos(ListOfLists, Element,0, Solution).
现在您只需要为 given_elem_finds_pos/4
编写一个子句,一个用于 "it's not an element" 情况的递归子句。问一下,如果你写这个条款有困难。
我知道这里的一些问题与这个类似,但我没有经验,我不知道如何使用它们并将解决方案转换为我的问题;/
我有一个列表,里面有列表,比如这个:
[ [5],[4,7],[1,2,7],[2,6,7],[2,4,6,7],[2,4,7],[9,8],[3],[1] ]
我需要知道数字 3 的索引。我需要知道的数字只会出现在列表列表中一次,这是调用该函数的前提条件。对于数字 3,我需要的索引是索引 9(从 1 开始)。我有这个函数草稿:
given_elem_finds_pos(ListOfLists, Element, Pos):-
nth1(Pos, ListOfLists, [Element|_]).
但如果元素是子列表的头部,则它只是 returnsPos。我需要知道如何获取例如的索引数字 8.
然后我做了这个:
given_elem_finds_pos( [[H|T]| R], Element, Ind):-
member(Element, [H|T]),
Ind1 is Ind + 1,
given_elem_finds_pos(R, Element, Ind1).
但又一次,没有成功..任何人都可以帮忙吗?非常感谢!
你的第二种方法是朝着正确的方向前进。想想你想要描述什么:如果 Element
是你想要停止的 [H|T]
的一个元素,因此,不需要在这里进行递归调用。此外,您想要 return 当前索引,因此您需要一个额外的参数(一个用于计数器,一个用于最终索引)。如果 Element
不是列表的元素,则需要递归子句。这是一个元素
given_elem_finds_pos( [List| R], Element, Solution,Solution):-
member(Element, List).
由于您必须添加额外的参数,因此您需要一个额外的谓词来调用您的扩展谓词:
given_elem_finds_pos(ListOfLists, Element, Ind):-
given_elem_finds_pos(ListOfLists, Element,0, Solution).
现在您只需要为 given_elem_finds_pos/4
编写一个子句,一个用于 "it's not an element" 情况的递归子句。问一下,如果你写这个条款有困难。