[#387246] newbie question — sunny parker <info@2020proj.com>

i am coming from php and dont seem to quite understand how ruby works

13 messages 2011/09/01

[#387330] installing naive bayes classifier — aya abdelsalam <ayoya_91@...>

Hello

10 messages 2011/09/02

[#387344] Beginner needing help - Writing right-angle triangle program — Kane Williams <theburrick@...>

I've been going through a Haskell tutorial (Just to see what it's like)

12 messages 2011/09/03

[#387356] Which version should I download? — Vladimir Van Bauenhoffer <cluny_gisslaren@...>

Im new to programming and Im thinking of downloading and starting with

17 messages 2011/09/03

[#387392] loops problem — jack jones <shehio_22@...>

for (j = @array.length ; j > counter ; j = j-1) # counter is a variable

13 messages 2011/09/04

[#387469] posts on Unix systems programming — Eric Wong <normalperson@...>

I would like to do a series of mailing list posts on the subject of Unix

28 messages 2011/09/06

[#387530] Unexpected behavior of Ruby array — Suvankar Satpati <suvankar.17@...>

I was going through the exercises at http://rubykoans.com/ and got

11 messages 2011/09/08

[#387544] Executing the output of a look — dwight schrute <spambocks@...>

Hi,

14 messages 2011/09/08

[#387586] Creating a hash from two arrays — simon harrison <simonharrison.uk@...>

Hi. Can anyone help with this? I'd like to end with a hash like so:

15 messages 2011/09/09

[#387596] newbie ruby installation malloc issue — "mark e." <mark_f_edwards@...>

hi all -

12 messages 2011/09/09

[#387614] how to write data in binary to a file? — frank hi <yw_hi@163.com>

Hi,

11 messages 2011/09/10

[#387646] How do I make output generate a float without an excess numbers of decimal places? — Kane Williams <theburrick@...>

For example, my current code is

11 messages 2011/09/11

[#387725] Any downsides to writing paranthesises? — Vladimir Van Bauenhoffer <cluny_gisslaren@...>

Im a newbie programmer who is trying to learn Ruby after having just

18 messages 2011/09/12

[#387811] Get interpreter path — Michal Suchanek <hramrach@...>

Hello,

26 messages 2011/09/14
[#387842] Re: Get interpreter path — Phillip Gawlowski <cmdjackryan@...> 2011/09/14

On Wed, Sep 14, 2011 at 3:35 PM, Michal Suchanek <hramrach@centrum.cz> wrot=

[#387844] Re: Get interpreter path — Michal Suchanek <hramrach@...> 2011/09/14

On 14 September 2011 20:47, Phillip Gawlowski <cmdjackryan@gmail.com> wrote:

[#387814] Tough Ruby Homework — Rory Pascua <rorypascua@...>

I'm trying to take a long piece of text, find a word, and get that word

18 messages 2011/09/14

[#387853] Can I Safely Use Rubinius While Learning? — Aaron Jackson <jacksonaaronc@...>

Greetings,

18 messages 2011/09/15

[#387915] Some newbie questions — Vladimir Van Bauenhoffer <cluny_gisslaren@...>

I got some newbie questions which I would very much appreciate if

14 messages 2011/09/15

[#388003] Ruby Speed Question — Kevin Anon <oblivious.sage@...>

Wrote my first Ruby program recently for a class assignment where we had

12 messages 2011/09/18

[#388078] appending \n to each element in an array — Joe Collins <joec_49@...>

I have an array

13 messages 2011/09/20

[#388123] Turning on a special program at special time and turning off the computer at another special time — "amir e." <aef1370@...>

I decided to write a program in RUBY wherein these items have been done

11 messages 2011/09/21
[#388124] Re: Turning on a special program at special time and turning off the computer at another special time — andrew mcelroy <sophrinix@...> 2011/09/21

That sounds like a program a special program a terrorist would write. Are

[#388198] Conditional statements with multiple arguments — "Thomas B." <sinixlol@...>

Good afternoon everyone,

18 messages 2011/09/24

[#388203] Ruby 1.9.3 RC1 is out — "Yuki Sonoda (Yugui)" <yugui@...>

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

19 messages 2011/09/24
[#388208] Re: [ANN] Ruby 1.9.3 RC1 is out — Quintus <sutniuq@...> 2011/09/24

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

[#388209] Re: [ANN] Ruby 1.9.3 RC1 is out — Chris White <cwprogram@...> 2011/09/24

[#388214] Re: [ANN] Ruby 1.9.3 RC1 is out — Quintus <sutniuq@...> 2011/09/24

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

[#388216] Re: [ANN] Ruby 1.9.3 RC1 is out — Yusuke Endoh <mame@...> 2011/09/24

Hello,

[#388248] Looking for better/familiar approach to command line opts — "Perl J." <perljunkie@...>

So I guess the warning to the reader upfront is... I'm a bit of a Perl

14 messages 2011/09/25

[#388333] Get all classes from a list of files — Jeroen van Ingen <jeroeningen@...>

I have a list of ruby files. I would like to create objects from all

11 messages 2011/09/28

[#388342] Ruby Syntax @keywords ||= [ ] — Bhavesh Sharma <sharmabhavesh@...>

Sorry if this comes across as a dumb question, but what does the

11 messages 2011/09/28

[#388366] IO.readlines will not accept variable with file name Why? — Joda jenson <jodajen2@...>

I am fairly new to Ruby and I am stuck on this. Would someone have a

13 messages 2011/09/29
[#388368] Re: IO.readlines will not accept variable with file name Why? — Robert Klemme <shortcutter@...> 2011/09/29

On Thu, Sep 29, 2011 at 11:14 AM, Joda jenson <jodajen2@yahoo.com> wrote:

Re: Tough Ruby Homework

From: Robert Klemme <shortcutter@...>
Date: 2011-09-16 05:28:35 UTC
List: ruby-talk #387929
On Thu, Sep 15, 2011 at 10:32 PM, Ian Hobson <ian.hobson@ntlworld.com> wrot=
e:
> On 15/09/2011 19:56, Pascua 9804 wrote:
>>
>> Thanks to all who tried to help. =A0Here's the final answer.
>>
>>
>> #!/usr/bin/env ruby
>> string=3D"The quick brown fox jumped over the lazy dog"
>> def get_subsection(word, sentence)
>> sentence.scan(Regexp.new(/(?:\W{0,1}\w+\W){0,3}over(?:\W{1}\w+){0,3}/))
>> end
>>
>> puts get_subsection("quick", string)
>> puts get_subsection("lazy", string)
>> puts get_subsection("fox", string)
>> puts get_subsection("dog", string)
>>
>>
>> The regex in the middle of the syntax is where I struggled, but with a
>> little bit of help from the guru I was able to solve the problem.
>>
> I think that is a maintenance nightmare!
>
> As Jamie Zawinski said - Some people, when confronted with a problem, thi=
nk
> "I know, I'll use regular expressions." Now they have two problems.

Nah.

> For large source texts it will be horribly slow, and memory hungry, and f=
or
> large search lists it will slow down even more. =A0Huge, slow and hard to
> maintain =3D not good.

That entirely depends on the problem to solve and the approach with
regexp chosen.

> What the OP wanted was a sequence of 7 words, where the 4th is the word
> sought, and the string can be missing words "before" or "after" the sourc=
e
> string.
>
> So you need two parallel lists of strings. =A0The first is a list of toke=
ns
> from the source, where each token is separated from the next by white-spa=
ce.
> The second are words, created from the tokens by removing punctuation.

I'd work with a single list of words and non words interchanged.  That
should make generation of the combined matching sequence easier.

> Slide through the source, token at a time, and if the forth word of the w=
ord
> list is one of the ones you want,
> use the token list to reconstruct the fragment of the source, (without
> newlines) and emit the result.
>
> In order to handle the start-up and close-down properly, I would consider
> preloading the token list with null strings, and arrange the "get next
> token" function to return three null strings after end of file, before
> signalling the end.
> However there are other methods.
>
> This is one pass, so you don't need the source all in memory. It will be
> order source size in time, and order the number of words sought in space.
> =A0Fast, compact and easy to alter the rule or length of the lists.

I find this simpler:

def word_scan(s, *words)
  return to_enum(:word_scan, s, *words) unless block_given?
  return if words.empty?

  s.scan /\b#{Regexp.union words}\b/ do |wd|
    pre =3D $`
    post =3D $'
    yield pre[/(?:\w+\W+){0,3}\z/] + wd + post[/\A(?:\W+\w+){0,3}/]
  end
end

s =3D "Robert likes green beans, girls with moustaches, and teddy bears.
 John thinks Robert is strange"

puts 1
word_scan(s, "Robert") {|m| p m}

puts 2
word_scan(s, "green", "teddy") {|m| p m}
p word_scan(s, "green", "teddy").to_a

You can use it with and without block following the idiom to get an
Enumerable if there is no block.  However, for really large inputs
your approach is likely better.

Kind regards

robert

--=20
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread