Caesar.rb 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README.markdown +4 -0
  2. data/lib/caesar.rb +22 -0
  3. metadata +47 -0
@@ -0,0 +1,4 @@
1
+ A simple implementation of the Caesar cipher in 22 lines of Ruby.
2
+
3
+ puts Ceasar.encipher(72,"HELLO WORLD! THIS IS AN ENCRYPTED MESSAGE.") => "BYFFI QILFX! NBCM CM UH YHWSJNYX GYMMUAY."
4
+ puts Ceasar.decipher(72,"BYFFI QILFX! NBCM CM UH YHWSJNYX GYMMUAY.") => "HELLO WORLD! THIS IS AN ENCRYPTED MESSAGE."
@@ -0,0 +1,22 @@
1
+ class Caesar
2
+ def self.encipher(shift, message)
3
+ apply_algorithm(:encipher, shift, message)
4
+ end
5
+ def self.decipher(shift, message)
6
+ apply_algorithm(:decipher, shift, message)
7
+ end
8
+
9
+ private
10
+
11
+ def self.apply_algorithm(direction, shift, message)
12
+ letters = %w{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}
13
+ shift = direction == :encipher ? shift : -shift
14
+ message.upcase.split(//).map do |letter|
15
+ if letters.include?(letter)
16
+ letters.rotate(shift)[letters.index(letter)]
17
+ else
18
+ letter
19
+ end
20
+ end.join
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: Caesar.rb
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eric Rafaloff
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-30 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: A simple implementation of the Caesar Cipher in 22 lines of Ruby.
15
+ email:
16
+ - hello@ericrafaloff.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/caesar.rb
22
+ - README.markdown
23
+ homepage: http://github.com/ericr/caesar.rb
24
+ licenses: []
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ none: false
31
+ requirements:
32
+ - - ! '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ none: false
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 1.8.10
44
+ signing_key:
45
+ specification_version: 3
46
+ summary: A simple implementation of the Caesar Cipher in 22 lines of Ruby.
47
+ test_files: []