Nadesłany przez Nikodem Solarz, 17 stycznia 2013 22:33
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
rot13.rb:
#====================================================== #**Implementacja algorytmu szyfru ROT-13 #**Narzew #**15.01.2013 #**dla portalu algorytm.org #**Obsługuje tylko 26 znaków angielskich. #**Implementacja nie obejmuje cyfr i innych znaków. #**Nie rozróżnia liter dużych i małych #**Algorytm ostro zmodyfikowany :) #====================================================== require 'jcode' # Usuń jeśli używasz Ruby 1.9 #====================================================== #**Wymagana metoda (Przerobiony zadany_element) #====================================================== def zadany_element(x,y) count = 0 x.each{|z| return count if y == z count += 1 } return 0 # 0 zamiast false, by zapobiec błędom end #====================================================== #**Metoda właściwa #====================================================== #====================================================== #**x => ciąg #**rot13 => dla niezakodowanego koduje, #** dla zakodowanego odkoduje #====================================================== $alfabet = ['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'] def rot13(x) result = '' x = x.upcase x.each_char{|z| result << $alfabet[(zadany_element($alfabet,z)+13)%26] } return result end