List 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

我想在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, 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