expandaf... / yahoo.com wrote:
> On Sep 6, 7:29 pm, "Simon Schuster" <significa... / gmail.com> wrote:
> > I know this could be more idiomatic to ruby.
> >
> > it's basically to turnhttp://www.gutenberg.org/etext/18362into an
> > array. the "_no_extras" refers to me having snipped the intro and
> > outro of the text outside of ruby. I still have to do something with
> > the "SECTION" fields and the "A", "B", etc. fields. (not to mention
> > some kind of linguistic parsing which would make f[rand(f.size)] + " "
> > f[rand(f.size)] + " " .... link together in a coherent matter, but
> > that's a little beyond me. any direction in this area would be kindly
> > appreciated though! I'm thinking of separating it into different text
> > files maybe. certain sections are almost whole sentences, they're
> > grouped in all kinds of ways that will maybe help with this. no
> > long-term goal, really, just learning ruby and having fun. :)
> >
> > anyhow, the sloppy newbie code is as follows:
> >
> > f = File.read("phrases_no_extra.txt")
> > f = f.to_a
> > f = f.each { |x| x.chop! }
> > f.each_with_index { |x,y|    # deletes the empty array items
> >         if x.size == 0
> >                 f.delete_at(y)
> >         end
> >         }
> > f.each_with_index { |x,y|     # deleting all but the last (which is
> > spread of two lines)
> >         if x.include? "]"         # of his comments
> >                 f.delete_at(y)
> >         end
> >         }
> > f.each_with_index { |x,y|         # yes, this is me unable to recall
> > how to do "or" hahaha.
> >         if x.include? "["
> >                 f.delete_at(y)
> >         end
> >         }
> > f.delete_at(-1)          # random whitespace item at the end from the last quote
> >
> > puts f[rand(f.size)]
>
> a = IO.read("phrases_no_extra.txt").
>   split( /[\r?\n]+/ ).
>   reject{|s|
>     # Reject if length is less than 2 or if it contains
>     # a [ or if it's composed entirely of upper case
>     # letters and spaces.
>     s.size < 2  or  s.index "["  or  s =~ /^[A-Z ]+$/ }
>
> puts a[ rand( a.size ) ]

That contained some redundancy.

a = IO.read("phrases_no_extra.txt").
  split( /[\r?\n]+/ ).
  reject{|s|
    # Reject if it contains a [ or if
    # it's composed entirely of upper case
    # letters and spaces.
    s.index "["  or  s =~ /^[A-Z ]+$/ }

puts a[ rand( a.size ) ]