Pr. Euler 18, recursion problem
Aidan
aweraw at gmail.com
Mon Oct 6 02:13:18 EDT 2008
process wrote:
> I am trying to solve project euler problem 18 with brute force(I will
> move on to a better solution after I have done that for problem 67).
> http://projecteuler.net/index.php?section=problems&id=18
>
> However I can't get the recursive function right.
>
> I always have to use return right? Unless I am printing? So I canät
> stack to diffferent recursive calls after each other like so:
> recur_left(t, p)
> recur_right(t,p+1)
>
>
> Some stuff I have tried:
>
> def recur(tree, pos):
> if not tree:
> return []
> else:
> return [[tree[0][pos]] + recur(tree[1:], pos)] + \
> [[tree[0][pos]] + recur(tree[1:], pos+1)]
>
>
>>>> recur([[1],[2,3],[4,5,6]],0)
> [[1, [2, [4], [4]], [2, [5], [5]]], [1, [3, [5], [5]], [3, [6], [6]]]]
>
>
> SO it is kind of working, just not exactly like I want.
> A more easily parseable/readable result would be nice, I want to be
> able to sum() over each path preferrably.
>
> So the result should be:
> [[1,2,4],[1,2,5],[1,3,5],[1,3,6]]
>
>
>
> I know conceptually what has to be done.
> Base case: empty tree, return []
> Else: recur to the left and to the right.
This is just my opinion, but I felt the non-brute force solution to this
problem was actually simpler than trying to define a brute force
recursive solution.... I tried to implement a brute force algorithm at
first, until I had an epiphany with regard to how simple the problem
actually was. Then I faced palmed.
More information about the Python-list
mailing list