Diary

Diary

日々学んだことをアウトプットする場として初めてみました

ターミナル上で分数計算を行う(ruby ワンライナー)

1/3 + 1/2といった分数計算を、ruby を使ってターミナル上で実行してみたいと思います。

ruby ワンライナーの簡単な使い方の説明と、実際に適応させるところまで紹介いたします。

[目次]

ruby ワンライナー

rubyワンライナーで使うには、次のように記述します。

# ワンライナーで実行する
$ ruby -e 'p "hoge"'
"hoge"

# 標準入力を受け取る(変数 $_)
$ seq 3 | ruby -ne 'puts $_'
1
2
3

# 横並びの入力を配列として受け取る(配列 F)
$ echo a b c | ruby -anle 'puts $F'
a
b
c

基本的なオプション

オプション 意味
-e 次の引数に指定された ruby のコードを実行する
-n ファイル・標準入力の内容を1行ずつ読む
-a 1行の内容を空白区切りとして F という配列に入れる
-l awk のように入力からの改行を除去して、出力の際に改行を入れる

ruby の分数クラスを使う

Ruby の Rational クラスを用いてみようと思います。

今回は分数表記の横に r をつけることで Rational クラスと解釈させます。

# rational クラスを用いる
$ ruby -e 'puts 1/3r + 1/2r'
5/6   # 約分もちゃんとされている

標準入力をうまく ruby に渡す

sed を使って、puts 1/3r + 1/2rという文字列を作ってあげます

$ echo 1/2 + 1/3 | sed -E 's@/.@&r@g;s/^/puts /' | ruby
5/6

おわりに

ruby はずるくない?と思われた方、申し訳ありません。

他の方法を知ってる方はぜひ教えていただけるとありがたいです。