[#6954] Why isn't Perl highly orthogonal? — Terrence Brannon <brannon@...>

27 messages 2000/12/09

[#7022] Re: Ruby in the US — Kevin Smith <kevinbsmith@...>

> Is it possible for the US to develop corporate

36 messages 2000/12/11
[#7633] Re: Ruby in the US — Dave Thomas <Dave@...> 2000/12/19

tonys@myspleenklug.on.ca (tony summerfelt) writes:

[#7636] Re: Ruby in the US — "Joseph McDonald" <joe@...> 2000/12/19

[#7704] Re: Ruby in the US — Jilani Khaldi <jilanik@...> 2000/12/19

> > first candidates would be mysql and postgressql because source is

[#7705] Code sample for improvement — Stephen White <steve@...> 2000/12/19

During an idle chat with someone on IRC, they presented some fairly

[#7750] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

Stephen White wrote:

[#7751] Re: Code sample for improvement — David Alan Black <dblack@...> 2000/12/20

Hello --

[#7755] Re: Code sample for improvement — "Guy N. Hurst" <gnhurst@...> 2000/12/20

David Alan Black wrote:

[#7758] Re: Code sample for improvement — Stephen White <steve@...> 2000/12/20

On Wed, 20 Dec 2000, Guy N. Hurst wrote:

[#7759] Next amusing problem: talking integers (was Re: Code sample for improvement) — David Alan Black <dblack@...> 2000/12/20

On Wed, 20 Dec 2000, Stephen White wrote:

[#7212] New User Survey: we need your opinions — Dave Thomas <Dave@...>

16 messages 2000/12/14

[#7330] A Java Developer's Wish List for Ruby — "Richard A.Schulman" <RichardASchulman@...>

I see Ruby as having a very bright future as a language to

22 messages 2000/12/15

[#7354] Ruby performance question — Eric Crampton <EricCrampton@...>

I'm parsing simple text lines which look like this:

21 messages 2000/12/15
[#7361] Re: Ruby performance question — Dave Thomas <Dave@...> 2000/12/15

Eric Crampton <EricCrampton@worldnet.att.net> writes:

[#7367] Re: Ruby performance question — David Alan Black <dblack@...> 2000/12/16

On Sat, 16 Dec 2000, Dave Thomas wrote:

[#7371] Re: Ruby performance question — "Joseph McDonald" <joe@...> 2000/12/16

[#7366] GUIs for Rubies — "Conrad Schneiker" <schneik@...>

Thought I'd switch the subject line to the subject at hand.

22 messages 2000/12/16

[#7416] Re: Ruby IDE (again) — Kevin Smith <kevins14@...>

>> >> I would contribute to this project, if it

17 messages 2000/12/16
[#7422] Re: Ruby IDE (again) — Holden Glova <dsafari@...> 2000/12/16

-----BEGIN PGP SIGNED MESSAGE-----

[#7582] New to Ruby — takaoueda@...

I have just started learning Ruby with the book of Thomas and Hunt. The

24 messages 2000/12/18

[#7604] Any corrections for Programming Ruby — Dave Thomas <Dave@...>

12 messages 2000/12/18

[#7737] strange border-case Numeric errors — "Brian F. Feldman" <green@...>

I haven't had a good enough chance to familiarize myself with the code in

19 messages 2000/12/20

[#7801] Is Ruby part of any standard GNU Linux distributions? — "Pete McBreen, McBreen.Consulting" <mcbreenp@...>

Anybody know what it would take to get Ruby into the standard GNU Linux

15 messages 2000/12/20

[#7938] Re: defined? problem? — Kevin Smith <sent@...>

matz@zetabits.com (Yukihiro Matsumoto) wrote:

26 messages 2000/12/22
[#7943] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

Kevin Smith <sent@qualitycode.com> writes:

[#7950] Re: defined? problem? — Stephen White <steve@...> 2000/12/22

On Fri, 22 Dec 2000, Dave Thomas wrote:

[#7951] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

On Fri, 22 Dec 2000, Stephen White wrote:

[#7954] Re: defined? problem? — Dave Thomas <Dave@...> 2000/12/22

David Alan Black <dblack@candle.superlink.net> writes:

[#7975] Re: defined? problem? — David Alan Black <dblack@...> 2000/12/22

Hello --

[#7971] Hash access method — Ted Meng <ted_meng@...>

Hi,

20 messages 2000/12/22

[#8030] Re: Basic hash question — ts <decoux@...>

>>>>> "B" == Ben Tilly <ben_tilly@hotmail.com> writes:

15 messages 2000/12/24
[#8033] Re: Basic hash question — "David A. Black" <dblack@...> 2000/12/24

On Sun, 24 Dec 2000, ts wrote:

[#8178] Inexplicable core dump — "Nathaniel Talbott" <ntalbott@...>

I have some code that looks like this:

12 messages 2000/12/28

[#8196] My first impression of Ruby. Lack of overloading? (long) — jmichel@... (Jean Michel)

Hello,

23 messages 2000/12/28

[#8198] Re: Ruby cron scheduler for NT available — "Conrad Schneiker" <schneik@...>

John Small wrote:

14 messages 2000/12/28

[#8287] Re: speedup of anagram finder — "SHULTZ,BARRY (HP-Israel,ex1)" <barry_shultz@...>

> -----Original Message-----

12 messages 2000/12/29

[ruby-talk:7476] Re: flatten_by(n)

From: "Ben Tilly" <ben_tilly@...>
Date: 2000-12-16 22:19:38 UTC
List: ruby-talk #7476
David Alan Black <dblack@candle.superlink.net> wrote:
>
>Hello --
>
>In honor of all the stuff about flattening in the thread ostensibly
>about Perl (but happily not), I thought I'd share this, for the
>possible reading/hacking pleasure of my fellow rubes:
>
>   class Array
>     def flatten_by(n)
>       res = []
>       return self if n < 1
>       each do |e|
>	if e.is_a? Array
>	  e.each do |ee|
>	    res.push ee
>	    res = res.flatten_by(n-1)
>	  end
>	else
>	  res.push e
>	end
>       end
>       res
>     end
>   end
>
>
>   a = [1, [2, [3], []], [5], [4, [[6]]]]
>
>   a.flatten_by(0) => [1, [2, [3], []], [5], [4, [[6]]]]
>   a.flatten_by(1) => [1, 2, [3], [], 5, 4, [[6]]]
>   a.flatten_by(2) => [1, 2, 3, 5, 4, [6]]
>   a.flatten_by(3) => [1, 2, 3, 5, 4, 6]
>
>
>And now.... (Ben, are you watching?) .... the grand test:

Yup, watching...

>   class Array
>     def flat_map(&block)
>       map(&block) .flatten_by(1)
>     end
>   end
>
>   [1,2,[3,4],5] .flat_map do |e| [e, "hello"] end
>
>     => [1, "hello", 2, "hello", [3, 4], "hello", 5, "hello"]
>
>
>It actually *could* be useful....  at least if, like me, you are
>obsessed with turning arrays into hashes in every possible way:
>
>   class Array
>     def to_h_all_true
>       Hash[*self.flat_map do |e| [e,true] end]
>     end
>   end
>
>   [1, [2, [3], []], [5], [4, [[6]]]] .to_h_all_true
>    => {[5]=>true, 1=>true, [2, [3], []]=>true, [4, [[6]]]=>true}
>
>
>Comments/optimizations/whatever welcome.

Nice.

Is there any reason that your flatten_by function takes a
parameter?  I would think it would be faster to have it just
flatten once (don't do the recursive call).  If someone wants
to flatten 6 times, they can call it 6 times.

I am away from my home box again, but something like this
should work:

  class Array
    def flatten_once
      res = []
      each do |e|
        if e.is_a? Array
          res += e
        else
          res.push e
        end
      end
      res
    end
  end

Cheers,
Ben
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com

In This Thread

Prev Next