From: Martin Boese Date: 2008-07-14T15:49:41+09:00 Subject: Re: [QUIZ] Symbolify (#169) My previous post didn't work for i=0, this one does: def symbolify(i) "??-??"+"--?)-?("*i end On Sunday 13 July 2008 18:18:12 Martin Boese wrote: > My solution: > > def symbolify(i) > ("?)-?(--"*i)[0..-3] > end > > However, at about 3300 I get a SystemStackError and if I start at like 5000 > I segfault the ruby interpreter (1.8.6) ;-) > > martin > > On Friday 11 July 2008 16:17:15 Matthew Moss wrote: > > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- > > > > The three rules of Ruby Quiz 2: > > > > 1. Please do not post any solutions or spoiler discussion for this > > quiz until 48 hours have passed from the time on this message. > > > > 2. Support Ruby Quiz 2 by submitting ideas as often as you can! (A > > permanent, new website is in the works for Ruby Quiz 2. Until then, > > please visit the temporary website at > > > > . > > > > 3. Enjoy! > > Suggestion: A [QUIZ] in the subject of emails about the problem > > helps everyone on Ruby Talk follow the discussion. Please reply to > > the original quiz message, if you can. > > > > -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- > > > > ## Symbolify (#169) > > > > Your task this week is to count. Yup, that's it. > > > > Oh, by the way... You may only use the characters `?`, `*`, `(`, `)` and > > `-`. > > > > Specifically, define a function `symbolify` that accepts an integer > > and returns a string composed of only the five characters shown above. > > The string, when evaluated, will equal the original number passed in. > > > > That is, the following test code should raise no exceptions: > > > > 1000.times do |i| > > s = symbolify(i) > > raise "Not a string!" unless s.is_a? String > > raise "Invalid chars!" unless s.delete("?*()-").empty? > > > > x = eval(s) > > raise "Decode failed!" unless i == x > > end > > > > > > There are at least a few different approaches that come to mind, so > > don't expect everyone to have the same output. Well, not before the > > output is passed through `eval`, that is. > > > > I am not requiring that you produce the shortest string (though you > > are welcome to attempt such a thing). The only thing I _do_ ask is > > that you not produce megabytes of data to represent a simple integer. > > > > P.S. Cheating is encouraged (except that you may not write code > > outside of `symbolify`).