Thread View: pl.comp.lang.ruby
6 messages
6 total messages
Started by Przemysław Kowalczyk
Mon, 02 Oct 2006 19:23
iteracja po tablicy kazdy z kazdym "ruby-way"
Author: Przemysław Kowalczyk
Date: Mon, 02 Oct 2006 19:23
Date: Mon, 02 Oct 2006 19:23
15 lines
1081 bytes
1081 bytes
Witam, mam taki akademicki problem: jak zrobic jakas operacje na kazdej parze elementow z jakiejs listy (tzn. kazdy z kazdym)? na razie robie to tak: for i in 0..lst.size - 1 for j in i + 1..lst.size - 1 do_something(lst [i], lst [j]) end end ale to wyglada dosc malo rubistycznie. jakies pomysly? pzdr szeryf
Re: iteracja po tablicy kazdy z kazdym "ruby-way"
Author: Jan Szumiec
Date: Mon, 02 Oct 2006 20:11
Date: Mon, 02 Oct 2006 20:11
28 lines
1734 bytes
1734 bytes
Przemysław Kowalczyk wrote:
> Witam,
>
> mam taki akademicki problem: jak zrobic jakas operacje na kazdej parze
> elementow z jakiejs listy (tzn. kazdy z kazdym)? na razie robie to tak:
>
> for i in 0..lst.size - 1
> for j in i + 1..lst.size - 1
> do_something(lst [i], lst [j])
> end
> end
>
A = [ .... ]
B = [ .... ]
A.each do | a |
B.each do | b |
do_something a, b
end
end
Ewentualnie... zaimplementować sobie operację * na listach która
zwraca cosik co bierze blok dwuargumentowy :)
Pozdrawiam,
jasiek
Re: iteracja po tablicy kazdy z kazdym "ruby-way"
Author: Marcin Mielżyński
Date: Mon, 02 Oct 2006 20:27
Date: Mon, 02 Oct 2006 20:27
38 lines
1556 bytes
1556 bytes
Przemysław Kowalczyk wrote:
> Witam,
>
> mam taki akademicki problem: jak zrobic jakas operacje na kazdej parze
> elementow z jakiejs listy (tzn. kazdy z kazdym)? na razie robie to tak:
>
> for i in 0..lst.size - 1
> for j in i + 1..lst.size - 1
> do_something(lst [i], lst [j])
> end
> end
>
> ale to wyglada dosc malo rubistycznie. jakies pomysly?
>
> pzdr
> szeryf
class Array
def each_pair
self.each_index do |i|
(i+1).upto(self.size-1) do |j|
yield self[i],self[j]
end
end
end
end
lst = *(1..10)
lst.each_pair do |a,b|
puts "#{a} #{b}"
end
lopex
Re: iteracja po tablicy kazdy z kazdym "ruby-way"
Author: Przemysław Kowalczyk
Date: Mon, 02 Oct 2006 20:33
Date: Mon, 02 Oct 2006 20:33
31 lines
1701 bytes
1701 bytes
On Mon, 02 Oct 2006 22:11:21 +0200, Jan Szumiec <jan.szumiec@gmail.com> wrote: >> mam taki akademicki problem: jak zrobic jakas operacje na kazdej parze >> elementow z jakiejs listy (tzn. kazdy z kazdym)? na razie robie to tak: >> >> for i in 0..lst.size - 1 >> for j in i + 1..lst.size - 1 >> do_something(lst [i], lst [j]) >> end >> end >> > > A = [ .... ] > B = [ .... ] > > A.each do | a | > B.each do | b | > do_something a, b > end > end > > Ewentualnie... zaimplementować sobie operację * na listach która > zwraca cosik co bierze blok dwuargumentowy :) hmm, nie do konca o to mi chodzilo. A i B to ta sama lista, a w dodatku jezeli "przerobie" pare a,b to nie chce juz przerabiac b,a. ale Marcin pokazal juz to, o co mi chodzilo. pzdr szeryf
Re: iteracja po tablicy kazdy z kazdym "ruby-way"
Author: Przemysław Kowalczyk
Date: Mon, 02 Oct 2006 20:37
Date: Mon, 02 Oct 2006 20:37
38 lines
1788 bytes
1788 bytes
On Mon, 02 Oct 2006 22:27:02 +0200, Marcin Mielżyński <lopx@gazeta.pl>
wrote:
> Przemysław Kowalczyk wrote:
>> Witam,
>> mam taki akademicki problem: jak zrobic jakas operacje na kazdej parze
>> elementow z jakiejs listy (tzn. kazdy z kazdym)? na razie robie to tak:
>> for i in 0..lst.size - 1
>> for j in i + 1..lst.size - 1
>> do_something(lst [i], lst [j])
>> end
>> end
>> ale to wyglada dosc malo rubistycznie. jakies pomysly?
>
> class Array
>
> def each_pair
> self.each_index do |i|
> (i+1).upto(self.size-1) do |j|
> yield self[i],self[j]
> end
> end
> end
>
> end
>
> lst = *(1..10)
>
> lst.each_pair do |a,b|
> puts "#{a} #{b}"
> end
sweet. uzyles conajmniej 3 idiomow Ruby'ego (rozszerzanie klasy
standardowej, metoda upto na liczbie, closure). po prostu piekne. jestem
pod wrazeniem (-:
pzdr
szeryf
Re: iteracja po tablicy kazdy z kazdym "ruby-way"
Author: Marcin Mielżyński
Date: Mon, 02 Oct 2006 20:51
Date: Mon, 02 Oct 2006 20:51
34 lines
1304 bytes
1304 bytes
można jeszcze:
class Array
def each_pair
each_with_index do |a,i|
i.next.upto(size-1) do |j|
yield a,self[j]
end
end
end
end
i mniej wydajna
class Array
def each_pair
each_with_index do |a,i|
self[i.next..-1].each do |b|
yield a,b
end
end
end
end
lopex
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads