Ruby :: Aufgabe #23

2 Lösungen Lösungen öffentlich

Mit Caesar Chiffre ent- und verschlüsseln

Anfänger - Ruby von Dome - 03.01.2013 um 01:30 Uhr
Schreiben Sie ein Programm, indem Sie mit Hilfe der Caesar Chiffre einen beliebigen Text ent- und verschlüsseln können. Zuvor muss der Text und die Anzahl der Verschiebung angegeben werden. Groß- und Kleinschreibung muss nicht beachtet werden.

Konsolenausgabe:

Geben Sie den Text ein: Beispielwort
Um wie viele Stellen soll verschoben werden: 1
Ergebnis: Cfjtqjfmxpsu

Lösungen:

vote_ok
von pianoplayer (1330 Punkte) - 17.01.2014 um 09:39 Uhr
Quellcode ausblenden Ruby-Code
print "Geben Sie den Text ein: "
text = gets.chomp
print "Um wieviel Stellen soll verschoben werden: "
anzahl = gets.to_i
ergebnis = ""

text.each_byte do |byte|
  if byte <=90 and byte >=65 then
    if byte + anzahl <= 90 then
      ergebnis = ergebnis + (byte+anzahl).chr
    else
      ergebnis = ergebnis + (byte+anzahl-26).chr
	end  
  elsif byte <=122 and byte  >=97 then
    if byte + anzahl <= 122 then
      ergebnis = ergebnis + (byte+anzahl).chr
    else
      ergebnis = ergebnis + (byte+anzahl-26).chr
	end 
  else
    ergebnis = ergebnis + (byte).chr
  end
end

puts "Ergebnis: #{ergebnis}"

vote_ok
von pianoplayer (1330 Punkte) - 17.01.2014 um 09:55 Uhr
Quellcode ausblenden Ruby-Code
#alternative Implementierung mit Modulo-Operator
print "Geben Sie den Text ein: "
text = gets.chomp
print "Um wieviel Stellen soll verschoben werden: "
anzahl = gets.to_i
ergebnis = ""

text.each_byte do |byte|
  if byte <=90 and byte >=65 then
    ergebnis = ergebnis + ((byte+anzahl-65)%26 +65).chr
  elsif byte <=122 and byte  >=97 then
    ergebnis = ergebnis + ((byte+anzahl-97)%26+ 97).chr 
  else
    ergebnis = ergebnis + (byte).chr
  end
end

puts "Ergebnis: #{ergebnis}"