algorytm.org

Implementacja w Ruby



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Szyfr z dowolnym przesunięciem - Implementacja w Ruby
Ocena użytkownikóww: *****  / 0
SłabyŚwietny
Nadesłany przez Nikodem Solarz, 17 stycznia 2013 22:37
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

przesun.rb:
#======================================================
#**Implementacja algorytmu szyfru z dowolnym przesunięciem
#**Narzew
#**15.01.2013
#**dla portalu algorytm.org
#**Implementacja nie obejmuje cyfr i innych znaków.
#**Obsługuje tylko 26 znaków angielskich
#**Obsługuje dowolne przesunięcie
#**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
#**y => przesunięcie
#**Odszyfrowanie => przesunięcie o -y
#======================================================

$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 przesun(x,y)
		result = ''
		x = x.upcase
		x.each_char{|z|
			result << $alfabet[(zadany_element($alfabet,z)+y)%26]
		}
		return result
end
Dodaj komentarz