Trip Technician wrote:
anyone interested in looking at the following problem.

if you can give me a good reason why this is not homework I'd love to hear it...I just don't see how this is a real problem.

we are trying to express numbers as minimal expressions using only the
digits one two and three, with conventional arithmetic. so for
instance

33 = 2^(3+2)+1 = 3^3+(3*2)

are both minimal, using 4 digits but

33 = ((3+2)*2+1)*3

using 5 is not.

I have tried coding a function to return the minimal representation
for any integer, but haven't cracked it so far. The naive first
attempt is to generate lots of random strings, eval() them and sort by
size and value. this is inelegant and slow.

Wow. Okay, what other ways have you tried so far? Or are you beating your head against the "search the entire problem space" solution still?

This problem smells a lot like factorisation, so I would think of it in terms of wanting to reduce the target number using as few operations as possible.

If you allow exponentiation that's going to be your biggest hitter so you know that the best you can do using 2 digits is n^n where n is the largest digit you allow yourself.

Are you going to allow things like n^n^n or not?

  n


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to