tracks/ruby/exercises/crypto-square/.meta/solutions/crypto_square.rb in trackler-2.2.1.49 vs tracks/ruby/exercises/crypto-square/.meta/solutions/crypto_square.rb in trackler-2.2.1.50
- old
+ new
@@ -2,38 +2,43 @@
def initialize(plaintext)
@plaintext = plaintext
end
+ def ciphertext
+ transposed.join(' ')
+ end
+
+ private
+
def normalize_plaintext
@normalized ||= @plaintext.downcase.gsub(/\W/, '')
end
def plaintext_segments
- normalize_plaintext.chars.
- each_slice(size).
- map{ |s| s.join('') }.
- to_a
+ if size > 0
+ normalize_plaintext.chars.
+ each_slice(size).
+ map{ |s| s.join('') }.
+ to_a
+ else
+ []
+ end
end
def size
Math.sqrt(normalize_plaintext.length).ceil
end
- def ciphertext
- transposed.join('')
- end
-
- def normalize_ciphertext
- transposed.join(' ')
- end
-
- private
-
def transposed
chunk_size = size
chunks = plaintext_segments.map do |s|
- Array.new(chunk_size) { |i| s[i] or '' }
+ Array.new(chunk_size) { |i| s[i] or ' ' }
end
chunks.transpose.map{ |s| s.join('') }
end
+
+end
+
+module BookKeeping
+ VERSION = 1
end