ネットで見かけたプログラミング問題をRubyで解いてみました。簡単なテストコードも作ったので、みなさんも是非解いてみてください。
問題
Leet - Wikipediaとは、一部のアルファベットを一定のルールに基づき、数値や記号に変換して表す遊び、仕組みです。ここでは、以下の変換ルールが適用されています。
- a/A = 4
- b/B = 8
- e/E = 3
- l/L = 1
- o/O = 0
- s/S = 5
- t/T = 7
- z/Z = 2
例えば、文字列I am a student
はI 4m 4 57ud3n7
に置き換えられます。
変換対象の文字列:original_string
が与えられるので、それをleet文字列に変換した結果を返す関数leetifyを作成してください。
テストコード
回答
ハッシュテーブルを利用して変換します。
解説
すごい短いので解説することもないですが…
今回は文字列をString#chars
を利用して一文字ずつ配列に分解し、ハッシュテーブルを利用することで変換しています。
ハッシュテーブルに値がない場合は文字列そのままを返す必要があるのですが、これは短絡評価を利用することで短く表記しています。
3項$1を使って書いてみると以下のような感じです。
ちなみに、すべてハッシュテーブルの中に値があることがわかっている場合は以下のように書けます。
この記法はHash#to_proc (Ruby 3.0.0 リファレンスマニュアル)を利用したものです。
おしまい