Class: CryptKeeper
- Defined in:
- lib/quiz1/t/solutions/Jim Menard/solitaire_cypher.rb
Instance Method Summary collapse
- #crypto_each(str) ⇒ Object
- #decrypt(str) ⇒ Object
- #encrypt(str) ⇒ Object
-
#initialize(deck) ⇒ CryptKeeper
constructor
A new instance of CryptKeeper.
Constructor Details
#initialize(deck) ⇒ CryptKeeper
Returns a new instance of CryptKeeper.
137 138 139 |
# File 'lib/quiz1/t/solutions/Jim Menard/solitaire_cypher.rb', line 137 def initialize(deck) @keyed_deck = deck end |
Instance Method Details
#crypto_each(str) ⇒ Object
177 178 179 180 |
# File 'lib/quiz1/t/solutions/Jim Menard/solitaire_cypher.rb', line 177 def crypto_each(str) @deck = @keyed_deck.dup str.split(//).each { | c | yield c } end |
#decrypt(str) ⇒ Object
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
# File 'lib/quiz1/t/solutions/Jim Menard/solitaire_cypher.rb', line 141 def decrypt(str) @deck = @keyed_deck.dup answer = "" str.split(//).each { | c | if c == ' ' answer << ' ' next end msg_num = Card.chr_to_value(c) key = @deck.next_keystream diff = msg_num - key diff += 26 if diff < 1 answer << Card.value_to_chr(diff) } answer end |
#encrypt(str) ⇒ Object
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 |
# File 'lib/quiz1/t/solutions/Jim Menard/solitaire_cypher.rb', line 159 def encrypt(str) @deck = @keyed_deck.dup answer = '' str.split(//).each { | c | if c == ' ' answer << ' ' next end msg_num = Card.chr_to_value(c) key = @deck.next_keystream sum = msg_num + key sum -= 26 if sum > 26 answer << Card.value_to_chr(sum) } answer end |