Files
psil/clitests/reverse-tree.test.psil
2024-01-04 12:53:24 +01:00

40 lines
1.0 KiB
Plaintext

(define (equal? a b)
(if (nil? a) (if (nil? b) 1 0)
(if (atom a)
(if (atom b) (= a b) 0)
(if (atom b) 0 (if (equal? (car a) (car b)) (equal? (cdr a) (cdr b)) 0))
)
)
)
(define (empty? l)
(equal? l (quote()))
)
(define (reverse-tree bst)
(if (empty? bst)
(nil)
(cons
(car bst)
(cons
(reverse-tree (car (cdr (cdr bst))))
(cons (reverse-tree (car (cdr bst))) (nil))
)
)
)
)
(reverse-tree (quote()))
(equal? (reverse-tree (quote())) (nil))
(reverse-tree (quote(1 () ())))
(equal? (reverse-tree (quote(1 () ()))) (quote(1 () ())))
(reverse-tree (quote(1 (2 () ()) ())))
(equal? (reverse-tree (quote(1 (2 () ()) ()))) (quote(1 () (2 () ()))))
(reverse-tree (quote(2 (1 () ()) (3 () ()))))
(equal? (reverse-tree (quote(2 (1 () ()) (3 () ())))) (quote(2 (3 () ()) (1 () ()))))
(reverse-tree (quote(10 (5 (3 () ()) ()) (20 () (25 () ())))))
(equal? (reverse-tree (quote(10 (5 (3 () ()) ()) (20 () (25 () ()))))) (quote(10 (20 (25 () ()) ()) (5 () (3 () ())))))