Great Computer Language Shootout

William James wrote:

> We've added some new micro-benchmarks and deprecated some of the

old

> ones.
> So now Ruby is missing a dozen programs!
>
> http://shootout.alioth.debian.org/
>
> If you have a few moments please contribute stylish Ruby programs.
>
> best wishes, Isaac

Here's a shorter and, I think, slightly faster program to count
word-frequencies.

freq = Hash.new(0)
loop {
    data = (STDIN.read(4095) or break) + (STDIN.gets || "")
    for word in data.downcase!.tr!('^a-z',' ').split
        freq[word] += 1
    end
}
print freq.to_a.map{|x| sprintf("%7d %s\n",x[1],x[0])}.sort.reverse

Excellent!

Before we can use it I'm afraid you have to contribute it to the
shootout, we can't just skim programs from other places.

Please send programs to the mailing list or send them using the message
form or email them to igouy2

http://shootout.alioth.debian.org/faq.php?sort=fullcpu

best wishes, Isaac

···

igouy@yahoo.com wrote:

igouy@yahoo.com wrote:

William James wrote:
> > We've added some new micro-benchmarks and deprecated some of the
old
> > ones.
> > So now Ruby is missing a dozen programs!
> >
> > http://shootout.alioth.debian.org/
> >
> > If you have a few moments please contribute stylish Ruby

programs.

> >
> > best wishes, Isaac
>
> Here's a shorter and, I think, slightly faster program to count
> word-frequencies.
>
> freq = Hash.new(0)
> loop {
> data = (STDIN.read(4095) or break) + (STDIN.gets || "")
> for word in data.downcase!.tr!('^a-z',' ').split
> freq[word] += 1
> end
> }
> print freq.to_a.map{|x| sprintf("%7d %s\n",x[1],x[0])}.sort.reverse

Excellent!

Before we can use it I'm afraid you have to contribute it to the
shootout, we can't just skim programs from other places.

Please send programs to the mailing list or send them using the

message

form or email them to igouy2

http://shootout.alioth.debian.org/faq.php?sort=fullcpu

best wishes, Isaac

Ruby gurus: before this is sent to the shootout, would you check
it to see if it can be made faster? (It has already been checked
for correctness.)

···

> igouy@yahoo.com wrote:

[William James <w_a_x_man@yahoo.com>, 2005-03-15 14.56 CET]

> William James wrote:

[...]

> > freq = Hash.new(0)
> > loop {
> > data = (STDIN.read(4095) or break) + (STDIN.gets || "")
> > for word in data.downcase!.tr!('^a-z',' ').split

But "a".downcase! => nil ... And the same with most !-methods (they return
nil when nothing was changed).

But "a".downcase! => nil ... And the same with most !-methods (they return
nil when nothing was changed).

That always bothered me, since I lose my method chaining with !
methods. Like this:

line.strip!.downcase!

must be

line.strip.downcase

to work properly. But then you lose some efficiency.

I'd prefer that ! methods returned 'self'. In the *rare* case that I
need to know if something changed, I'll use == or something. RCR in
the making?

Dan

It's been suggested many times. I agree, but my vote hardly counts. =)

···

On Thu, 17 Mar 2005 09:16:26 +0900, Daniel Amelang <daniel.amelang@gmail.com> wrote:

> But "a".downcase! => nil ... And the same with most !-methods (they return
> nil when nothing was changed).

That always bothered me, since I lose my method chaining with !
methods. Like this:

line.strip!.downcase!

must be

line.strip.downcase

to work properly. But then you lose some efficiency.

I'd prefer that ! methods returned 'self'. In the *rare* case that I
need to know if something changed, I'll use == or something. RCR in
the making?

Dan

Daniel Amelang wrote:

But "a".downcase! => nil ... And the same with most !-methods (they return
nil when nothing was changed).

That always bothered me, since I lose my method chaining with !
methods. Like this:

line.strip!.downcase!

must be

line.strip.downcase

to work properly. But then you lose some efficiency.

I'd prefer that ! methods returned 'self'. In the *rare* case that I
need to know if something changed, I'll use == or something. RCR in
the making?

It's been discussed a lot over the years. My impression is that
Matz likes this behavior, in which case it would be unlikely to
change.

Hal