<div dir="ltr">Hi,<div>Thanks for the tip - I actually started with: use bigrat, but removed it because it made everything really slow - about 10 times slower than without (plus program still worked without on my test cases).</div>
<div><br></div><div>Any ideas for modules that will do the same (only faster) ? <br><br><div class="gmail_quote">On 28 March 2012 23:52, Shlomi Fish <span dir="ltr">&lt;<a href="mailto:shlomif@shlomifish.org">shlomif@shlomifish.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi Ynon,<br>
<div class="im"><br>
On Wed, 28 Mar 2012 10:55:44 +0200<br>
ynon perek &lt;<a href="mailto:ynonperek@gmail.com">ynonperek@gmail.com</a>&gt; wrote:<br>
<br>
&gt; Hi All,<br>
&gt;<br>
&gt; A student asked me for a perl solution to the problem at the bottom.<br>
&gt;<br>
</div>[SNIPPED]<br>
<div class="im">&gt;<br>
&gt; Write a program that takes a list of numbers, a list of operators, and a<br>
&gt; goal; and tells the user which mathematical operations must be performed to<br>
&gt; reach the goal. For example, given the input:<br>
&gt; numbers: 2, 4, 6, 8<br>
&gt; operators: +, -, *, /<br>
&gt; goal: 25<br>
&gt;<br>
&gt; Program should produce the output:<br>
&gt; sol = (((2 / 8) + 6) * 4)<br>
&gt; ----<br>
<br>
</div>Just a note - I hope here would be OK. You should use a rational numbers<br>
package (a.k.a &quot;fractions&quot; - see for example<br>
<a href="https://metacpan.org/module/Math::BigRat" target="_blank">https://metacpan.org/module/Math::BigRat</a> or<br>
<a href="https://metacpan.org/module/Math::GMPq" target="_blank">https://metacpan.org/module/Math::GMPq</a> )<br>
instead of relying on floating-point numbers for solving such riddles, because<br>
otherwise, you might have some rounding errors. I recall facing a problem,<br>
where I was trying to write a Perl program to brute force such a riddle which<br>
I had some problems with, and it did not yield the exact solution due to this<br>
issue.<br>
<br>
For more inforamation about why this is an issue, see:<br>
<br>
<a href="http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html" target="_blank">http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html</a><br>
<br>
«What Every Computer Scientist Should Know About Floating-Point Arithmetic»<br>
<br>
Regards,<br>
<br>
        Shlomi Fish<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
-----------------------------------------------------------------<br>
Shlomi Fish       <a href="http://www.shlomifish.org/" target="_blank">http://www.shlomifish.org/</a><br>
What does &quot;Zionism&quot; mean? - <a href="http://shlom.in/def-zionism" target="_blank">http://shlom.in/def-zionism</a><br>
<br>
If his programming is anything like his philosophising, he would find ten<br>
imaginary bugs in the “Hello World” program.<br>
<br>
Please reply to list if it&#39;s a mailing list post - <a href="http://shlom.in/reply" target="_blank">http://shlom.in/reply</a> .<br>
</font></span></blockquote></div><br></div></div>