This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

challenge #88 solution

By: a guest on Aug 25th, 2012  |  syntax: Ruby  |  size: 2.74 KB  |  views: 29  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. def letterconv(letter)
  2.         larr = ["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"]
  3.         narr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]
  4.         i = 0
  5.         while i < larr.length
  6.                 if letter == larr[i]
  7.                         return narr[i]
  8.                 end
  9.                 i += 1
  10.         end
  11. end
  12.  
  13. def gen_key_string(key,istr)
  14.         istr = istr.gsub(" ",'')
  15.         key = key.gsub(" ",'')
  16.         istr = istr.upcase
  17.         key = key.upcase
  18.         karr = key.split(//)
  19.         nkarr = []
  20.         p = 0
  21.         while nkarr.length < istr.length
  22.                 p = 0
  23.                 while p < karr.length
  24.                         if nkarr.length == istr.length
  25.                                 break
  26.                         else
  27.                                 nkarr << karr[p]
  28.                                 p += 1
  29.                         end
  30.                 end
  31.         end
  32.         return nkarr
  33. end
  34.  
  35. def strconv(strarr)
  36.         narr = []
  37.         i = 0
  38.         while i < strarr.length
  39.                 narr << letterconv(strarr[i])
  40.                 i += 1
  41.         end
  42.         return narr    
  43. end
  44.  
  45. def stradd(strarr1,strarr2)
  46.         i = 0
  47.         narr = []
  48.         while i < strarr1.length
  49.                 narr << strarr1[i] + strarr2[i]
  50.                 i += 1
  51.         end
  52.         return narr
  53. end
  54.  
  55. def strsubt(strarr1,strarr2)
  56.         i = 0
  57.         narr = []
  58.         while i < strarr1.length
  59.                 narr << strarr1[i].to_i - strarr2[i].to_i
  60.                 i += 1
  61.         end
  62.         return narr
  63. end
  64.  
  65. def strshort(strarr)
  66.         i = 0
  67.         narr = []
  68.         while i < strarr.length
  69.                 bit = strarr[i]
  70.                 if bit > 26
  71.                         bit = bit - 26
  72.                         narr << bit
  73.                 else
  74.                         narr << bit
  75.                 end
  76.                 i += 1
  77.         end
  78.         return narr
  79. end
  80.  
  81. def strshort2(strarr)
  82.         i = 0
  83.         narr = []
  84.         while i < strarr.length
  85.                 bit = strarr[i]
  86.                 if bit < 0
  87.                         narr << 26 + bit
  88.                 else
  89.                         narr << bit
  90.                 end
  91.                 i += 1
  92.         end
  93.         return narr
  94. end
  95.  
  96. def numconv(num)
  97.         larr = ["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"]
  98.         narr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]
  99.         i = 0
  100.         while i < narr.length
  101.                 if num == narr[i]
  102.                         return larr[i]
  103.                 end
  104.                 i += 1
  105.         end
  106. end
  107.  
  108. def strconv2(strarr)
  109.         narr = []
  110.         i = 0
  111.         while i < strarr.length
  112.                 narr << numconv(strarr[i])
  113.                 i += 1
  114.         end
  115.         return narr    
  116. end
  117.  
  118. def encrypt(str,key)
  119.         osstr = str.upcase.gsub(" ","").split(//)
  120.         narr = gen_key_string(key,str)
  121.         nosstr =  strconv(osstr)
  122.         nnarr = strconv(narr)
  123.         narr3 = stradd(nosstr,nnarr)
  124.         narr4 = strshort(narr3)
  125.         narr5 = strconv2(narr4)
  126.         return narr5.join()
  127. end
  128.  
  129. def decrypt(encrypted_string,key)
  130.         variable_arr = encrypted_string.upcase.gsub(" ","").split(//)
  131.         print variable_arr
  132.         puts
  133.         variable_key = gen_key_string(key,encrypted_string)
  134.         variable_arr = strconv(variable_arr)
  135.         variable_key = strconv(variable_key)
  136.         new_number_array = strsubt(variable_arr,variable_key)
  137.         new_number_array = strshort2(new_number_array)
  138.         output_array = strconv2(new_number_array)
  139.         return output_array.join
  140. end
  141.  
  142. ostr = "this is a complex string"
  143.  
  144. key = "hello world"
  145.  
  146. ostr2 = encrypt(ostr,key)
  147. puts decrypt(ostr2,key)
clone this paste RAW Paste Data