Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

Re: How to change these small one-liners into Perl6 code?

by moritz (Cardinal)
on Dec 23, 2012 at 08:22 UTC ( #1010078=note: print w/ replies, xml ) Need Help??


in reply to How to change these small one-liners into Perl6 code?

1:

print '218'.subst(rx/^18/, 3);

2: this is supposed to work with substr-rw, but doesn't with current rakudo.

3: Sorry, I don't even understand what this code does in Perl 5. Modifying and using a variable in the same statement is very detrimal for readability.

4: labels and goto aren't implemented in Rakudo. You can use prompt, or for lines() { } (since lines() is a lazy list, it doesn't read all the lines upfront; this was broken in some earlier Rakudo versions, but should be fine in the 2012-12 and possibly the 2012-11 releases).

I can recommend hanging out in the #perl6 IRC channel, we try to be helpful and friendly (and we succeed most of the time :-).


Comment on Re: How to change these small one-liners into Perl6 code?
Select or Download Code
Re^2: How to change these small one-liners into Perl6 code?
by ABCXYZ (Novice) on Dec 23, 2012 at 18:44 UTC
    First, thank you very much.

    >1: print '218'.subst(rx/^18/, 3);

    Great, this works for me.
    It was a real effort for me to figure out how "s///r" works in Perl6... It turned out to have a completely different syntax, but I do miss the Perl5's version: it's so concise, and since it is like a mother language, it can't be obfuscated anyway. I hope Perl6 can still allow the Perl5's sed syntax, conforming to TMTOWTDI. :-)

    >2: this is supposed to work with substr-rw, but doesn't with current rakudo.

    I see.

    >3: Sorry, I don't even understand what this code does in Perl 5. Modifying and using a variable in the same statement is very detrimal for readability.

    I will explain these code in the next post.

    >4: labels and goto aren't implemented in Rakudo. You can use prompt, or for lines() { } (since lines() is a lazy list, it doesn't read all the lines upfront; this was broken in some earlier Rakudo versions, but should be fine in the 2012-12 and possibly the 2012-11 releases).

    I am using version 2012-11, and it is slurping. but I wonder is the parentheses with "lines()" mandatory? It doesn't seem like Perl's style though?

    >I can recommend hanging out in the #perl6 IRC channel, we try to be helpful and friendly (and we succeed most of the time :-).

    I will try that.
Re^2: How to change these small one-liners into Perl6 code?
by ABCXYZ (Novice) on Dec 23, 2012 at 19:18 UTC
    I was simply translating my Perl5 one-liners on ProjectEuler into Perl6's code.

    These are all on its first problem:
    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)
    This is my fastest solution in Perl5: (not in the code #1..4 above)
    perl5 -e '$n=3;print 2,3x--$n,1 .6x$n+2'

    The following is the origin of code #1, which works beyond the limit of 64 bit int, since it uses string op:
    $n=3;print 2,(3x--$n.1 .6x--$n.8)=~s/^18/3/r

    This is the origin of code #2:
    $n=3;$_=2 .3x--$n.1 .6x$n;substr($_,-1)+=2;print

    So code #3 is a more general solution for $N which is typically not an integer exponentiation of 10:
    map{$s+=int$_*($i=abs int 999/$_)*++$i/2}(3,5,-15);print$s

    They all give the same result: 233168 for $n=3, but work for other $n as well.
      https://github.com/perl6/perl6-examples/tree/master/euler should interest you.

      Five solutions have been added to this repo over the last 4 years. The latest one was added 18 days ago:

      say [+] grep * %% (3|5), ^1000;

      This means "say the sum of numbers that are divisible by 3 or 5 in the range zero up to (but not including) 1000".

        Nice code!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1010078]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (16)
As of 2015-07-02 17:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (44 votes), past polls