강의는 운영자와 그들의 우선 순위에 대해 이야기했습니다. 작업이 초급 수준이지만 논리를 찾을 수있는 곳으로 머리를 감싸는 데 어려움이 있습니다.
작업은 met / 2 술어로 연산자를 변경하는 것입니다.
?- met(q+w+e,Y).
Y=q-w-e.
?- met(q-w-e,Y).
Y=q+w+e.
사람들이 나에게 올바른 방법을 알려도 똑바로 대답해도 상관 없습니다. 나는 이것을 잠시 동안 봤는데 아무것도 찾지 못했습니다. if-then을 시도했지만 작동하지 않았습니다.
미리 감사드립니다!
모든 프롤로그 용어는 트리로 표시 될 수 있습니다. 예를 q+w+e
들어라 는 용어의 경우 중위 연산자에 대한 표준 연산자 정의를 가정하면 다음과 (+)/2
같습니다.
?- write_canonical(q+w+e).
+(+(q,w),e)
true.
이제 트리가있는 경우 트리를 탐색 하고 리프가 아닌 각 노드에서 필요한 변환을 수행 할 수 있습니다 . 부분 용액 :
met('+'(Left, Right), '-'(TLeft, TRight)) :-
met(Left, TLeft),
met(Right, TRight).
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다