List prolog中的关联列表
我想在prolog中编写一个规则,它可以获取参数List prolog中的关联列表,list,prolog,associations,List,Prolog,Associations,我想在prolog中编写一个规则,它可以获取参数 FAssoc:包含爬楼梯方法数的关联列表 U:楼梯的最后一步数 键:我正在执行的当前步骤,以及 步骤:一个列表,列出每一步我可以爬的楼梯的可能数量 我想计算一下从我现在的那一步到最后一步我可以爬楼梯的次数 示例: list_to_assoc([1-1,2-0,3-0,4-1,5-0],Fassoc), calc_next(5, 1 , Fassoc , [1,2,6],F), assoc_to_list(F,L). L = [1-1
- FAssoc:包含爬楼梯方法数的关联列表
- U:楼梯的最后一步数
- 键:我正在执行的当前步骤,以及
- 步骤:一个列表,列出每一步我可以爬的楼梯的可能数量
list_to_assoc([1-1,2-0,3-0,4-1,5-0],Fassoc),
calc_next(5, 1 , Fassoc , [1,2,6],F),
assoc_to_list(F,L).
L = [1-1, 2-1, 3-1, 4-1, 5-0].
然而,我期望的答案是L=[1-1,2-1,3-1,4-1,5-2]。
因为我可以去
1->2->3->4->5。
或1->5
我正在使用这个函数
calc_next(U,Key,FAssoc,[H|T],New):-
(Limit is H+Key,
Limit=<U->
get_assoc(Limit,FAssoc,UntilNow),
get_assoc(Key,FAssoc,ElH),
Update0 is UntilNow+ElH,
Update is Update0 mod 1000000009,
put_assoc(Limit,FAssoc,Update,Assoc),
get_assoc(Limit,FAssoc,Z),write('a'),
calc_next(U,Key,Assoc,T,New)),!.
calc_next(U,Key,FAssoc,[H|T],New):-
calc_next(U,Key,FAssoc,T,New),write('c'),!.
下一步计算(U,键,FAssoc[H | T],新):-
(限制为H+键,
极限=
获得协会(限额、FAssoc、直至现在),
获取助理(钥匙、FAssoc、ElH),
更新0直到现在+ElH,
更新为更新0 mod 1000000009,
放置助理(限制、FAssoc、更新、助理),
获取关联(限制,FAssoc,Z),写入('a'),
计算下一步(U、键、助理、T、新)),!。
下一步计算(U,键,FAssoc[H | T],新):-
计算下一步(U,键,FAssoc,T,新),写('c'),!。
不清楚(至少对我来说)你所说的“爬楼梯的方法数”到底是什么意思。你能解释一下你的例子吗?每个元组(x-y
)是什么意思?我不清楚这一切是如何运作的。我有点搞不清楚答案是什么,[1-1,2-1,3-1,4-1,5-2]
是由于能够去1->2->3->4->5
或1->5
而产生的。这让我想知道:为什么不1->3->5
?不清楚(至少对我来说)你所说的“爬楼梯的方法数”到底是什么意思。你能解释一下你的例子吗?每个元组(x-y
)是什么意思?我不清楚这一切是如何运作的。我有点搞不清楚答案是什么,[1-1,2-1,3-1,4-1,5-2]
是由于能够去1->2->3->4->5
或1->5
而产生的。这让我想:为什么不1->3->5
?