Re: [Rails] Can you plz, explain to me part of this code ?

2018-04-30 Thread Abdel Latif
Thank you Rob, I appreciate your help, good explanation.

On Thu, Apr 26, 2018 at 5:02 PM, Rob Biedenharn 
wrote:

>
>
> On 2018-Apr-26, at 13:47 , Abdel Latif  wrote:
>
> But [["AB_1020", "AB_950", "AB_50"], ["1000", "570"]] has non numerical
> values too.
>
> On Thursday, April 26, 2018 at 1:05:53 PM UTC-4, Walter Lee Davis wrote:
>>
>>
>> > On Apr 26, 2018, at 12:12 PM, Abdel Latif  wrote:
>> >
>> > Hi,
>> >
>> > I found this code for sorting an array :
>> >
>> > p ["AB_1020", "AB_950", "AB_50", "1000", "570"].partition{|x|
>> x.to_i.zero? }
>> >   .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse}
>>
>
> You're missing that String#[] when given a Regexp returns the substring
> that matches that Regexp.
>
> [1] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/]}
> => ["1020", "950", "50"]
> [2] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/]}.sort
> => ["1020", "50", "950"]
> [3] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/
> ]}.sort.reverse
> => ["950", "50", "1020"]
> [4] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/
> ].to_i}.sort.reverse
> => [1020, 950, 50]
> [5] pry(main)> ["AB_1020", "AB_950", "AB_50",].sort_by {|x| x[/\d+/].to_i}
> => ["AB_50", "AB_950", "AB_1020"]
>
> -Rob
>
> > ouptut
>> >
>> > #⇒ ["AB_50", "AB_950", "AB_1020", "570", "1000"]
>> >
>> >
>> > I know that .partition{|x| x.to_i.zero? } will create an array of
>> arrays :
>> > [["AB_1020", "AB_950", "AB_50"], ["1000", "570"]]
>> >
>> >
>> > But this part .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse}
>>
>> flat_map: https://apidock.com/ruby/Enumerable/flat_map
>>
>> Then that passes a block, which acts on each member of the Enumerable
>> that called flat_map. That block sorts by the numerical value of x, then
>> reverses.
>>
>> Does that help?
>>
>> Walter
>>
>> >
>> > I could understand it.
>> >
>> > Thanks.
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> Groups "Ruby on Rails: Talk" group.
>> > To unsubscribe from this group and stop receiving emails from it, send
>> an email to rubyonrails-ta...@googlegroups.com.
>> > To post to this group, send email to rubyonra...@googlegroups.com.
>> > To view this discussion on the web visit https://groups.google.com/d/ms
>> gid/rubyonrails-talk/c8e2dc7d-8501-4df3-b19c-917ebded457f%
>> 40googlegroups.com.
>> > For more options, visit https://groups.google.com/d/optout.
>>
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/rubyonrails-talk/f6fa4cc4-37b2-4828-ba1c-
> f9ac0d780221%40googlegroups.com
> 
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
> --
> You received this message because you are subscribed to a topic in the
> Google Groups "Ruby on Rails: Talk" group.
> To unsubscribe from this topic, visit https://groups.google.com/d/
> topic/rubyonrails-talk/C3hSRwet4tY/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/rubyonrails-talk/F584BA16-90B8-40DD-8C04-A92CBF336241%40gmail.com
> 
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CAPzaUfPOPEdR-WOqX%3D_ugk%2BjB1BDRtgv3i20z1Xfji9LiDKuUw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Rails] Can you plz, explain to me part of this code ?

2018-04-26 Thread botp
On Fri, Apr 27, 2018 at 12:12 AM, Abdel Latif  wrote:


> But this part .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse}
>
>

​two things look suspicious:
1) /d+/​
​2) reverse

have you tried randomly rearranging your arrays first?​

​m​
any thanks,
--botp

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CAAwHHQica6sEZ-OPOnbGUyG_MGOPKW21iOd%3D_HxacnSmeTeRCQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Rails] Can you plz, explain to me part of this code ?

2018-04-26 Thread Rob Biedenharn


> On 2018-Apr-26, at 13:47 , Abdel Latif  wrote:
> 
> But [["AB_1020", "AB_950", "AB_50"], ["1000", "570"]] has non numerical 
> values too.
> 
> On Thursday, April 26, 2018 at 1:05:53 PM UTC-4, Walter Lee Davis wrote:
> 
> > On Apr 26, 2018, at 12:12 PM, Abdel Latif > wrote: 
> > 
> > Hi, 
> > 
> > I found this code for sorting an array : 
> > 
> > p ["AB_1020", "AB_950", "AB_50", "1000", "570"].partition{|x| x.to_i.zero? 
> > } 
> >   .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse} 

You're missing that String#[] when given a Regexp returns the substring that 
matches that Regexp.

[1] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/]}
=> ["1020", "950", "50"]
[2] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/]}.sort
=> ["1020", "50", "950"]
[3] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| x[/\d+/]}.sort.reverse
=> ["950", "50", "1020"]
[4] pry(main)> ["AB_1020", "AB_950", "AB_50",].map {|x| 
x[/\d+/].to_i}.sort.reverse
=> [1020, 950, 50]
[5] pry(main)> ["AB_1020", "AB_950", "AB_50",].sort_by {|x| x[/\d+/].to_i}
=> ["AB_50", "AB_950", "AB_1020"]

-Rob

> > ouptut 
> > 
> > #⇒ ["AB_50", "AB_950", "AB_1020", "570", "1000"] 
> > 
> > 
> > I know that .partition{|x| x.to_i.zero? } will create an array of arrays : 
> > [["AB_1020", "AB_950", "AB_50"], ["1000", "570"]] 
> > 
> > 
> > But this part .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse} 
> 
> flat_map: https://apidock.com/ruby/Enumerable/flat_map 
>  
> 
> Then that passes a block, which acts on each member of the Enumerable that 
> called flat_map. That block sorts by the numerical value of x, then reverses. 
> 
> Does that help? 
> 
> Walter 
> 
> > 
> > I could understand it. 
> > 
> > Thanks. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google Groups 
> > "Ruby on Rails: Talk" group. 
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to rubyonrails-ta...@googlegroups.com <>. 
> > To post to this group, send email to rubyonra...@googlegroups.com <>. 
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msgid/rubyonrails-talk/c8e2dc7d-8501-4df3-b19c-917ebded457f%40googlegroups.com
> >  
> > .
> >  
> > For more options, visit https://groups.google.com/d/optout 
> > . 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rubyonrails-talk+unsubscr...@googlegroups.com 
> .
> To post to this group, send email to rubyonrails-talk@googlegroups.com 
> .
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/f6fa4cc4-37b2-4828-ba1c-f9ac0d780221%40googlegroups.com
>  
> .
> For more options, visit https://groups.google.com/d/optout 
> .

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/F584BA16-90B8-40DD-8C04-A92CBF336241%40gmail.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Rails] Can you plz, explain to me part of this code ?

2018-04-26 Thread Abdel Latif
But [["AB_1020", "AB_950", "AB_50"], ["1000", "570"]] has non numerical 
values too.

On Thursday, April 26, 2018 at 1:05:53 PM UTC-4, Walter Lee Davis wrote:
>
>
> > On Apr 26, 2018, at 12:12 PM, Abdel Latif  > wrote: 
> > 
> > Hi, 
> > 
> > I found this code for sorting an array : 
> > 
> > p ["AB_1020", "AB_950", "AB_50", "1000", "570"].partition{|x| 
> x.to_i.zero? } 
> >   .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse} 
> > ouptut 
> > 
> > #⇒ ["AB_50", "AB_950", "AB_1020", "570", "1000"] 
> > 
> > 
> > I know that .partition{|x| x.to_i.zero? } will create an array of arrays 
> : 
> > [["AB_1020", "AB_950", "AB_50"], ["1000", "570"]] 
> > 
> > 
> > But this part .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse} 
>
> flat_map: https://apidock.com/ruby/Enumerable/flat_map 
>
> Then that passes a block, which acts on each member of the Enumerable that 
> called flat_map. That block sorts by the numerical value of x, then 
> reverses. 
>
> Does that help? 
>
> Walter 
>
> > 
> > I could understand it. 
> > 
> > Thanks. 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "Ruby on Rails: Talk" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to rubyonrails-ta...@googlegroups.com . 
> > To post to this group, send email to rubyonra...@googlegroups.com 
> . 
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/c8e2dc7d-8501-4df3-b19c-917ebded457f%40googlegroups.com.
>  
>
> > For more options, visit https://groups.google.com/d/optout. 
>
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/f6fa4cc4-37b2-4828-ba1c-f9ac0d780221%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [Rails] Can you plz, explain to me part of this code ?

2018-04-26 Thread Walter Lee Davis

> On Apr 26, 2018, at 12:12 PM, Abdel Latif  wrote:
> 
> Hi,
> 
> I found this code for sorting an array :
> 
> p ["AB_1020", "AB_950", "AB_50", "1000", "570"].partition{|x| x.to_i.zero? }
>   .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse}
> ouptut
> 
> #⇒ ["AB_50", "AB_950", "AB_1020", "570", "1000"]
> 
> 
> I know that .partition{|x| x.to_i.zero? } will create an array of arrays :
> [["AB_1020", "AB_950", "AB_50"], ["1000", "570"]]
> 
> 
> But this part .flat_map{|x| x.sort_by {|x|x[/d+/]}.reverse}

flat_map: https://apidock.com/ruby/Enumerable/flat_map

Then that passes a block, which acts on each member of the Enumerable that 
called flat_map. That block sorts by the numerical value of x, then reverses.

Does that help?

Walter

> 
> I could understand it.
> 
> Thanks.
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/rubyonrails-talk/c8e2dc7d-8501-4df3-b19c-917ebded457f%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/F80F3086-EFC6-4E2F-99E8-07C60AAD479D%40wdstudio.com.
For more options, visit https://groups.google.com/d/optout.