首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Prolog将后缀转换为前缀

使用Prolog将后缀转换为前缀
EN

Stack Overflow用户
提问于 2013-02-22 10:36:13
回答 1查看 1.3K关注 0票数 1

有人能帮助我用PROLOG中的堆栈概念编写一个程序来将算术表达式从后缀(反向波兰符号)转换为前缀表单。该算术表达式可能包含4个算术运算符+、-、/、*和一元函数:sin, cos, tan, exp, log and sqrt.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-22 14:03:12

追加,/2,这是一个有用的列表组合器。它以相当一般的方式允许任意数量的列表之间的连接关系。我将在这里展示基本的内容,您需要完成您的任务,将一些细节添加为一元函数,定义isop/1

代码语言:javascript
复制
pos2pre(Pos, Pre) :-
    append([A, B, [O]], Pos), isop(O), A \= [], B \= [],
    pos2pre(A, APre),
    pos2pre(B, BPre),
    !, append([[O], APre, BPre], Pre).
pos2pre([P], [P]).

一个小小的考验:

代码语言:javascript
复制
?- pos2pre([1,5,*,2,+],X).
X = [+, *, 1, 5, 2].

我认为您应该尝试编写相同的逻辑,但是使用追加/3,这将帮助您理解该过程是如何工作的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15022133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档