09/06/29 13:45:08
>>313 まちがえた。stackという述語のところ。stack/4 stack_1/4
と出てきますが、stack_op/4にします。
% Prolog
t312(StackIn,StackOut) :-
new_stack(StackIn,NewStack),
get_chars(Chars),
t312_1(Chars,NewStack,StackOut,_).
t312_1([],X,X,true).
t312_1([A|R1],Stack1,Stack2,Return) :-
stack_op(A,Stack1,Stack3,Return1),
t312_2(Return1),
t312_1(R1,Stack3,Stack2,Return).
t312_2(true) :- !.
t312_2(C) :- write(C).
new_stack(Var,[]) :- var(Var),!.
new_stack([],[]) :- !.
new_stack(Stack,Stack).
stack_op('/',[A|R2],R2,A) :- !.
stack_op(C,Stack1,[C|Stack1],true).