1 020 20
2 020 20
3 545 45
4 010 7
5 05 3


  1. Problem 1. In general, an S-expression is of a tree structure rather than a simple list. So when you write the recursive part, don't just

    (cons (car l) (remove-all (cdr l)))

    If l is a simple (linear) list, you still don't want to write the recursion like the above. Instead, you better write it in a tail recursion form.
  2. Problem 4. It's much easier to write a recursive function than a iterative one for this problem. Don't mix the two flavors, though. Quite a lot of you have a dolist plus a recursive call. To say at least, it's not elegant. And most of the implementations don't run correctly.