class Enygma::KeyGen

Public Class Methods

get_key(differences) click to toggle source
# File lib/enygma/helpers/key_gen.rb, line 5
def self.get_key(differences)
  tracker = []
  differences.each_with_index do |value, index|
    break if index == differences.size - 1
    value1 = value
    value2 = differences[index + 1]

    compare(index, value1, value2, tracker, differences)
  end

  "%d%d%d%d" % [
    differences[0],
    differences[1][-1],
    differences[2][-1],
    differences[3][-1]
  ]
end

Private Class Methods

compare(index, value1, value2, tracker, differences) click to toggle source
# File lib/enygma/helpers/key_gen.rb, line 24
def self.compare(index, value1, value2, tracker, differences)
  until value1.to_i >= 100 || tracker[index]
    until value2.to_i >= 100 || tracker[index]
      if value1[1] == value2[0]
        differences[index] = value1
        differences[index + 1] = value2
        tracker[index] = true
      else
        value2 = (value2.to_i + Enygma::CHARACTER_MAP.size).to_s
      end
    end

    value2 = differences[index + 1]
    value1 = (value1.to_i + Enygma::CHARACTER_MAP.size).to_s
  end
end