[#300221] How about the execution efficiency in Ruby 1.9? — Erwin Moller <hi.steven.tu@...>

Has It been greatly improved?

12 messages 2008/05/01

[#300267] splitting with a regex & keeping a ref? — "Kyle Schmitt" <kyleaschmitt@...>

I'm writing some scripts to help handle some ornery samba servers we

13 messages 2008/05/01

[#300280] Please explain nuances of ||= — Ruby Freak <twscannell@...>

I am reading some of the ruby files in rails and I an seeing the ||=

28 messages 2008/05/01
[#300305] Re: Please explain nuances of ||= — Simon Krahnke <overlord@...> 2008/05/01

* David A. Black <dblack@rubypal.com> (18:56) schrieb:

[#300312] Re: Please explain nuances of ||= — "David A. Black" <dblack@...> 2008/05/01

Hi --

[#300317] Re: Please explain nuances of ||= — Phillip Gawlowski <cmdjackryan@...> 2008/05/01

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

[#300308] Is there some way to execute a block within an arbitrary lexical scope? — Ruby Talk <rubytalk@...>

Is there some way to execute a block within a certain lexical scope?

10 messages 2008/05/01

[#300384] Extracting a value from an array — Albert Schlef <albertschlef@...>

I have the following array:

18 messages 2008/05/02

[#300431] Reverse Divisible Numbers (#161) — Matthew Moss <matthew.moss@...>

This is a fairly simple quiz this week, as I'm in the middle of

35 messages 2008/05/02

[#300437] Ruby 1.9 wishlist — coderrr <coderrr.contact@...>

Hey I just put together a list of stuff I totally wish Ruby had and I

16 messages 2008/05/02

[#300545] Why there is not "replace" method for Fixnum? — Iñaki Baz Castillo <ibc@...>

Hi, using String#replace I can "simulate" a pointer (thanks to David A. for=

10 messages 2008/05/03

[#300569] Different Ways To Loop — Wyatt Greene <greenewm@...>

I love the flexibility of Ruby. It gives you several ways to do

19 messages 2008/05/04

[#300648] How would you design regexps in the integer domain? — Andreas Launila <ruby-talk@...>

I'm trying to come up with a clean way to specify regexps in the integer

13 messages 2008/05/05

[#300751] Ruby has to be interpreted line by line in runtime, does this affect Ruby's execution efficiency badly? — Erwin Moller <hi.steven.tu@...>

Why doesn't the inventor design a better approach to avoid this

8 messages 2008/05/06

[#300752] In order to cross platform, Ruby is designed to be interpreted in runtime, so Ruby code is exposed on the server. This brings a security danger which is not acceptable. — Erwin Moller <hi.steven.tu@...>

How about PHP? I think the same problem with PHP.

10 messages 2008/05/06
[#300755] Re: In order to cross platform, Ruby is designed to be interpreted in runtime, so Ruby code is exposed on the server. This brings a security danger which is not acceptable. — Phillip Gawlowski <cmdjackryan@...> 2008/05/06

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

[#300860] Re: In order to cross platform, Ruby is designed to be interpreted in runtime, so Ruby code is exposed on the server. This brings a security danger which is not acceptable. — Clifford Heath <no@...> 2008/05/07

Phillip Gawlowski wrote:

[#300862] Re: In order to cross platform, Ruby is designed to be interpreted in runtime, so Ruby code is exposed on the server. This brings a security danger which is not acceptable. — Phillip Gawlowski <cmdjackryan@...> 2008/05/07

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

[#300767] Reading from file, create a class with variables — Pelle Strul <aardtwig@...>

Hi, I'm trying to load a file with specifications like:

11 messages 2008/05/06

[#300834] Where to put code for extending a class? — Zoop Zoop <manuel.meurer@...>

I want to extend the String class with a capitalize_each_word method

31 messages 2008/05/06
[#300839] Re: Where to put code for extending a class? — "Robert Dober" <robert.dober@...> 2008/05/06

On Tue, May 6, 2008 at 10:47 PM, Zoop Zoop <manuel.meurer@gmail.com> wrote:

[#300859] Re: Where to put code for extending a class? — Zoop Zoop <manuel.meurer@...> 2008/05/07

Robert, could you explain a bit more what you mean?

[#300864] Re: Where to put code for extending a class? — Phillip Gawlowski <cmdjackryan@...> 2008/05/07

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

[#300893] Re: Where to put code for extending a class? — "David A. Black" <dblack@...> 2008/05/07

Hi --

[#300919] Word for monkeypatching — Brian Marick <marick@...> 2008/05/07

[#300835] get method in Array subclass: where's it defined? — RichardOnRails <RichardDummyMailbox58407@...>

Hi,

10 messages 2008/05/06

[#300900] Posting Culture — "Robert Klemme" <shortcutter@...>

All,

22 messages 2008/05/07

[#300951] Check if char in string? — globalrev <skanemupp@...>

how do i do this:

31 messages 2008/05/07

[#300967] hash adding values — Tim Wolak <tim.wolak@...>

I'm trying to insert account numbers into a hash and add the balances

18 messages 2008/05/07
[#300972] Re: hash adding values — Sebastian Hungerecker <sepp2k@...> 2008/05/07

Tim Wolak wrote:

[#300973] Re: hash adding values — Tim Wolak <tim.wolak@...> 2008/05/07

Sebastian Hungerecker wrote:

[#300975] Re: hash adding values — "Craig Demyanovich" <cdemyanovich@...> 2008/05/07

Oh, you want to store the balances based on the acct. #, then you want to

[#301029] "Real" Differences Between Python & Ruby — Max Cantor <maxcantor@...>

I have a question about the difference(s) between Python and Ruby. I

20 messages 2008/05/08
[#301197] Re: "Real" Differences Between Python & Ruby — globalrev <skanemupp@...> 2008/05/08

On 8 Maj, 04:09, Phlip <phlip2...@gmail.com> wrote:

[#301296] Re: "Real" Differences Between Python & Ruby — Marc Heiler <shevegen@...> 2008/05/09

I was about to comment on something but when i read this:

[#301305] Re: "Real" Differences Between Python & Ruby — "Max Cantor" <maxcantor@...> 2008/05/09

On Fri, May 9, 2008 at 12:23 PM, Marc Heiler <shevegen@linuxmail.org> wrote:

[#301101] Why can't I redefine "<<" method to allow two parameters? — "Iñaki Baz Castillo" <ibc@...>

SGksIHZlcnkgZXhydGFuZ2U6CgoKY2xhc3MgTXlBcnJheSA8IEFycmF5CiAgYWxpYXMgb3JpZ2lu

14 messages 2008/05/08

[#301129] Comparing String with Symbol — "Iñaki Baz Castillo" <ibc@...>

SGksIGxvc3RzIG9mIFJ1YnkgbWV0aG9kcyBhbGxvdyBTdHJpbmcgb3IgU3ltYm9sIGFzIHBhcmFt

16 messages 2008/05/08

[#301204] Doing an AND in regexp char class — "Todd Benson" <caduceass@...>

This question arises out of a couple of recent threads and may or may

18 messages 2008/05/08
[#301216] Re: Doing an AND in regexp char class — "ara.t.howard" <ara.t.howard@...> 2008/05/08

[#301219] Re: Doing an AND in regexp char class — "Todd Benson" <caduceass@...> 2008/05/08

On Thu, May 8, 2008 at 6:07 PM, ara.t.howard <ara.t.howard@gmail.com> wrote:

[#301278] Delete every other value in an array — Tim Conner <crofty_james@...>

What is the best way to delete every other value in a ruby array?

18 messages 2008/05/09

[#301293] The Turing Machine (#162) — Matthew Moss <matthew.moss@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

29 messages 2008/05/09

[#301439] IO#putc writing 2 bytes? — Minic Minic <cg1161@...>

Hey all, thanks for reading. Today is my first attempt at getting some

12 messages 2008/05/11

[#301525] Convert integer to array? — Nadim Kobeissi <kaepora@...>

Let's say I have:

18 messages 2008/05/12

[#301528] Handling of arrays — Clement Ow <clement.ow@...>

A snippet of my code are as follows:

15 messages 2008/05/12
[#301542] Re: Handling of arrays — "Jes俍 Gabriel y Gal疣" <jgabrielygalan@...> 2008/05/12

On Mon, May 12, 2008 at 11:00 AM, Clement Ow

[#301602] Re: Handling of arrays — Clement Ow <clement.ow@...> 2008/05/13

Jes炭s Gabriel y Gal叩n wrote:

[#301611] Re: Handling of arrays — "Jes俍 Gabriel y Gal疣" <jgabrielygalan@...> 2008/05/13

On Tue, May 13, 2008 at 5:22 AM, Clement Ow

[#301719] Re: Handling of arrays — Clement Ow <clement.ow@...> 2008/05/14

Jes炭s Gabriel y Gal叩n wrote:

[#301623] How to convert character to hexadecimal? — "Iñaki Baz Castillo" <ibc@...>

SGksIEkgd2FudCB0byBjb252ZXJ0IHNvbWUgY2hhcmFjdGVyZXMgdG8gaGV4YWRlY2ltYWw6Cgog

21 messages 2008/05/13
[#301639] Re: How to convert character to hexadecimal? — Chris Hulan <chris.hulan@...> 2008/05/13

On May 13, 9:57 am, I=F1aki Baz Castillo <i...@aliax.net> wrote:

[#301842] 40 million levenshtein distances for two long strings — John <john.d.perkins@...>

I am trying to discover similar files to reduce redundancy on a large

12 messages 2008/05/15

[#301848] 7 Ruby Programming ebook — Laurynn <surejaya@...>

Found this on free ebook site.

44 messages 2008/05/15
[#302032] Re: 7 Ruby Programming ebook — Phillip Gawlowski <cmdjackryan@...> 2008/05/16

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

[#302612] Re: 7 Ruby Programming ebook — Camilo <camilor@...> 2008/05/22

Pablo

[#301898] What is the bes Ruby's book for beginners? — Renato Veneroso <rveneroso@...>

Hi everybody,

20 messages 2008/05/15

[#301937] Matz: can we have rescue/else/ensure available in all blocks? — coderrr <coderrr.contact@...>

Hi Matz,

12 messages 2008/05/15

[#301992] Obfuscated Email — "Matthew Moss" <matthew.moss@...>

_If you want to ignore the introduction and just get to the task, skip down

44 messages 2008/05/16

[#302028] Monkey Patching (definition)? — Christoph Schiessl <c.schiessl@...>

For example. Look the following piece of simple Ruby Code:

12 messages 2008/05/16

[#302034] Not quite getting it. — Roger Alsing <roger.alsing@...>

Hi,

27 messages 2008/05/16
[#302079] Re: Not quite getting it. — "ara.t.howard" <ara.t.howard@...> 2008/05/16

[#302092] Re: Not quite getting it. — Florian Gilcher <flo@...> 2008/05/17

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

[#302109] Re: Not quite getting it. — Roger Alsing <roger.alsing@...> 2008/05/17

> class Test

[#302064] ruby 1.9 hates you and me and the encodings we rode in on so just get used to it. — DJ Jazzy Linefeed <john.d.perkins@...>

def prep_file(path)

29 messages 2008/05/16
[#353767] Re: ruby 1.9 hates you and me and the encodings we rode in on so just get used to it. — Brian Candler <b.candler@...> 2009/12/27

DJ Jazzy Linefeed wrote:

[#353868] Re: ruby 1.9 hates you and me and the encodings we rode in on so just get used to it. — Bill Kelly <billk@...> 2009/12/29

Brian Candler wrote:

[#302093] Object#select and method_missing — Bob Aman <bob@...>

class SelectTest

14 messages 2008/05/17

[#302112] Dude? — "Robert Dober" <robert.dober@...>

Dear native speakers

39 messages 2008/05/17

[#302348] Why doesn't Float() work the same as Integer()? — "Michael W. Ryder" <_mwryder@...>

In my continuing work learning Ruby while creating a Rational class I

26 messages 2008/05/19
[#302373] Re: Why doesn't Float() work the same as Integer()? — "Eric I." <rubytraining@...> 2008/05/20

On May 19, 7:44=A0pm, "Michael W. Ryder" <_mwry...@worldnet.att.net>

[#302500] Re: Why doesn't Float() work the same as Integer()? — Yukihiro Matsumoto <matz@...> 2008/05/21

Hi,

[#302412] Is Necessary for all rails employee know computer knowledge? — Michel Thapa <abcotech@...>

Hi all Is Necessary for all rails employee know computer knowledge?

15 messages 2008/05/20
[#302414] Re: Is Necessary for all rails employee know computer knowledge? — pjb@... (Pascal J. Bourguignon) 2008/05/20

Michel Thapa <abcotech@gmail.com> writes:

[#302431] Re: Is Necessary for all rails employee know computer knowledge? — Eleanor McHugh <eleanor@...> 2008/05/20

On 20 May 2008, at 13:15, Pascal J. Bourguignon wrote:

[#302477] Is there any good source for the logic behind some of the methods? — "Michael W. Ryder" <_mwryder@...>

I am trying to figure out why methods that seem to do the same thing

11 messages 2008/05/21

[#302489] Ensuring only one instance of a script is running — Daniel Berger <djberg96@...>

Hi all,

14 messages 2008/05/21

[#302565] Prevent ruby constant variables from changing? — George Wang <stdcells@...>

Hi,

36 messages 2008/05/22
[#302599] Re: Prevent ruby constant variables from changing? — Dave Bass <davebass@...> 2008/05/22

George Wang wrote:

[#302601] Re: Prevent ruby constant variables from changing? — Florian Gilcher <flo@...> 2008/05/22

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

[#302583] Re: Prevent ruby constant variables from changing? — Peña, Botp <botp@...> 2008/05/22

RnJvbTogR2VvcmdlIFdhbmcgW21haWx0bzpzdGRjZWxsc0B5YWhvby5jb21dIA0KIyBJcyB0aGVy

[#302604] Is rdoc (http://www.ruby-doc.org/core/) complete? — "Victor Reyes" <victor.reyes@...>

Hello Team,

10 messages 2008/05/22

[#302632] OOP in Ruby? — aidy <aidy.lewis@...>

Hi,

39 messages 2008/05/22
[#303006] Re: OOP in Ruby? — aidy <aidy.lewis@...> 2008/05/27

On May 26, 3:59 pm, luka luka <dezer...@posta.ge> wrote:

[#303023] Re: OOP in Ruby? — Huw Collingbourne <huw@...> 2008/05/27

aidy wrote:

[#303027] Re: OOP in Ruby? — "Robert Dober" <robert.dober@...> 2008/05/27

On Tue, May 27, 2008 at 2:20 PM, Huw Collingbourne <huw@darkneon.com> wrote:

[#302769] #plural? or #singular? — Mark Dodwell <seo@...>

Does anybody know an easy way to test if a word is singular or plural --

21 messages 2008/05/23
[#302807] Re: #plural? or #singular? — Dave Bass <davebass@...> 2008/05/24

There are lots of difficulties here.

[#302809] Re: #plural? or #singular? — "Robert Dober" <robert.dober@...> 2008/05/24

On Sat, May 24, 2008 at 5:08 PM, Dave Bass <davebass@musician.org> wrote:

[#302812] Re: #plural? or #singular? — "Axel Etzold" <AEtzold@...> 2008/05/24

[#302876] A simple newbie question (arrays and strings) — koichirose <koi@...>

Today I started programming in ruby.

13 messages 2008/05/25

[#302894] briefest method of generating a list of random numbers? — Boris Schmid <boris@...>

Hi all,

11 messages 2008/05/26

[#302911] Why "ABCDE"[0] returns an integer instead of 'A' ? — "Iñaki Baz Castillo" <ibc@...>

SGksIEkgY2Fubm90IHVuZGVyc3RhbmQgaG93IGEgaGlnaCBsZXZlbCBsYW5ndWFnZSBhcyBSdWJ5

12 messages 2008/05/26

[#303002] documentation for ruby? — notnorwegian@...

i think the documentation at http://www.ruby-doc.org/ is fairly

63 messages 2008/05/27
[#303021] Re: documentation for ruby? — Ron Fox <fox@...> 2008/05/27

What sort of documentation are you looking for reference? tutorial?

[#303028] Re: documentation for ruby? — "James Bracy" <waratuman86@...> 2008/05/27

I find ruby-doc to be great. But if you are looking for a tutorial, it

[#303032] Re: documentation for ruby? — "Robert Dober" <robert.dober@...> 2008/05/27

On Tue, May 27, 2008 at 2:58 PM, James Bracy <waratuman86@gmail.com> wrote:

[#303034] Re: documentation for ruby? — Mark Wilden <mark@...> 2008/05/27

On May 27, 2008, at 7:03 AM, Robert Dober wrote:

[#303037] Re: documentation for ruby? — "Victor Reyes" <victor.reyes@...> 2008/05/27

What's top or bottom posting anyway?

[#303039] Re: documentation for ruby? — "Todd Benson" <caduceass@...> 2008/05/27

This is top posting.

[#303046] Re: documentation for ruby? — Mark Wilden <mark@...> 2008/05/27

On May 27, 2008, at 7:39 AM, Todd Benson wrote:

[#303064] Re: documentation for ruby? — "Todd Benson" <caduceass@...> 2008/05/27

On Tue, May 27, 2008 at 9:53 AM, Mark Wilden <mark@mwilden.com> wrote:

[#303066] Re: documentation for ruby? — Phillip Gawlowski <cmdjackryan@...> 2008/05/27

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

[#303075] Re: Top-posting — Mark Wilden <mark@...> 2008/05/27

[#303077] Re: Top-posting — "Avdi Grimm" <avdi@...> 2008/05/27

My personal opinion:

[#303014] Directionality of comparasion operators — Tobias Weber <towb@...>

Hi,

11 messages 2008/05/27

[#303150] The duck's backside — Tobias Weber <towb@...>

Hi,

75 messages 2008/05/28
[#303179] Re: The duck's backside — Tobias Weber <towb@...> 2008/05/28

In article

[#303202] Re: The duck's backside — Eleanor McHugh <eleanor@...> 2008/05/28

[#303215] Re: The duck's backside — Mark Wilden <mark@...> 2008/05/28

[#303224] Re: The duck's backside — Eleanor McHugh <eleanor@...> 2008/05/28

On 28 May 2008, at 18:57, Mark Wilden wrote:

[#303236] Re: The duck's backside — Mark Wilden <mark@...> 2008/05/28

On May 28, 2008, at 11:45 AM, Eleanor McHugh wrote:

[#303240] Re: The duck's backside — David Masover <ninja@...> 2008/05/28

On Wednesday 28 May 2008 15:09:23 Mark Wilden wrote:

[#303255] Re: The duck's backside — Mark Wilden <mark@...> 2008/05/28

On May 28, 2008, at 1:44 PM, David Masover wrote:

[#303289] Re: The duck's backside — "Avdi Grimm" <avdi@...> 2008/05/29

On Wed, May 28, 2008 at 6:23 PM, Mark Wilden <mark@mwilden.com> wrote:

[#303296] Re: The duck's backside — Mark Wilden <mark@...> 2008/05/29

On May 28, 2008, at 8:59 PM, Avdi Grimm wrote:

[#303322] Re: The duck's backside — "David A. Black" <dblack@...> 2008/05/29

Hi --

[#303315] Re: The duck's backside — David Masover <ninja@...> 2008/05/29

On Thursday 29 May 2008 00:59:42 Mark Wilden wrote:

[#303170] Should I Learn Ruby as a First Language? — MRH <mauriceroman@...>

Hello Group,

64 messages 2008/05/28
[#303176] Re: Should I Learn Ruby as a First Language? — Tobias Weber <towb@...> 2008/05/28

In article

[#303183] Re: Should I Learn Ruby as a First Language? — Mark Wilden <mark@...> 2008/05/28

On May 28, 2008, at 6:01 AM, Tobias Weber wrote:

[#303222] Re: Should I Learn Ruby as a First Language? — "Kyle Schmitt" <kyleaschmitt@...> 2008/05/28

Since nobody's posted it...

[#303234] Re: Should I Learn Ruby as a First Language? — Mark Wilden <mark@...> 2008/05/28

On May 28, 2008, at 11:36 AM, Kyle Schmitt wrote:

[#303174] Merge collections of objects — John Butler <johnnybutler7@...>

Hi,

12 messages 2008/05/28

[#303253] DRb Problems with Mac OS X 10.5.3 — Kurt Schrader <kschrader@...>

It looks like the Mac OS X 10.5.3 upgrade breaks DRb when it's trying to

22 messages 2008/05/28
[#303265] Re: DRb Problems with Mac OS X 10.5.3 — Eric Ly <eric@...> 2008/05/28

I'm running into the same problem too having just upgraded. Is there a

[#303268] Re: DRb Problems with Mac OS X 10.5.3 — Kurt Schrader <kschrader@...> 2008/05/29

No solution yet, but it looks like something has changed in some

[#303293] Re: DRb Problems with Mac OS X 10.5.3 — Andy Keep <akeep@...> 2008/05/29

I've not done too much Ruby socket programming, but it seems to be that

[#303297] Re: DRb Problems with Mac OS X 10.5.3 — "Laurent Sansonetti" <laurent.sansonetti@...> 2008/05/29

Thanks for the report, we are of course very sorry about that. Ruby

[#303362] Surprising Extend — "Leslie Viljoen" <leslieviljoen@...>

Hi people

13 messages 2008/05/29

[#303398] Gems not working — Jim Hoskins <jimh@...>

I am currently not able to install any gems. I was using Gem 1.1.1 but

17 messages 2008/05/29

[#303434] How do i replace actual value in the query with variables? — Ting Chang <aumart@...>

I try to set up a loop to put the data in the array into the oracle

11 messages 2008/05/29

[#303519] getting standard error and output from ruby script in real time — Stefano Crocco <stefano.crocco@...>

I'm trying to write an editor for ruby in ruby using the KDE4 bindings for

10 messages 2008/05/30

[#303571] splitting help needed — Zoe Phoenix <dark_sgtphoenix@...>

I have a program that someone on this forum helped me fix before that

19 messages 2008/05/30
[#303573] Re: splitting help needed — Siep Korteling <s.korteling@...> 2008/05/30

Zoe Phoenix wrote:

[#303576] Price Ranges (#164) — "Matthew Moss" <matthew.moss@...>

Apologies for the late quiz... been rather busy today. Here's another simple

16 messages 2008/05/31

Re: Search string for occurneces of words stored in array

From: Robert Klemme <shortcutter@...>
Date: 2008-05-01 11:50:05 UTC
List: ruby-talk #300249
On 30.04.2008 23:48, Robert Klemme wrote:
> On 30.04.2008 23:40, David A. Black wrote:
>> Hi --
>>
>> On Thu, 1 May 2008, Robert Klemme wrote:
>>
>>> On 30.04.2008 16:18, Jens Wille wrote:
>>>> Phillip Gawlowski [2008-04-30 16:09]:
>>>>> John Butler wrote:
>>>>> | Hi,
>>>>> |
>>>>> | I have a sentence "This is my test sentence" and an array["is", 
>>>>> "the",
>>>>> | "my"] and what i need to do is find the occurence of any of thearray
>>>>> | words in the sentence.
>>>>> |
>>>>> | I have this working in a loop but i was wondering is there a way 
>>>>> to do
>>>>> | it using one of rubys string methods.
>>>>> |
>>>>> | Its sililar to the include method but searching for multiple 
>>>>> words not
>>>>> | just one.
>>>>> |
>>>>> | "This is my test sentence".include?("This") returns true
>>>>> |
>>>>> | but i want something like
>>>>> |
>>>>> | "This is my test sentence".include?("This", "is", "my")
>>>>> |
>>>>> | anyone got a nice way to do this? I only need to find if one of the
>>>>> | words occure and then i exit.
>>>>> |
>>>>> | JB
>>>>>
>>>>> How about '["is", "the", "my"].each'?
>>>>>
>>>>> I.e.:
>>>>>
>>>>> ["is", "the", "my"].each do |word|
>>>>> ~  break if "the test sentence'.include? word
>>>>> end
>>>> i'd prefer Enumerable#any?:
>>>>
>>>>   sentence, words = "This is my test sentence", ["This", "is", "my"]
>>>>   words.any? { |word| sentence.include?(word) }
>>> I'd rather do it the other way round, i.e. iterate over the sentence 
>>> and test words since the sentence is potentially longer:
>>>
>>> irb(main):001:0> require 'enumerator'
>>> => true
>>> irb(main):002:0> require 'set'
>>> => true
>>> irb(main):003:0> words = %w{This is my}.to_set
>>> => #<Set: {"my", "This", "is"}>
>>> irb(main):004:0> "This is my test sentence".to_enum(:scan,/\w+/).any? 
>>> {|w| words.include? w}
>>> => true
>>> irb(main):005:0>
>>
>> Is there any reason not to just do:
>>
>>    "This is my test sentence".scan(/\w+/).any? {|w| words.include? w }
> 
> Yes.  I used to_enum(:scan,/\w+/) because in this class of problems the 
> text (sentence) is tends to be large.  The approach using to_enum does 
> the test while traversing while scan approach first converts the whole 
> text into words and then applies the test thus iterating twice over the 
> whole text plus doing more conversions (to words) and needs more 
> temporary memory (i.e. for the whole sequence of words, although the 
> overhead might be small because of internal String memory sharing).
> 
> The Set approach scales better for larger sets of words because the Set 
> lookup is O(1) while an Array based lookup is O(n).
> 
> I am not saying that my approach is faster under all circumstances.  But 
> it surely scales better.

Well, I did a little benchmarking and it turns out that I probably spoke 
too soon.  As often - assumptions should be verified against measurable 
reality.

Here's the numbers.  I leave the analysis for the reader, but keep in 
mind that the situation might change significantly if the input text 
needs to be read via IO (from a file etc.). :-)

Kind regards

	robert



robert@fussel /cygdrive/c/Temp
$ ./scan.rb
Rehearsal -------------------------------------------------------
head arr std          7.578000   0.063000   7.641000 (  7.628000)
head arr enum         0.000000   0.000000   0.000000 (  0.000000)
head set std          8.016000   0.031000   8.047000 (  8.043000)
head set enum         0.000000   0.000000   0.000000 (  0.000000)
head rarr std         7.968000   0.016000   7.984000 (  8.041000)
head rarr enum        0.000000   0.000000   0.000000 (  0.002000)
head rx               0.000000   0.000000   0.000000 (  0.000000)
tail arr std         20.203000   0.000000  20.203000 ( 20.390000)
tail arr enum        32.079000   0.000000  32.079000 ( 33.039000)
tail set std         15.421000   0.031000  15.452000 ( 15.616000)
tail set enum        26.672000   0.016000  26.688000 ( 26.721000)
tail rarr std        19.782000   0.031000  19.813000 ( 19.811000)
tail rarr enum       31.281000   0.000000  31.281000 ( 31.360000)
tail rx               0.078000   0.000000   0.078000 (  0.080000)
mid arr std          13.828000   0.031000  13.859000 ( 13.853000)
mid arr enum         15.781000   0.000000  15.781000 ( 15.814000)
mid set std          11.485000   0.063000  11.548000 ( 11.559000)
mid set enum         12.953000   0.000000  12.953000 ( 12.961000)
mid rarr std         14.156000   0.062000  14.218000 ( 14.231000)
mid rarr enum        15.375000   0.016000  15.391000 ( 15.412000)
mid rx                0.031000   0.000000   0.031000 (  0.039000)
-------------------------------------------- total: 253.047000sec

                           user     system      total        real
head arr std          7.031000   0.062000   7.093000 (  7.086000)
head arr enum         0.000000   0.000000   0.000000 (  0.000000)
head set std          7.078000   0.063000   7.141000 (  7.131000)
head set enum         0.000000   0.000000   0.000000 (  0.000000)
head rarr std         7.000000   0.125000   7.125000 (  7.129000)
head rarr enum        0.000000   0.000000   0.000000 (  0.000000)
head rx               0.000000   0.000000   0.000000 (  0.000000)
tail arr std         19.282000   0.031000  19.313000 ( 19.341000)
tail arr enum        30.328000   0.078000  30.406000 ( 30.658000)
tail set std         14.594000   0.000000  14.594000 ( 14.600000)
tail set enum        25.360000   0.000000  25.360000 ( 25.403000)
tail rarr std        19.047000   0.016000  19.063000 ( 19.076000)
tail rarr enum       29.922000   0.000000  29.922000 ( 29.984000)
tail rx               0.078000   0.000000   0.078000 (  0.082000)
mid arr std          13.297000   0.000000  13.297000 ( 13.312000)
mid arr enum         14.453000   0.000000  14.453000 ( 14.451000)
mid set std          10.954000   0.031000  10.985000 ( 11.012000)
mid set enum         12.093000   0.000000  12.093000 ( 12.155000)
mid rarr std         13.312000   0.000000  13.312000 ( 13.346000)
mid rarr enum        14.375000   0.000000  14.375000 ( 14.389000)
mid rx                0.031000   0.000000   0.031000 (  0.037000)

robert@fussel /cygdrive/c/Temp
$ cat scan.rb
#!/bin/env ruby

require 'set'
require 'enumerator'

require 'benchmark'

TEXT_FRONT = ("a" << (" x" * 1_000_000)).freeze
TEXT_TAIL = (("x " * 1_000_000) << "a").freeze
TEXT_MID = (("x " * 500_000) << "a" << (" x" * 500_000)).freeze
WORDS = %w{a b c d e f}.freeze
REV_WORDS = WORDS.reverse.freeze
SET_WORDS = WORDS.to_set.freeze
RX = Regexp.new("\\b#{Regexp.union(*WORDS)}\\b")

TEXTS = {
   "head" => TEXT_FRONT,
   "mid" => TEXT_MID,
   "tail" => TEXT_TAIL,
}

TESTER = {
   "arr" => WORDS,
   "rarr" => REV_WORDS,
   "set" => SET_WORDS,
}

REPEAT = 5

Benchmark.bmbm 20 do |b|
   TEXTS.each do |tlabel, text|
     TESTER.each do |lab,enum|
       b.report "#{tlabel} #{lab} std" do
         REPEAT.times do
           text.scan(/\w+/).any? {|w| enum.include? w}
         end
       end

       b.report "#{tlabel} #{lab} enum" do
         REPEAT.times do
           text.to_enum(:scan, /\w+/).any? {|w| enum.include? w}
         end
       end
     end

     b.report "#{tlabel} rx" do
       REPEAT.times do
         RX =~ text
       end
     end
   end
end

robert@fussel /cygdrive/c/Temp
$

In This Thread