2013-02-22 2 views
1

PROLOG의 스택 개념을 사용하여 접미어 양식 (역 폴란드어 표기법)에서 산술 표현식을 접두어 형식으로 변환하는 프로그램을 작성하는 데 도움을 줄 수 있습니까? sin, cos, tan, exp, log and sqrt.프롤로그를 사용하여 접두어 접두어로 변환

+1

왜 스택이 필요합니까? Prolog는 이미 '스택 된'언어입니다. – CapelliC

+0

입력 형식이 정확히 무엇입니까? (그리고 귀하의 질문에 대답 : 예, 할 수) – Cephalopod

+0

입력 형식 및 예상 출력 형식은 다음과 같습니다 - post2pre ([9,4, +, 2,5, -, 특급, /], X). X = [/, +, 9,4, exp, -, 2,5] – user2099033

답변

1

append/2가 유용한리스트 콤비의 :, /, * 및 단항 기능 - 산술 식은 +, 4 산술 연산자를 포함 할 수있다. 임의의 수의리스트를 연결하는 비교적 일반적인 방법으로 관계을 허용합니다. 내가/1

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]). 

isop 정의, 당신이 당신의 임무 단항 기능과 같은 몇 가지 세부 사항 추가를 완료해야합니다, 여기에 단지 기본 보여 드리겠습니다 약간의 테스트 :

?- pos2pre([1,5,*,2,+],X). 
X = [+, *, 1, 5, 2]. 

난 당신이해야한다고 생각 같은 논리를 쓰려고 시도하지만 append/3을 사용하면 절차가 어떻게 작동하는지 이해하는 데 도움이됩니다.

관련 문제