[#33161] Call/CC and Ruby iterators. — olczyk@... (Thaddeus L Olczyk)

Reading about call/cc in Scheme I get the impression that it is very

11 messages 2002/02/05

[#33242] favicon.ico — Dave Thomas <Dave@...>

19 messages 2002/02/06
[#33256] Re: favicon.ico — Leon Torres <leon@...> 2002/02/06

[#33435] Reg: tiny contest: who's faster? (add_a_gram) — grady@... (Steven Grady)

> My current solution works correctly with various inputs.

17 messages 2002/02/08

[#33500] Ruby Embedded Documentation — William Djaja Tjokroaminata <billtj@...>

Hi,

24 messages 2002/02/10
[#33502] Re: Ruby Embedded Documentation — "Lyle Johnson" <ljohnson@...> 2002/02/10

> Now, I am using Ruby on Linux, and I have downloaded Ruby version

[#33615] Name resolution in Ruby — stern@... (Alan Stern)

I've been struggling to understand how name resolution is supposed to

16 messages 2002/02/11

[#33617] choice of HTML templating system — Paul Brannan <paul@...>

I am not a web developer, nor do I pretend to be one.

23 messages 2002/02/11

[#33619] make first letter lowercase — sebi@... (sebi)

hello,

20 messages 2002/02/11
[#33620] Re: [newbie] make first letter lowercase — Tobias Reif <tobiasreif@...> 2002/02/11

sebi wrote:

[#33624] Re: [newbie] make first letter lowercase — "Jeff 'japhy' Pinyan" <jeffp@...> 2002/02/11

On Feb 11, Tobias Reif said:

[#33632] Re: [newbie] make first letter lowercase — Mathieu Bouchard <matju@...> 2002/02/12

[#33731] simple XML parsing (greedy / non-greedy — Ron Jeffries <ronjeffries@...>

Suppose I had this text

14 messages 2002/02/13

[#33743] qualms about respond_to? idiom — David Alan Black <dblack@...>

Hi --

28 messages 2002/02/13
[#33751] Re: qualms about respond_to? idiom — Dave Thomas <Dave@...> 2002/02/13

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

[#33754] Re: qualms about respond_to? idiom — David Alan Black <dblack@...> 2002/02/13

Hi --

[#33848] "Powered by Ruby" banner — Yuri Leikind <YuriLeikind@...>

Hello Ruby folks,

78 messages 2002/02/14
[#33909] Re: "Powered by Ruby" banner — Leon Torres <leon@...> 2002/02/14

On Thu, 14 Feb 2002, Yuri Leikind wrote:

[#33916] RE: "Powered by Ruby" banner — "Jack Dempsey" <dempsejn@...> 2002/02/15

A modest submission:

[#33929] Re: "Powered by Ruby" banner — yet another bill smith <bigbill.smith@...> 2002/02/15

Kent Dahl wrote:

[#33932] OT Netscape 4.x? was Re: "Powered by Ruby" banner — Chris Gehlker <gehlker@...> 2002/02/15

On 2/15/02 5:54 AM, "yet another bill smith" <bigbill.smith@verizon.net>

[#33933] RE: OT Netscape 4.x? was Re: "Powered by Ruby" banner — "Jack Dempsey" <dempsejn@...> 2002/02/15

i just don't understand why it didn't show up! dhtml/javascript, ok, but a

[#33937] Re: OT Netscape 4.x? was Re: "Powered by Ruby" banner — Chris Gehlker <gehlker@...> 2002/02/15

On 2/15/02 7:16 AM, "Jack Dempsey" <dempsejn@georgetown.edu> wrote:

[#33989] Re: OT OmniWeb [was: Netscape 4.x?] — Sean Russell <ser@...> 2002/02/16

Chris Gehlker wrote:

[#33991] Re: OT OmniWeb [was: Netscape 4.x?] — Rob Partington <rjp@...> 2002/02/16

In message <3c6e5e01_1@spamkiller.newsgroups.com>,

[#33993] Re: OT OmniWeb [was: Netscape 4.x?] — Thomas Hurst <tom.hurst@...> 2002/02/16

* Rob Partington (rjp@browser.org) wrote:

[#33925] Re: "Powered by Ruby" banner — Martin Maciaszek <mmaciaszek@...> 2002/02/15

In article <3C6CFCCA.5AD5CA67@scnsoft.com>, Yuri Leikind wrote:

[#33956] Re: "Powered by Ruby" banner — Leon Torres <leon@...> 2002/02/15

On Fri, 15 Feb 2002, Martin Maciaszek wrote:

[#33851] Ruby and .NET — Patrik Sundberg <ps@...>

I have been reading a bit about .NET for the last couple of days and must say

53 messages 2002/02/14

[#34024] Compiled companion language for Ruby? — Erik Terpstra <erik@...>

Hmmm, seems that my previous post was in a different thread, I'll try

12 messages 2002/02/16

[#34036] The GUI Returns — "Horacio Lopez" <vruz@...>

Hello all,

33 messages 2002/02/17

[#34162] Epic4/Ruby — Thomas Hurst <tom.hurst@...>

Rejoice, for you no longer have to put up with that evil excuse for a

34 messages 2002/02/18

[#34185] Operator overloading and multiple arguments — ptkwt@...1.aracnet.com (Phil Tomson)

I'm trying to overload the '<=' operator in a class in order to use it for

10 messages 2002/02/18

[#34217] Ruby for web development — beripome@... (Billy)

Hi all,

21 messages 2002/02/19

[#34350] FAQ for comp.lang.ruby — "Hal E. Fulton" <hal9000@...>

RUBY NEWSGROUP FAQ -- Welcome to comp.lang.ruby! (Revised 2001-2-18)

15 messages 2002/02/20

[#34375] Setting the Ruby continued — <jostein.berntsen@...>

Hi,

24 messages 2002/02/20
[#34384] Re: Setting the Ruby continued — Paulo Schreiner <paulo@...> 2002/02/20

Also VERY important:

[#34467] recursive require — Ron Jeffries <ronjeffries@...>

I'm having a really odd thing happen with two files that mutually

18 messages 2002/02/21

[#34503] special characters — Tobias Reif <tobiasreif@...>

Hi all,

13 messages 2002/02/22

[#34517] Windows Installer Ruby 166-0 available — Andrew Hunt <andy@...>

16 messages 2002/02/22

[#34597] rdoc/xml questions — Dave Thomas <Dave@...>

24 messages 2002/02/23

[#34631] Object/Memory Management — "Sean O'Dell" <sean@...>

I'm new to Ruby and the community here (I've been learning Ruby for a grand

44 messages 2002/02/23

[#34682] duplicate method name — Ron Jeffries <ronjeffries@...>

I just found a case in a test file where i had two tests of the same

16 messages 2002/02/24
[#34687] Re: duplicate method name — s@... (Stefan Schmiedl) 2002/02/24

Hi Ron.

[#34791] Style Question — Ron Jeffries <ronjeffries@...>

So I'm building this set theory library. The "only" object is supposed

13 messages 2002/02/25

[#34912] RCR?: parallel to until: as_soon_as — Tobias Reif <tobiasreif@...>

Hi,

18 messages 2002/02/26

[#34972] OT A Question on work styles — Chris Gehlker <gehlker@...>

As a Mac baby I just had to step through ruby in GDB *from the command line*

20 messages 2002/02/28

[#35015] Time Comparison — "Sean O'Dell" <sean@...>

I am using the time object to compare times between two files and I'm

21 messages 2002/02/28

tiny contest: who's faster? (add_a_gram)

From: Tobias Reif <tobiasreif@...>
Date: 2002-02-08 17:43:52 UTC
List: ruby-talk #33425
Hi;

Better than Superbowl, bigger than the Olympics;
the Add-A-Gram contest :)

http://www.itasoftware.com/careers/programmers.php

(I'm already last: They asked me to fetch the largest apple,
and I'm still driving around ten truckloads.)

My current solution works correctly with various inputs.
It might have bugs, but most importantly, it takes forever.
Short sample input is no problem; but as soon as I feed it
the 1.5 MB word list from the website, my computer
is overwhelmed, and starts to smell heated after 2 hours :|

So all you wizards, Ruby miners, speed freaks:
do the magic, spread the bliss, and enlighten us newbies.

I propose to compare complete programs featuring
faster concepts, and faster code (pure Ruby).

find.rb
----------8<----------

# tobiasreif@pinkjuice.com
# trying to solve
# http://www.itasoftware.com/careers/programmers.php
#   ruby find.rb word.lst.short
# write all add-a-grams:
#   ruby find.rb word.lst.short d


@file_name = ARGV[0]

@debug == false

if ARGV[1] == 'd'
   @debug = true
end

@word_list = open(@file_name, 'r') do |file|
   file.readlines
end

@word_list = @word_list.map do |word|
   word.chomp
end

class String
   def consists_of? (other)
     a = self.split(//)
     b = other.split(//)
     a.sort == b.sort
   end
end

class Array
   def get_words_consisting_of word
     word_consists_of = word.split(//).to_a.uniq
     start_words_characters = []

     word_consists_of.each do |char|
       each do |dict_word|
         if dict_word[0].chr == char
           start_words_characters.push dict_word
         end
       end
     end

     start_words_characters.select do |item|
       item.consists_of? word
     end

   end
end


def insert_list candidate
   @candidates.push(candidate) unless candidate.empty?
end

def get_next_words candidate, word_list
#p candidate
   word =  candidate
   next_words = []
   ('a'..'z').each do |letter|
      words = word_list.get_words_consisting_of(word+letter)
      words.each do |next_word|
        next_words.push([letter,next_word])
      end
   end
   next_words
end

def make_list candidate, word_list
   word = candidate.last.last.to_s
   next_words = get_next_words candidate.last.last.to_s, word_list
   if next_words.length == 1
     next_words.each do |letter,next_word|
       if not next_word == word
         line =  [word,letter,next_word]
         candidate.push line
         #puts candidate
         #puts line
         word_list.delete word
         word_list.delete next_word
         make_list candidate, word_list
       end
     end
   elsif  next_words.length > 1
     next_words.each do |letter,next_word|
       if not next_word == word
         new_candidate = candidate.dup
         word_list.delete word
         word_list.delete next_word
         candidate.push([word, letter,next_word])
         make_list new_candidate, word_list
       end
     end
   elsif next_words.length == 0
     insert_list candidate
   end
   candidate
end

@candidates = []

def walk
   @word_list.each do |word|
     puts "processing "+word
     make_list [[word]],@word_list.dup
   end
end

walk

@longest = @candidates.select do |array|
   bools = []
   @candidates.each do |a|
     bools.push(array.length >= a.length)
   end
   not(bools.include? false)
   #p bools
end

def format_candidate cand
   if cand.length >=3
     ary = cand.dup
     out = ary[0]+' + '+ary[1]+' = '+ary[2]+"\n"
     else
     ''
   end
end

@longest[0].each do |it|
   print format_candidate(it)
end

open('output.txt', 'w+') do |file|
   #file.write @candidates.inspect
   #file.write @candidates.join "\n\n"
   file.write "one of the longest add-a-grams from #{@file_name}: 
\nlength: "+
    ((@longest[0].length) -1).to_s
   file.write "\n\n"
   @longest[0].each do |it|
     file.write format_candidate(it)
   end
   if @debug == true
      file.write "\n- - - - - - - - - - - - - - - - - \nrest:\n\n"
     @candidates.each do |c|
      if not c.empty?
       c.each do |item|
       #file.write c.inspect
       file.write(format_candidate(item))
       end
       file.write "\n"
      end
     end
   end
end

----------8<----------

word.lst.short
----------8<----------
ail
sail
cram
nails
amarcy
interlaces
charms
chromas
aliens
entrails
clarinets
maraschino
maraschinob
monarchs
harmonics
march
marcy
cails
salient
----------8<----------

output.txt:
----------8<----------
one of the longest add-a-grams from word.lst.short:
length: 7

ail + s = sail
sail + n = nails
nails + e = aliens
aliens + t = salient
salient + r = entrails
entrails + c = clarinets
clarinets + e = interlaces
----------8<----------

Have fun,
Tobi

-- 

* peace&love.
* http://www.pinkjuice.com/

In This Thread

Prev Next