From: Matthew Moss Date: 2008-07-14T05:40:07+09:00 Subject: Re: Symbolify (#169) Here's my non-cheating solution. Base-64 ftw! def symbolify(n) unless $cache $cache = {} $cache[8] = "(?--?*--?--?()" $cache[64] = "(??--?)-?()" end if $cache.has_key?(n) $cache[n] else if n < 0 "-(#{symbolify(-n)})" elsif n < 8 case n when 0 then "??-??" when 1 then "?)-?(" when 2 then "?*-?(" when 3 then "?--?*" when 4 then "?--?)" when 5 then "?--?(" when 6 then "?--?(--?)-?(" when 7 then "?--?)--?--?*" end elsif n < 64 q, r = n.divmod(8) if q.zero? symbolify(rs) else qs = symbolify(q) if r.zero? "(#{qs})*#{$cache[8]}" else rs = symbolify(r) "(#{qs})*#{$cache[8]}--#{rs}" end end else q, r = n.divmod(64) if q.zero? symbolify(rs) else qs = symbolify(q) if r.zero? "(#{qs})*#{$cache[64]}" else rs = symbolify(r) "#{rs}--(#{qs})*#{$cache[64]}" end end end end end