fugafuga.write

日々のログ

すごいH本 part29

モジュールを使う。の続き

Data.Charを使ってシーザー暗号でメッセージを暗号化し、他人に読めないようにする関数を実装する。

シーザー暗号は、各文字をアルファベット上で一定の数だけシフトするという暗号化方法。

以下の関数を使う

Data.Char.ord

文字を対応する数値に変換する

*Main Lib> Data.Char.ord 'a'
97

Data.Char.chr

ordの逆のことをする

*Main Lib> Data.Char.chr 97
'a'

実装する

import Data.Char

encode :: Int -> String -> String
encode offset msg = map (\c -> chr $ ord c + offset) msg

実行結果

*Main> encode 2 "google"
"iqqing"

複合する関数を実装する

decode :: Int -> String -> String
decode shift msg = encode (negate shift) msg

実行結果

*Main> decode 2 "iqqing"
"google"

所感

シーザーサラダ

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

  • 作者: MiranLipovaca
  • 出版社/メーカー: オーム社
  • 発売日: 2017/07/14
  • メディア: Kindle版
  • 購入: 4人 クリック: 9回
  • この商品を含むブログを見る