From: "Ball, Donald A Jr (Library)" Date: 2007-04-23T03:11:35+09:00 Subject: Re: [QUIZ] Morse Code (#121) ------_=_NextPart_001_01C78509.AEAF1E16 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Below is my first solution to this quiz. http://pastie.caboo.se/55736 - donald # Ruby Quiz 121 # Donald A. Ball Jr. # Version 1.0 class Morse CODES =3D { :A =3D> '.-', :N =3D> '-.', :B =3D> '-...', :O =3D> '---', :C =3D> '-.-.', :P =3D> '.--.', :D =3D> '-..', :Q =3D> '--.-', :E =3D> '.', :R =3D> '.-.', :F =3D> '..-.', :S =3D> '...', :G =3D> '--.', :T =3D> '-', :H =3D> '....', :U =3D> '..-', :I =3D> '..', :V =3D> '...-', :J =3D> '.---', :W =3D> '.--', :K =3D> '-.-', :X =3D> '-..-', :L =3D> '.-..', :Y =3D> '-.--', :M =3D> '--', :Z =3D> '--..' } LETTERS =3D CODES.invert def self.translate(cipher) results =3D [] LETTERS.each_pair do |code, letter| next unless cipher.slice(0, code.length) =3D=3D code if cipher.length =3D=3D code.length results << letter.to_s else translate(cipher.slice(code.length, cipher.length)).each do = |result| results << (letter.to_s << result) end end end results end end Morse.translate(ARGV[0]).each{|word| puts word} ------_=_NextPart_001_01C78509.AEAF1E16--