Hi James, i was about to write a lengthy answer.... i will compress it to the point that is still bothering me: There is a well known website (for a good reason and especialy for all ruby users) with my name on it. This website, which might well be the first hit if you google for ruby and my name, states that i'm to dumb to create a simple script looking up some words from a dictionary. I realy hate explaining my next customer why (and perhaps i will never get the chance to tell him). I would accept that, but not without beeing able to defend myself. You may argue i'm doing that already but whatever i write here will be invisible to anyone who looks at your website. (and i won't argue here if it has been less subjective whats right and whats wrong) Maybe this is exaggerated but i hope you got my point, there comes some responsibility with publicity. enough, to be a more constructiv: === Timing ./Adam Shelly/wordchain === Wordchain Finder Connecting duck -> ruby duck ruck rusk ruse rube ruby === ./Adam Shelly/wordchain: 0.703 seconds === === Timing ./Brian Schroeder/wordchain.rb === duck dusk rusk ruse rube ruby Loading database Searching connection between duck and ruby === ./Brian Schroeder/wordchain.rb: 2.297 seconds === === Timing ./Daniel Sheppard/word_chain.rb === duck dunk duns dubs rubs ruby === ./Daniel Sheppard/word_chain.rb: 9.328 seconds === === Timing ./David Tran/word_chain.rb === Loading dictionary... Building chain... duck ruck rusk ruse rube ruby === ./David Tran/word_chain.rb: 43.89 seconds === === Timing ./David Tran/word_chain2.rb === Loading dictionary... Building chain... duck ruck rusk ruse rube ruby === ./David Tran/word_chain2.rb: 7.36 seconds === === Timing ./Dominik Bathon/word_chain.rb === duck ruck rusk ruse rube ruby === ./Dominik Bathon/word_chain.rb: 1.031 seconds === === Timing ./Gavin Kistner/word_chain.rb === Searching in 2634 words with 4 letters Chain between 'duck' and 'ruby', no longer than 12 links: duck dunk duns runs rubs ruby --> 9.66s (after loading dictionary) === ./Gavin Kistner/word_chain.rb: 10.047 seconds === === Timing ./horndude77/wordchain.rb === duck dunk dune rune rube ruby === ./horndude77/wordchain.rb: 0.156 seconds === === Timing ./James Edward Gray II/word_chain.rb === duck ruck rusk ruse rube ruby === ./James Edward Gray II/word_chain.rb: 9.266 seconds === === Timing ./Levin Alexander/word_chains.rb === duck ruck rusk ruse rube ruby === ./Levin Alexander/word_chains.rb: 1.438 seconds === === Timing ./Paolo Capriotti/chain.rb === duck dunk dune rune rube ruby === ./Paolo Capriotti/chain.rb: 13.515 seconds === === Timing ./Simon Kroeger/word_chain.rb === duck dunk duns runs rubs ruby === ./Simon Kroeger/word_chain.rb: 1.125 seconds === === Timing ./Simon Kroeger/word_chain2.rb === duck dusk rusk ruse rube ruby === ./Simon Kroeger/word_chain2.rb: 0.829 seconds === === Timing ./Will Thimbleby/word_chain.rb === duck dunk duns runs rubs ruby === ./Will Thimbleby/word_chain.rb: 16.453 seconds === === Timing ./William James/word_chain.rb === ["duck", "ruck", "rusk", "rust", "rush", "ruse", "rube", "ruby"] === ./William James/word_chain.rb: 0.687 seconds === === Timing ./William James/word_chain2.rb === duck dusk rusk ruse rube ruby === ./William James/word_chain2.rb: 0.953 seconds === Of course this brings up the whole Benchmark problem, e.g. horndude77's blazingly fast algorithm uses precalculated files that take an hour to build.... see recent 'Performance Ruby' thread. (for me the hardest part was compiling Brian Schroeder's extension on Windows - "your milage may vary") cheers Simon