# Just for fun: oneline code for 4 language permutation

**URL:** <https://www.ruby-forum.com/t/just-for-fun-oneline-code-for-4-language-permutation/178926>\
**Category:** Ruby\
**Created:** [November 13, 2009, 4:31pm UTC](https://www.ruby-forum.com/t/just-for-fun-oneline-code-for-4-language-permutation/178926 "2009-11-13T16:31:20Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![haoqi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/ed655f/32.png) [@haoqi](https://www.ruby-forum.com/u/haoqi)\
**Post date:** [November 13, 2009, 4:31pm UTC](https://www.ruby-forum.com/t/just-for-fun-oneline-code-for-4-language-permutation/178926/1 "2009-11-13T16:31:20Z")

</div>

hello,happy weekday!  
in ruby1.9:  
irb:\>  
%w{ruby c java php}.permutation.to\_a

and my code is(all ruby):  
irb:\>  
(1…1000).inject([]){|p,\_|p\<\<%w{ruby c java php}.sort\_by{rand}}.uniq

how about you?

---

<div class="post-metadata">

**Author:** ![haoqi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/ed655f/32.png) [@haoqi](https://www.ruby-forum.com/u/haoqi)\
**Post date:** [November 13, 2009, 4:43pm UTC](https://www.ruby-forum.com/t/just-for-fun-oneline-code-for-4-language-permutation/178926/2 "2009-11-13T16:43:39Z")

</div>

On Fri, Nov 13, 2009 at 3:31 PM, Haoqi H. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> hello,happy weekday!  
> in ruby1.9:  
> irb:\>  
> %w{ruby c java php}.permutation.to\_a
> 
> and my code is(all ruby):  
> irb:\>  
> (1…1000).inject([]){|p,\_|p\<\<%w{ruby c java php}.sort\_by{rand}}.uniq

.shuffle! is shorter than .sort\_by{rand} by 5 characters.

I hate that your method is nondeterministic, but I’ve got it spinning  
in a while loop and having broken it yet…

> ## how about you?
> 
> Posted via [http://www.ruby-forum.com/](http://www.ruby-forum.com/).

–  
Paul S.  
[http://www.nomadicfun.co.uk](http://www.nomadicfun.co.uk)

removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![haoqi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/ed655f/32.png) [@haoqi](https://www.ruby-forum.com/u/haoqi)\
**Post date:** [November 13, 2009, 4:48pm UTC](https://www.ruby-forum.com/t/just-for-fun-oneline-code-for-4-language-permutation/178926/3 "2009-11-13T16:48:56Z")

</div>

On Fri, Nov 13, 2009 at 3:43 PM, Paul S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> .shuffle! is shorter than .sort\_by{rand} by 5 characters.
> 
> I hate that your method is nondeterministic, but I’ve got it spinning  
> in a while loop and having broken it yet…

And it just did.

FWIW, your method only gives the correct result with probablity 1 -  
((23/24)^999) so it should fail once every 2.9 trillion runs  
(3x10^18).

> –  
> Paul S.  
> [http://www.nomadicfun.co.uk](http://www.nomadicfun.co.uk)
> 
> removed\_email\_address@domain.invalid

–  
Paul S.  
[http://www.nomadicfun.co.uk](http://www.nomadicfun.co.uk)

removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![haoqi](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/h/ed655f/32.png) [@haoqi](https://www.ruby-forum.com/u/haoqi)\
**Post date:** [November 13, 2009, 4:51pm UTC](https://www.ruby-forum.com/t/just-for-fun-oneline-code-for-4-language-permutation/178926/4 "2009-11-13T16:51:16Z")

</div>

On Fri, Nov 13, 2009 at 3:48 PM, Paul S. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> > .shuffle! is shorter than .sort\_by{rand} by 5 characters.
> > 
> > I hate that your method is nondeterministic, but I’ve got it spinning  
> > in a while loop and having broken it yet…
> 
> And it just did.
> 
> FWIW, your method only gives the correct result with probablity 1 -  
> ((23/24)^999) so it should fail once every 2.9 trillion runs  
> (3x10^18).

Actually 1 - ((23/24)^977) is a better lower bound. I’ll shut up now.

> –  
> Paul S.  
> [http://www.nomadicfun.co.uk](http://www.nomadicfun.co.uk)
> 
> removed\_email\_address@domain.invalid

–  
Paul S.  
[http://www.nomadicfun.co.uk](http://www.nomadicfun.co.uk)

removed\_email\_address@domain.invalid
