------ art_1684_4926274.1125395212538 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline I updated my solution: - No longer outputs solution in reverse order - Can calculate a chain along multiple words - Nicer commandline parsing an example follows: bschroed@black:~/svn/projekte/wordchain$ time ruby wordchain.rb -d /usr/share/dict/british-english ruby duck send self Loading database Searching connection between ruby and duck ruby rubs dubs duns dunk duck Searching connection between duck and send duck fuck funk fund fend send Searching connection between send and self send wend weld well sell self real 0m3.796s user 0m3.356s sys 0m0.439s regards, Brian -- http://ruby.brian-schroeder.de/ Stringed instrument chords: http://chordlist.brian-schroeder.de/ ------ art_1684_4926274.1125395212538 Content-Type: application/x-ruby; name="wordchain.rb" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="wordchain.rb" IyEvdXNyL2Jpbi9ydWJ5IC13IC1LdQoKIyBCdWlsZCBhIGNoYWluIG9mIHdvcmRzLCB3aGVyZSBl YWNoIG5leHQgd29yZCBpbiB0aGUgY2hhaW4gY2hhbmdlcyBvbmx5IG9uZSBsZXR0ZXIgYWdhaW5z dCB0aGUgZm9ybWVyLgojCiMgV2h5IGlzIG15IHNvbHV0aW9uIGZhc3Q6CiMgMSkgSSB1c2UgdGhl IEEqIGFsZ29yaXRobQojIDIpIEkgdXNlIGEgcmVhbCBwcmlvcml0eSBxdWV1ZSBpbXBsZW1lbnRl ZCBpbiBDIHdpdGg6CiMgICAgICBhbW9ydGl6ZWQgTygxKSBpbnNlcnQsIGRlY3JlYXNlX3ByaW9y aXR5CiMgICAgICBhbW9ydGl6ZWQgTyhsb2cgbikgZGVsZXRlX21pbiAgCiMKIyBJIGNhbGN1bGF0 ZSB0aGUgbmVpZ2hib3VycyBsYXppbHkgd2hlbiBuZWVkZWQuCiMgSSB1c2UgYSBuaWZ0eSBwYXJ0 aXRpb25pbmcgb2YgdGhlIHdvcmRzIHRoYXQgbWFrZXMgbmVpZ2hib3VyIGNhbGN1bGF0aW9uCiMg YSB1bmlvbiBvZiBvbmx5IHdvcmQtbGVuZ3RoIHNldC4KCiMgVE9ETzogUmVmYWt0b3IgU2VhcmNo IEFsZ29yaXRobXMgaW50byBvd24gdW5pdApyZXF1aXJlICdwcmlvcml0eV9xdWV1ZScKcmVxdWly ZSAnc2V0JwoKIyMjIFRIRSBXT1JLRVIgIyMjCgojIFRoZSB3b3JkLWdyYXBoCmNsYXNzIFdvcmRO ZXQKCiAgIyBMb2FkIHRoZSB3b3JkcyBwYXJ0aXRpb25lZCBieSBsZW5ndGguIE5laWdoYm91ciBj YWxjdWxhdGlvbiBpcyBkb25lIG9uIGRlbWFuZC4KICBkZWYgaW5pdGlhbGl6ZSgqd29yZHMpCiAg ICBAd29yZHNfYnlfbGVuZ3RoID0gSGFzaC5uZXcgeyB8IGgsIGsgfCBoW2tdID0gU2V0Lm5ldyB9 CiAgICBAc2ltaWxhcl93b3JkcyA9IEhhc2gubmV3IHsgfCBoLCBrIHwgaFtrXSA9IFNldC5uZXcg fQogICAgQHNpbWlsYXJfd29yZHNfYnVpbGQgPSBIYXNoLm5ldwogICAgQG5laWdoYm91cnMgPSBI YXNoLm5ldwogICAgd29yZHMuZmxhdHRlbi5lYWNoIGRvIHwgd29yZCB8ICAgICAgCiAgICAgIG5l eHQgaWYgL1stJz8hK1wvXy46LF0vID1+IHdvcmQKICAgICAgQHdvcmRzX2J5X2xlbmd0aFt3b3Jk Lmxlbmd0aF0gPDwgd29yZAogICAgZW5kCiAgZW5kCgogICMgTG9hZCBkaWN0aW9uYXJ5IGludG8g d29yZGdyYXBoCiAgZGVmIHNlbGYubG9hZChmaWxlKQogICAgd29yZHMgPSBGaWxlLnJlYWQoZmls ZSkuc3BsaXQoJC8pCiAgICB3b3Jkcy5lYWNoIGRvIHwgdyB8IHcuZG93bmNhc2UhIGVuZAogICAg c2VsZi5uZXcoIHdvcmRzICkKICBlbmQKCiAgIyBDYWxjdWxhdGUgdGhlIG5laWdoYm91cnMuIFRo aXMgbGF6aWx5IGNhbGN1bGF0ZXMgbmVpZ2hib3VyaG9vZCBzZXRzIGFuZCBzYXZlcyByZXN1bHRz IGZvciBsYXRlciBsb29rdXAuCiAgZGVmIG5laWdoYm91cnMod29yZCkKICAgIHVubGVzcyBAc2lt aWxhcl93b3Jkc19idWlsZFt3b3JkLmxlbmd0aF0KICAgICAgQHdvcmRzX2J5X2xlbmd0aFt3b3Jk Lmxlbmd0aF0uZWFjaCBkbyB8IHcgfAoJd29yZC5sZW5ndGgudGltZXMgZG8gfCBsIHwKCSAgQHNp bWlsYXJfd29yZHNbd1swLGxdIDw8ICdfJyA8PCB3W2wrMS4uLTFdXSA8PCB3IAoJZW5kCiAgICAg IGVuZAogICAgICBAc2ltaWxhcl93b3Jkc19idWlsZFt3b3JkLmxlbmd0aF0gPSB0cnVlCiAgICBl bmQKCiAgICAjcHV0cyAiU2VhcmNoaW5nIG5laWdoYm91cnMgZm9yICN7d29yZH0iCiAgICBAbmVp Z2hib3Vyc1t3b3JkXSB8fD0gKDAuLi53b3JkLmxlbmd0aCkuaW5qZWN0KFNldC5uZXcpIHsgfCBy LCBsIHwgci5tZXJnZShAc2ltaWxhcl93b3Jkc1t3b3JkWzAsbF0gKyAnXycgKyB3b3JkW2wrMS4u LTFdXSkgfS5kZWxldGUod29yZCkKICBlbmQKCiAgIyBBcHBlbmQgYW4gYWRkaXRpb25hbCB3b3Jk IHRvIHRoZSBkaWN0aW9uYXJ5LgogIGRlZiA8PCh3b3JkKQogICAgQHdvcmRzX2J5X2xlbmd0aFt3 b3JkLmxlbmd0aF0gPDwgd29yZAogICAgQHNpbWlsYXJfd29yZHNfYnVpbGRbd29yZC5sZW5ndGhd ID0gZmFsc2UKICAgIEBuZWlnaGJvdXJzW3dvcmRdID0gbmlsCiAgICBzZWxmCiAgZW5kCgogIHBy aXZhdGUKICAjIEhlbHBlciBmdW5jdGlvbiB0byByZXRyaWV2ZSBhIHBhdGggZnJvbSBhIHBhcmVu dC1oYXNoCiAgZGVmIGdhdGhlcl9wYXJlbnRzKG5vZGUsIHBhcmVudHMpCiAgICBpZiBwYXJlbnRz W25vZGVdCiAgICAgIGdhdGhlcl9wYXJlbnRzKHBhcmVudHNbbm9kZV0sIHBhcmVudHMpIDw8IG5v ZGUKICAgIGVsc2UKICAgICAgW25vZGVdCiAgICBlbmQKICBlbmQKCiAgcHVibGljCiAgSU5GSU5J VFkgPSAxLjAvMC4wCgogICMgVGhlIEEqIEFsZ29yaXRobQogIGRlZiBmaW5kX2NoYWluKHdvcmQx LCB3b3JkMikKICAgIHF1ZXVlID0gUHJpb3JpdHlRdWV1ZS5uZXcKICAgIHBhcmVudCAgID0gSGFz aC5uZXcKICAgIGRpc3RhbmNlID0gSGFzaC5uZXd7fGgsa3wgSU5GSU5JVFl9CiAgICBjbG9zZWQg ICA9IEhhc2gubmV3e3xoLGt8IElORklOSVRZfQoKICAgIHF1ZXVlLnB1c2god29yZDEsIDApCiAg ICBkaXN0YW5jZVt3b3JkMV0gPSAwCgogICAgd29yZDJfbGV0dGVycyA9IHdvcmQyLnNwbGl0KC8v KQoKICAgIHdoaWxlIHdvcmQgPSBxdWV1ZS5wb3BfbWluCiAgICAgIGNsb3NlZFt3b3JkXSA9IGRp c3RhbmNlW3dvcmRdCiAgICAgIHNlbGYubmVpZ2hib3Vycyh3b3JkKS5lYWNoIGRvIHwgbjEgfAoJ bjFfZGlzdGFuY2UgPSBkaXN0YW5jZVt3b3JkXSArIDEKCW5leHQgaWYgZGlzdGFuY2VbbjFdIDw9 IG4xX2Rpc3RhbmNlIG9yIGNsb3NlZFtuMV0gPD0gbjFfZGlzdGFuY2UKCWRpc3RhbmNlW24xXSA9 IG4xX2Rpc3RhbmNlCglwYXJlbnRbbjFdID0gd29yZAoJaCA9IHdvcmQyX2xldHRlcnMuemlwKHdv cmQuc3BsaXQoLy8pKS5pbmplY3QoMCkgeyB8IGQsIChhLCBiKSB8IGEgPT0gYiA/IGQgOiBkICsg MSB9CglxdWV1ZS5wdXNoKG4xLCBuMV9kaXN0YW5jZSArIGgpCiAgICAgIGVuZAogICAgZW5kCgog ICAgZ2F0aGVyX3BhcmVudHMod29yZDIsIHBhcmVudCkgaWYgcGFyZW50W3dvcmQyXQogIGVuZApl bmQKCmlmIF9fRklMRV9fID09ICQwCiAgIyMjIE9wdGlvbiBQYXJzaW5nICMjIwogIHJlcXVpcmUg J29wdHBhcnNlJwoKICBjbGFzcyBXb3JkQ2hhaW5PcHRpb25zIDwgT3B0aW9uUGFyc2VyCiAgICBh dHRyX3JlYWRlciA6ZGF0YWJhc2UsIDpoZWxwLCA6d29yZHMKCiAgICBkZWYgaW5pdGlhbGl6ZQog ICAgICBzdXBlcigpCiAgICAgIEBkYXRhYmFzZSA9ICcvdXNyL3NoYXJlL2RpY3Qvd29yZHMnCiAg ICAgIHNlbGYuYmFubmVyID0gIlVzYWdlOiB3b3JkY2hhaW4gWy1kIERJQ1RdIEZST00gVE8gW1RP XzIgLi4uIFRPX05dIgogICAgICBzZWxmLm9uKCItZCBGSUxFTkFNRSIsICItLWRpY3QgRklMRU5B TUUiLCBTdHJpbmcpICB7IHwgdiB8IEBkYXRhYmFzZSAgID0gdiB9CiAgICAgIHNlbGYub24oIi0/ IiwgIi0taGVscCIpICAgICAgICAgICAgICAgICAgIHsgICAgICAgQGhlbHAgICAgICAgPSB0cnVl IH0KICAgIGVuZAoKICAgIGRlZiBwYXJzZSEoKmFyZ3MpCiAgICAgIHN1cGVyCiAgICAgIHJhaXNl ICJOZWVkIGEgZnJvbSBhbmQgYSB0byBhcmd1bWVudCIgdW5sZXNzIEFSR1YubGVuZ3RoID49IDIK ICAgICAgQHdvcmRzID0gKkFSR1YKICAgIGVuZAogIGVuZAoKICBvcHRpb25zID0gV29yZENoYWlu T3B0aW9ucy5uZXcKICBiZWdpbgogICAgb3B0aW9ucy5wYXJzZSEoQVJHVikKICByZXNjdWUgPT4g ZQogICAgcHV0cyAiSW52YWxpZCBDb21tYW5kbGluZSBBcmd1bWVudHMiCiAgICBwdXRzIGUKICAg IHB1dHMgb3B0aW9ucwogICAgZXhpdAogIGVuZAoKICBpZiBvcHRpb25zLmhlbHAgCiAgICBwdXRz IG9wdGlvbnMKICAgIGV4aXQKICBlbmQKCiAgIyMjIE1ha2UgaGltIHdvcmsgIyMjCgogIHdhcm4g IkxvYWRpbmcgZGF0YWJhc2UiCiAgd29yZG5ldCA9IFdvcmROZXQubG9hZChvcHRpb25zLmRhdGFi YXNlKQoKICBvcHRpb25zLndvcmRzWzAuLi0yXS56aXAob3B0aW9ucy53b3Jkc1sxLi4tMV0pIGRv IHwgZnJvbSwgdG8gfAogIHdhcm4gIlNlYXJjaGluZyBjb25uZWN0aW9uIGJldHdlZW4gI3tmcm9t fSBhbmQgI3t0b30iCiAgICBwdXRzIHdvcmRuZXQuZmluZF9jaGFpbihmcm9tLCB0bykKICAgIHB1 dHMKICBlbmQKZW5kCg ------ art_1684_4926274.1125395212538--