Talk About Network

Google


Register and Login
Nick
Password
Register create new account Sign up is FREE and you can post replies, new topics, bookmark posts and more!
Recover lost password


Programming > C Moderated > Re: Arithmetic ...
Latest [ Topics | Posts ] Archive Post A New Topic Post a Reply
<< Topic < Post Post 6 of 7 Topic 1006 of 1126
Post > Topic >>

Re: Arithmetic expression fitting algorithm?

by Kevin Ashley <K.Ashley@[EMAIL PROTECTED] > Jan 12, 2008 at 04:44 PM

Icebeing wrote:
> Hi all,
> 
>    Some time ago, I got hit with this problem on a game-programming
> test, and it's bugged me ever since:
> 
> The program has 2 inputs:
> 
> 1 32-bit integer, called result
> 1 input string of digits
> 
> The algorithm calls to construct an arithmetic expression string from
> the input string so that it evaluates to the result value, by
> inserting '+' and '*'
> 
> example:
> 
> input 1 = 44550
> input 2  = "8888225"
> 
> algorithm spits out:  "8888+22*5"
> 
> the algorithm spits out "" if no arithmetic expression can "fit" input
> 2 with input 1
> 
> best approach i could come up with is a brute-force method...any math-
> heads know a better approach to this?
> my number theory is rusty lol

Brute force isn't necessarily that bad; at least, it isn't for reasonable
lengths of the input string of digits and assuming you are using a
computer
to execute the algorithm (this is comp.lang.c.moderated so I think that's
a safe assumption, although the question is pretty much completely
off-topic for the group.)

If R is the desired result, D is the string of digits and l(D) is the
number of digits in that string, then even when l(D) is 21, there's
only 3 billion or so combinations to consider. A few seconds work.

The number of combinations to consider is at most 3**(l(D)-1) since
between each digit there are only 3 possibilities: nothing, a + or *.
For some R and D you can reduce the number to consider by discarding
any combination where there are at least l(R) nothings in sequence,
since they will produce a number greater than R. (Unles, of course,
there are zeros in D which appear at the front of that subsequence.)

In the example you gave, any combination involving a 6 digit number
(and hence one + or *) cannot produce the desired 5 digit result.
In that example, even 5 consecutive digits (4 consecutive nothings
between digits) will produce a number that is too large.

How much that reduces the problem space, if at all, is dependent on
the size of R and D. What seems mildly interesting to consider
is whether and at what point large values of l(D) make the problem
computationally difficult by the brute force approach.

That said, I imagine other posters by now have probably proposed
much more elegant solutions.
-- 
comp.lang.c.moderated - moderation address: clcm@[EMAIL PROTECTED]
 -- you must
have an appropriate newsgroups line in your header for your mail to be
seen,
or the newsgroup name in square brackets in the subject line.  Sorry.
 




 7 Posts in Topic:
Arithmetic expression fitting algorithm?
Icebeing <spamtronic@[  2007-09-21 05:15:30 
Re: Arithmetic expression fitting algorithm?
"Douglas A. Gwyn&quo  2008-01-12 16:41:57 
Re: Arithmetic expression fitting algorithm?
Tim Brown <timbrown@[E  2008-01-12 16:42:33 
Re: Arithmetic expression fitting algorithm?
=?ISO-8859-1?Q?Hans-Bernh  2008-01-12 16:42:59 
Re: Arithmetic expression fitting algorithm?
Barry Schwarz <schwarz  2008-01-12 16:43:23 
Re: Arithmetic expression fitting algorithm?
Kevin Ashley <K.Ashley  2008-01-12 16:44:30 
Re: Arithmetic expression fitting algorithm?
Barry Schwarz <schwarz  2008-01-12 16:48:18 

Post A Reply:
  Go here to Signup

AddThis Feed Button


About - Advertising - Contact - Frequently Asked Questions - Privacy Policy - Terms of Use - Signup

Contact
tan12V112 Wed Jul 9 0:13:44 CDT 2008.