アルゴリズムの本を読んでいて、文字列をポケベルの数字列で暗号化、またポケベルの数字列から文字列に復号化する、というものが載っていたので自分で、コードを書いてみました。
ハッシュの値からキーを求めるメソッドを使ったことがなかったので、勉強になりました。
濁点、半濁点は全角で別に打つ必要があることも、ポケベルを使ったことのない自分は知りませんでした。
これからも簡単なものでも気が向いたらコードを書いていこうと思っています。
またよりよい方法があったら指摘、お願いします。
簡単なコードですので解説は省略します。
pocketbell.rb
# -*- coding: utf-8 -*-
class PocketBell
def initialize
@table = {
"あ" => "11", "い" => "12", "う" => "13", "え" => "14", "お" => "15",
"か" => "21", "き" => "22", "く" => "23", "け" => "24", "こ" => "25",
"さ" => "31", "し" => "32", "す" => "33", "せ" => "34", "そ" => "35",
"た" => "41", "ち" => "42", "つ" => "43", "て" => "44", "と" => "45",
"な" => "51", "に" => "52", "ぬ" => "53", "ね" => "54", "の" => "55",
"は" => "61", "ひ" => "62", "ふ" => "63", "へ" => "64", "ほ" => "65",
"ま" => "71", "み" => "72", "む" => "73", "め" => "74", "も" => "75",
"や" => "81", "(" => "82", "ゆ" => "83", ")" => "84", "よ" => "85",
"ら" => "91", "り" => "92", "る" => "93", "れ" => "94", "ろ" => "95",
"わ" => "01", "を" => "02", "ん" => "03", "゛" => "04", "゜" => "05",
}
end
def encryption(string)
string.split(//).each do |char|
puts @table[char]
end
end
def decryption(string)
string.scan(/\d\d/).each do |char|
puts @table.key(char)
end
end
end
pocket_bell = PocketBell.new
pocket_bell.encryption("あいうえお")
puts
pocket_bell.decryption("1112131415")
puts
pocket_bell.encryption("あんこ゛う")
# >> 11
# >> 12
# >> 13
# >> 14
# >> 15
# >>
# >> あ
# >> い
# >> う
# >> え
# >> お
# >>
# >> 11
# >> 03
# >> 25
# >> 04
# >> 13