# Some ugly code (again)

**URL:** <https://www.ruby-forum.com/t/some-ugly-code-again/64482>\
**Category:** Ruby\
**Created:** [June 26, 2006, 10:39am UTC](https://www.ruby-forum.com/t/some-ugly-code-again/64482 "2006-06-26T10:39:57Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![arnaud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arnaud](https://www.ruby-forum.com/u/arnaud)\
**Post date:** [June 26, 2006, 10:39am UTC](https://www.ruby-forum.com/t/some-ugly-code-again/64482/1 "2006-06-26T10:39:57Z")

</div>

Hello!

I have (again) some ruby code to beautifulize 🙂

I have 2 Range {1…x} and {1…y} and a name  
My goal is to have formatted names like : name + y + x

For example:  
rack11 rack12 rack13  
rack21 rack22 rack23

Can I do nicer than:

{1…y}.each do |y|  
{1…x}.each do |x|  
the\_name = name + y.to\_s + x.to\_s  
end  
end

???

Arnaud.

---

<div class="post-metadata">

**Author:** ![arnaud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arnaud](https://www.ruby-forum.com/u/arnaud)\
**Post date:** [June 26, 2006, 10:42am UTC](https://www.ruby-forum.com/t/some-ugly-code-again/64482/2 "2006-06-26T10:42:30Z")

</div>

arnaud stageman wrote:

> I have 2 Range {1…x} and {1…y} and a name

Oups!

replace {…} with (…)

---

<div class="post-metadata">

**Author:** ![arnaud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arnaud](https://www.ruby-forum.com/u/arnaud)\
**Post date:** [June 26, 2006, 11:36am UTC](https://www.ruby-forum.com/t/some-ugly-code-again/64482/3 "2006-06-26T11:36:36Z")

</div>

Hi,

> I have 2 Range {1…x} and {1…y} and a name  
> the\_name = name + y.to\_s + x.to\_s  
> end  
> end
> 
> ???

If you want something one liner,

([‘rake’]_(x_y)).zip((1…x).to\_a_y,(1…y).to\_a_x).each{|z|puts “#{z}”}

Or

((1…x).to\_a_y).zip((1…y).to\_a_x).each{|z|puts “rake#{z}”}

Regards,

Park H.

---

<div class="post-metadata">

**Author:** ![arnaud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arnaud](https://www.ruby-forum.com/u/arnaud)\
**Post date:** [June 26, 2006, 12:00pm UTC](https://www.ruby-forum.com/t/some-ugly-code-again/64482/4 "2006-06-26T12:00:54Z")

</div>

arnaud stageman wrote:

> > Park H.
> 
> Beuh it’s remained me Perl 🙂
> 
> Thanks for your response Park.

and another one liner:

puts (0…x\*y).map{|i| “#{name}#{i%x+1}#{i/x+1}”}

cheers

Simon

---

<div class="post-metadata">

**Author:** ![arnaud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arnaud](https://www.ruby-forum.com/u/arnaud)\
**Post date:** [June 26, 2006, 11:40am UTC](https://www.ruby-forum.com/t/some-ugly-code-again/64482/5 "2006-06-26T11:40:29Z")

</div>

Park H. wrote:

> Hi,
> 
> > I have 2 Range {1…x} and {1…y} and a name  
> > the\_name = name + y.to\_s + x.to\_s  
> > end  
> > end
> > 
> > ???
> 
> If you want something one liner,
> 
> ([‘rake’]_(x_y)).zip((1…x).to\_a_y,(1…y).to\_a_x).each{|z|puts “#{z}”}
> 
> Or
> 
> ((1…x).to\_a_y).zip((1…y).to\_a_x).each{|z|puts “rake#{z}”}
> 
> Regards,
> 
> Park H.

Beuh it’s remained me Perl 🙂

Thanks for your response Park.

---

<div class="post-metadata">

**Author:** ![arnaud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arnaud](https://www.ruby-forum.com/u/arnaud)\
**Post date:** [June 26, 2006, 6:16pm UTC](https://www.ruby-forum.com/t/some-ugly-code-again/64482/6 "2006-06-26T18:16:28Z")

</div>

arnaud stageman wrote:

> Arnaud.

The cartesian\_product method doesn’t exist, you would have to write it.  
It’s trivial

(1…y).cartesian\_product((1…x)).map { |x| name + x.join("") }

---

<div class="post-metadata">

**Author:** ![arnaud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arnaud](https://www.ruby-forum.com/u/arnaud)\
**Post date:** [June 27, 2006, 9:55am UTC](https://www.ruby-forum.com/t/some-ugly-code-again/64482/7 "2006-06-27T09:55:13Z")

</div>

thank you all for your response but I cannot find what I want

Cheers

---

<div class="post-metadata">

**Author:** ![arnaud](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/e8c25b/32.png) [@arnaud](https://www.ruby-forum.com/u/arnaud)\
**Post date:** [June 26, 2006, 1:28pm UTC](https://www.ruby-forum.com/t/some-ugly-code-again/64482/8 "2006-06-26T13:28:58Z")

</div>

arnaud stageman wrote:

> {1…x}.each do |x|  
> the\_name = name + y.to\_s + x.to\_s  
> end  
> end

Here’s a one-liner for ya:

(1…x).map{|x| (1…y).map{|y| “rack#{x}#{y}”}}.flatten

Cheers,  
Daniel
