note
ABCXYZ
I was simply translating my Perl5 one-liners on ProjectEuler into Perl6's code.<br><br>
These are all on its first problem: <br>
<code>If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
(I generalized this to:
below 10**$n for code #1 and #2,
or below $N for code #3)</code>
This is my fastest solution in Perl5: (not in the code #1..4 above)<br>
<code>perl5 -e '$n=3;print 2,3x--$n,1 .6x$n+2'</code><br><br>
The following is the origin of code #1, which works beyond the limit of 64 bit int, since it uses string op:<br>
<code>$n=3;print 2,(3x--$n.1 .6x--$n.8)=~s/^18/3/r</code><br><br>
This is the origin of code #2:<br>
<code>$n=3;$_=2 .3x--$n.1 .6x$n;substr($_,-1)+=2;print</code><br><br>
So code #3 is a more general solution for $N which is typically not an integer exponentiation of 10:<br>
<code>map{$s+=int$_*($i=abs int 999/$_)*++$i/2}(3,5,-15);print$s</code><br><br>
They all give the same result: 233168 for $n=3, but work for other $n as well.
1010060
1010078