[#408634] How do I make lots of classes aware of each other? — "Andrew S." <lists@...>

I'm apparently missing something fundamental in my knowledge of classes

10 messages 2013/07/02

[#408712] Ruby web service with REST support — "Shubhada S." <lists@...>

Hi All,

17 messages 2013/07/05

[#408812] create variables depending on counter — stefan heinrich <lists@...>

Hi community,

21 messages 2013/07/09

[#408854] execute commands within SMTP email code: send content in variables and not actual variables — dJD col <lists@...>

I am trying to send an email using the code below. I am able to send the

9 messages 2013/07/10

[#409031] tap { break } idiom deserves its own Kernel method? — Andy Lowry <lists@...>

I use this idiom from time to time:

13 messages 2013/07/22

[#409072] Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...>

This is what I want to do.

19 messages 2013/07/23
[#409102] Re: Link To Masses Of External Data In Openoffice? — Tamara Temple <tamouse.lists@...> 2013/07/24

[#409103] Re: Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...> 2013/07/25

tamouse m. wrote in post #1116598:

[#409122] Re: Link To Masses Of External Data In Openoffice? — Tamara Temple <tamouse.lists@...> 2013/07/26

[#409142] Re: Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...> 2013/07/26

tamouse m. wrote in post #1116750:

[#409073] class <=> module — Bráulio Bhavamitra <lists@...>

Hello all,

17 messages 2013/07/23

[#409104] Ruby newbie question on Methods (NoMethoderror) — "Crispian A." <lists@...>

I have recently started learning ruby and so I am writing a small little

10 messages 2013/07/25

[#409170] Working through Ch.10 for learning to program 2.0 (Chris Pine) — JD JD <lists@...>

So, I have been working through this book, and have been doing ok up

33 messages 2013/07/28
[#409195] Re: Working through Ch.10 for learning to program 2.0 (Chris Pine) — Harry Kakueki <list.push@...> 2013/07/29

I tried this and came up with a one-liner that seems to do it. It sorts the

[#409258] WATIR - ScriptError popup on IE - Unable to get rid of! — Graeme Halls <lists@...>

I am new to Ruby & Watir, and I am having a nightmare with IE and Script

11 messages 2013/07/31

Re: Morse Code (#121)

From: "Stan K." <lists@...>
Date: 2013-07-29 15:44:27 UTC
List: ruby-talk #409201
Christian Theil Have wrote in post #237067:
> Hi
>
> I've implemented it using a simple backtracking search algorithm.
>
> My code could probably be a lot more compact, and the first_letters
> function could definitely be
> much faster..
>
>
> class Morse
>   @@alpha = {
>     "a" => ".-",
>     "b" => "-...",
>     "c" => "-.-.",
>     "d" => "-..",
>     "e" => ".",
>     "f" => "..-.",
>     "g" => "--.",
>     "h" => "....",
>     "i" => "..",
>     "j" => ".---",
>     "k" => "-.-",
>     "l" => ".-..",
>     "m" => "--",
>     "o" => "---",
>     "p" => ".--.",
>     "q" => "--.-",
>     "r" => ".-.",
>     "s" => "...",
>     "t" => "-",
>     "u" => "..-",
>     "v" => "...-",
>     "w" => ".--",
>     "x" => "-..-",
>     "y" => "-.--",
>     "z" => "--.."
>   }
>
>   def initialize
>     # Reverse index the array
>     @rev = {}
>     @@alpha.each { |k,v| @rev[v] = k.to_s }
>   end
>
>   # Returns all letters matching the morse str at this pos
>   def first_letters(morse, pos)
>     letters = []
>     @rev.keys.each { |k|  letters << k unless
> morse[pos..-1].scan(/^#{k.gsub(".","\\.")}.*/).empty? }
>
>     letters
>   end
>
>   # Returns an array of words that matches 'morse' string
>   # It's basically a recursive function with bactracking
>   def morse2words(morse, pos = 0 , seen = "")
>     solutions = []
>     first_letters(morse, pos).each do |l|
>       if morse.length == pos + l.length
>         solutions << "#{seen}#{@rev[l]}"
>       else
>         result = morse2words(morse,(pos+l.length),"#{seen}#{@rev[l]}")
>         solutions += result
>       end
>     end
>
>     solutions
>   end
>
>   # Converts a word to a morse string, used for testing
>   def word2morse(word)
>     morse = ""
>     word.each_byte { |b| morse << @@alpha[b.chr] }
>
>     morse
>   end
> end
>
>
> ######################
> # Test:
>
> def test_word2morse
>   m = Morse.new
>   raise unless  m.word2morse("sofia") == "...---..-....-"
> end
>
> def test_first_letters
>   m = Morse.new
>   raise unless m.first_letters(".", 0) == [ "." ];
>   raise unless m.first_letters("--.--..--.-.", 0) == ["--", "-", "--.",
> "--.-"]
> end
>
> def test_morse2words
>   m = Morse.new
>   sofia = "...---..-....-"
>   solutions = m.morse2words(sofia)
>   solutions.each do |s|
>     if m.word2morse(s) != sofia
>       puts "bad solution: #{s}"
>       puts "yields #{m.word2morse(s)} in morse"
>                         raise
>     end
>   end
> end
>
> test_word2morse
> test_first_letters
> test_morse2words

Thanks, this was useful. You were missing an "n", I fixed it for you:

@@alpha = {
      "a" => ".-",
      "b" => "-...",
      "c" => "-.-.",
      "d" => "-..",
      "e" => ".",
      "f" => "..-.",
      "g" => "--.",
      "h" => "....",
      "i" => "..",
      "j" => ".---",
      "k" => "-.-",
      "l" => ".-..",
      "m" => "--",
      "n" => "-.",
      "o" => "---",
      "p" => ".--.",
      "q" => "--.-",
      "r" => ".-.",
      "s" => "...",
      "t" => "-",
      "u" => "..-",
      "v" => "...-",
      "w" => ".--",
      "x" => "-..-",
      "y" => "-.--",
      "z" => "--.."
    }

-- 
Posted via http://www.ruby-forum.com/.

In This Thread

Prev Next