I think the original poster may be new to coding, in which case, can I
recommend the first couple of chapters of "_Why's Poignant Guide to
Ruby"? People tend to either find it really useful, or hate it, I
think. http://poignantguide.net/ruby/
At the risk of adding even more meat to the pot:
def numerologise(name)
# turn name into an array of integers
arr = name.upcase.unpack("C*").map{|x| (x - ?A) % 9 + 1}
# keep going until there's only one integer in the array
until (arr.size == 1)
# add up all the integers
tot = arr.inject{|c,x| c + x}
# split the digits to make a new array
arr = tot.to_s.split(//).map{|y| y.to_i}
end
return arr
end
puts numerologise("ruby")
(This is basically Sebastian's original answer, although perhaps it's
easier to understand like this.)
On Thu, Jul 31, 2008 at 1:45 PM, David A. Black <dblack / rubypal.com> wrote:
> Hi --
>
> On Thu, 31 Jul 2008, jazzez ravi wrote:
>
>> Web Reservoir wrote:
>>>
>>> Hi,
>>>
>>> I am planning to implement a Numerology code like this.
>>>
>>> Every alphabet in Numerology is given a number like this...
>>>
>>> --------------------------------------------------------------
>>> 1 2 3 4 5 6 7 8 9
>>>
>>> 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
>>> ----------------------------------------------------------
>>>
>>> Or you can even say that
>>>
>>> 1 = A, J, S
>>> 2 = B, K, T
>>> 3 = C, L, U
>>> 4 = D, M, V
>>> 5 = E, N, W
>>> 6 = F, O, X
>>> 7 = G, P, Y
>>> 8 = H, Q, Z
>>> 9 = I, R
>>>
>>> Now when you type RUBY you should get the total as 9+3+2+7 = (21) 2+1 =
>>> 3
>>> where R = 9, U = 3, B = 2 and y = 7 ( as shown above )
>>>
>>> Have a look at the working example here...
>>>
>>> http://www.numerology.googlepages.com/Numerology_nameNumberdetails.htm
>>>
>>> and
>>>
>>> http://www.numerology.googlepages.com/Numerology_nameNumber.htm
>>>
>>> I would like to code this in Ruby. Pl. help me with this code.
>>>
>>
>> Hi Reservoir,
>>
>> i think this code satisfy your need...
>>
>>
>> class Reservoir
>> def main
>>
>> a="mahalingam" # your name
>>
>> val={"a"=>1,"j"=>1,"s"=>1,
>> "b"=>2,"k"=>2,"t"=>2,
>> "c"=>3,"l"=>3,"u"=>3,
>> "d"=>4,"m"=>4,"v"=>4,
>> "e"=>5,"n"=>5,"w"=>5,
>> "f"=>6,"o"=>6,"x"=>6,
>> "g"=>7,"p"=>7,"y"=>7,
>> "h"=>8,"q"=>8,"z"=>8,
>> "i"=>9,"r"=>9}
>>
>>
>> num=[]
>> i=0
>> while i < a.length do
>> num << val[a[i,1]]
>> i+=1
>> end
>> mind(num)
>> end
>>
>>
>> def mind(num)
>> no=[]
>> no=num
>> j=0
>>
>> final=0
>> while j < no.length
>> final +=num[j].to_i
>> j+=1
>> end
>> output= final.to_s
>> if output.length !=1
>> output2=output.split(//)
>> mind(output2)
>> else
>> puts final
>> end
>> end
>> end
>>
>> res=Reservoir.new
>> res.main
>
> You're working waaaaay too hard :-) Let Ruby do the heavy lifting.
>
> class Reservoir
>
> # This technique is a little odd at first, but it's actually a
> # pretty common idiom.
> MAP = Hash[*('a'..'z').zip(1..26).flatten]
>
> # Convert "abc" or 123 to [1,2,3]
> # This is fairly terse code, but it's just a utility method that
> # will be called from higher-level logic.
> def numbers_from(obj)
> obj.to_s.split(//).map {|letter| MAP[letter] || letter.to_i }
> end
>
> # The classic Ruby way to add up an array. See Array#sum in
> # ActiveSupport too.
> def add_up(numbers)
> numbers.inject(0) {|acc,n| acc + n }
> end
>
> def numberize(object)
> final = add_up(numbers_from(object))
> if final > 9
> numberize(final)
> else
> final
> end
> end
> end
>
> r = Reservoir.new
> p r.numberize("david")
> p r.numberize(1234) # extra functionality :-)
>
> The inclusion of numberizing numbers may or may not be desired, but if
> not, it should be pretty easy to get rid of.
>
>
> David
>
> --
> Rails training from David A. Black and Ruby Power and Light:
> * Advancing With Rails August 18-21 Edison, NJ
> * Co-taught by D.A. Black and Erik Kastner
> See http://www.rubypal.com for details and updates!
>
>
--
Me, I imagine places that I have never seen / The colored lights in
fountains, blue and green / And I imagine places that I will never go
/ Behind these clouds that hang here dark and low
But it's there when I'm holding you / There when I'm sleeping too /
There when there's nothing left of me / Hanging out behind the
burned-out factories / Out of reach but leading me / Into the
beautiful sea