小编Joh*_*ohn的帖子

从节点字符串的多路树构造

有一个很好的问题集叫做Ninety-Nine Prolog Problems.问题P70是标题中提到的问题.这是一个很好的Prolog 解决方案,这个问题只需要5行.但是,我对Prolog的理解是有限的.

该解决方案如何以类似C的形式显示(没有可用的itertools)?

按要求编辑.我希望我不侵犯版权.

问题:

BNF中的语法:

tree ::= letter forest '^'
forest ::= | tree forest
Run Code Online (Sandbox Code Playgroud)

使用差异列表的好方法:

tree(TS,T) :- atom(TS), !, atom_chars(TS,TL), tree_d(TL-[ ],T). % (+,?)
tree(TS,T) :- nonvar(T), tree_d(TL-[ ],T), atom_chars(TS,TL).   % (?,+)
tree_d([X|F1]-T, t(X,F)) :- forest_d(F1-['^'|T],F).
forest_d(F-F,[ ]).
forest_d(F1-F3,[T|F]) :- tree_d(F1-F2,T), forest_d(F2-F3,F).
Run Code Online (Sandbox Code Playgroud)

algorithm prolog multiway-tree

5
推荐指数
1
解决办法
449
查看次数

标签 统计

algorithm ×1

multiway-tree ×1

prolog ×1