tasks a-s
This commit is contained in:
parent
47bf37c096
commit
b83f433714
12433 changed files with 156208 additions and 123 deletions
|
|
@ -0,0 +1,33 @@
|
|||
(de leftAssoc (Op)
|
||||
(member Op '("*" "/" "+" "-")) )
|
||||
|
||||
(de precedence (Op)
|
||||
(case Op
|
||||
("\^" 4)
|
||||
(("*" "/") 3)
|
||||
(("+" "-") 2) ) )
|
||||
|
||||
(de rpnToInfix (Str)
|
||||
(let Stack NIL
|
||||
(prinl "Token Stack")
|
||||
(for Token (str Str "_")
|
||||
(cond
|
||||
((num? Token) (push 'Stack (cons 9 @))) # Highest precedence
|
||||
((not (cdr Stack)) (quit "Stack empty"))
|
||||
(T
|
||||
(let (X (pop 'Stack) P (precedence Token))
|
||||
(set Stack
|
||||
(cons P
|
||||
(pack
|
||||
(if ((if (leftAssoc Token) < <=) (caar Stack) P)
|
||||
(pack "(" (cdar Stack) ")")
|
||||
(cdar Stack) )
|
||||
" " Token " "
|
||||
(if ((if (leftAssoc Token) <= <) (car X) P)
|
||||
(pack "(" (cdr X) ")")
|
||||
(cdr X) ) ) ) ) ) ) )
|
||||
(prin Token)
|
||||
(space 6)
|
||||
(println Stack) )
|
||||
(prog1 (cdr (pop 'Stack))
|
||||
(and Stack (quit "Garbage remained on stack")) ) ) )
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
: (rpnToInfix "3 4 2 * 1 5 - 2 3 \^ \^ / +")
|
||||
Token Stack
|
||||
3 ((9 . 3))
|
||||
4 ((9 . 4) (9 . 3))
|
||||
2 ((9 . 2) (9 . 4) (9 . 3))
|
||||
* ((3 . "4 * 2") (9 . 3))
|
||||
1 ((9 . 1) (3 . "4 * 2") (9 . 3))
|
||||
5 ((9 . 5) (9 . 1) (3 . "4 * 2") (9 . 3))
|
||||
- ((2 . "1 - 5") (3 . "4 * 2") (9 . 3))
|
||||
2 ((9 . 2) (2 . "1 - 5") (3 . "4 * 2") (9 . 3))
|
||||
3 ((9 . 3) (9 . 2) (2 . "1 - 5") (3 . "4 * 2") (9 . 3))
|
||||
^ ((4 . "2 \^ 3") (2 . "1 - 5") (3 . "4 * 2") (9 . 3))
|
||||
^ ((4 . "(1 - 5) \^ 2 \^ 3") (3 . "4 * 2") (9 . 3))
|
||||
/ ((3 . "4 * 2 / (1 - 5) \^ 2 \^ 3") (9 . 3))
|
||||
+ ((2 . "3 + 4 * 2 / (1 - 5) \^ 2 \^ 3"))
|
||||
-> "3 + 4 * 2 / (1 - 5) \^ 2 \^ 3"
|
||||
|
||||
: (rpnToInfix "1 2 + 3 4 + \^ 5 6 + \^")
|
||||
Token Stack
|
||||
1 ((9 . 1))
|
||||
2 ((9 . 2) (9 . 1))
|
||||
+ ((2 . "1 + 2"))
|
||||
3 ((9 . 3) (2 . "1 + 2"))
|
||||
4 ((9 . 4) (9 . 3) (2 . "1 + 2"))
|
||||
+ ((2 . "3 + 4") (2 . "1 + 2"))
|
||||
^ ((4 . "(1 + 2) \^ (3 + 4)"))
|
||||
5 ((9 . 5) (4 . "(1 + 2) \^ (3 + 4)"))
|
||||
6 ((9 . 6) (9 . 5) (4 . "(1 + 2) \^ (3 + 4)"))
|
||||
+ ((2 . "5 + 6") (4 . "(1 + 2) \^ (3 + 4)"))
|
||||
^ ((4 . "((1 + 2) \^ (3 + 4)) \^ (5 + 6)"))
|
||||
-> "((1 + 2) \^ (3 + 4)) \^ (5 + 6)"
|
||||
Loading…
Add table
Add a link
Reference in a new issue