Please help a newbie with 3 (simple) problems
Posted: Sat Dec 12, 2009 6:51 am
Hi!
I'm a newbie in Lisp, and i have some problems with some simple code.
1) My first problem is like this: I have a tree in Lisp like with this representation: (A 2 B 0 C 2 D 0 E 0) , which would be equivalent with (A (B) (C (D) (E))). I need to know how could I obtain the Postorder Traversal Sequence for the first representation. I figured out how to do it for the second representation of the tree, but I can't do it for the first one. Please help me if you can.
At this problem, I tried something, but it didn't work:
(defun post(l)
(cond
((null l) nil)
(t(cons(post(caddr l))(car l))))
)
)
For the other 2 problems, i have to make non-recursive functions, I have to resolve it iteratively (I'm not sure if this is the right word):
2) I have 2 lists, and I need to make a function that makes an association list between those 2 lists. For eg, (A B C) (X Y Z) --> ((A.X) (B.Y) (C.Z))
3) a) I have a list with atoms and I want to make another list that shows for every atom, how many times it appears in the list, something like this:
(A B A B A C A) --> ((A 4) (B 2) (C 1))
b) A function that counts the atoms from a list, something like: (A (B C) D E) --> 3 or (A B C) --> 3
Thank you very much in advance, and please help me if you can, it's very important to me.
Have a nice day!
I'm a newbie in Lisp, and i have some problems with some simple code.
1) My first problem is like this: I have a tree in Lisp like with this representation: (A 2 B 0 C 2 D 0 E 0) , which would be equivalent with (A (B) (C (D) (E))). I need to know how could I obtain the Postorder Traversal Sequence for the first representation. I figured out how to do it for the second representation of the tree, but I can't do it for the first one. Please help me if you can.
At this problem, I tried something, but it didn't work:
(defun post(l)
(cond
((null l) nil)
(t(cons(post(caddr l))(car l))))
)
)
For the other 2 problems, i have to make non-recursive functions, I have to resolve it iteratively (I'm not sure if this is the right word):
2) I have 2 lists, and I need to make a function that makes an association list between those 2 lists. For eg, (A B C) (X Y Z) --> ((A.X) (B.Y) (C.Z))
3) a) I have a list with atoms and I want to make another list that shows for every atom, how many times it appears in the list, something like this:
(A B A B A C A) --> ((A 4) (B 2) (C 1))
b) A function that counts the atoms from a list, something like: (A (B C) D E) --> 3 or (A B C) --> 3
Thank you very much in advance, and please help me if you can, it's very important to me.
Have a nice day!