From: "Mehr, Assaph (Assaph)" Date: 2004-09-28T09:29:50+09:00 Subject: Re: {newb} Each statements >ven.rb:27:in `encrypt': undefined method `-' for "a":String (NoMethodError) > from ven.rb:27:in `map' > from ven.rb:27:in `encrypt' > from ven.rb:38 >still > >############33here is my code complete its some cipher > >def decrypt(data) > ndata=data.clone > srand(5000) > a = ndata.size-1 # control loop > while a>-1 > temp=ndata[a] > temp-=rand(10) > temp= 26-((temp.abs)%26) if temp<0 > temp= temp%26 if temp>-1 > ndata[a]=temp+97 > > a-=1 > > end > return ndata > >end > >def encrypt(data) > ndata=data.dup > a = ndata.size-1 > srand(5000) > ndata = ndata.split(//).map{ |c| ((c-97)+rand(10))%26 }.join At this point 'c' is a string: split(//) returns an array of strings. String does not have a '-' method, so you should first convert to integer thus: ndata = ndata.split(//).map{ |c| ((c.to_i-97)+rand(10))%26 }.join And possibly convert back into chars: ndata = ndata.split(//).map{ |c| (((c.to_i-97)+rand(10))%26).chr }.join > > #end # this code down here works but its to messy > # while a>-1 > # ndata[a]= ((ndata[a]-97)+rand(10))%26 > # a-=1 > #end > return ndata >end >it=String.new("abcdefghijklmnop") > >print decrypt(encrypt(it)) >################### >and i get the error above with the new added code. Sorry to be such a pain. >Becker >