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