Sha256: 3094d2927b042653a47bca52f1161bd88fa1b0113d18d46704f105470f3f33a3

Contents?: true

Size: 655 Bytes

Versions: 396

Compression:

Stored size: 655 Bytes

Contents

module Atbash
  MAPPING = (alp = ('a'..'z').to_a).zip(alp.reverse).to_h
  extend self

  def encode(message : String) : String
    message = sanitize_message(message)
    enarr = map_chars(message)
    add_spaces(enarr)
  end

  private def sanitize_message(message : String) : String
    message.downcase.gsub(/[^a-z0-9]/, "")
  end

  private def map_chars(message : String) : Array(Char)
    message.chars.map { |c| MAPPING[c]? || c }
  end

  private def add_spaces(chrs : Array(Char)) : String
    encoded_string = ""
    chrs.each_with_index do |c, i|
      encoded_string += ((i % 5 == 0 ? " " : "") + c)
    end
    encoded_string.strip
  end
end

Version data entries

396 entries across 396 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.179 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.178 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.177 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.176 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.175 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.174 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.173 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.172 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.171 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.170 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.169 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.167 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.166 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.165 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.164 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.163 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.162 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.161 tracks/crystal/exercises/atbash-cipher/src/example.cr
trackler-2.2.1.160 tracks/crystal/exercises/atbash-cipher/src/example.cr