概要
書籍 Build Awesome Command-Line Applications in Ruby2
章
Play Well with Others
詳細
ユーザーが対象データを抽出しやすいように、フラグやステータスを表す内容を
レコードに含めることも有効。
サンプル仕様
引数1 〜 引数2 の範囲数値を配列化し、中身をシャッフルします。
シャッフルした配列に対して、順に2要素ずつ合計を出力します。
合計値が 引数3 を越えたら "OVER", 越えていなければ "UNDER"を出力します。
表示フォーマットは1計算1行、カンマ区切りで「計算全体」「加算元1」「加算元2」「加算結果」「OVER/UNDER フラグ」です。
サンプルコード
from = ARGV.first.to_i to = ARGV[-2].to_i limit = ARGV.last.to_i [*from..to].shuffle.each_slice(2) do |one, other| sum = one + other over_under = (sum >= limit) ? "OVER" : "UNDER" puts "#{one} + #{other} = #{sum},#{one},#{other},#{sum},#{over_under}" end
サンプル出力
1-20の範囲かつ合計を10でチェック
$ ruby good.rb 1 20 10 5 + 12 = 17,5,12,17,OVER 1 + 8 = 9,1,8,9,UNDER 3 + 16 = 19,3,16,19,OVER 20 + 9 = 29,20,9,29,OVER 14 + 15 = 29,14,15,29,OVER 10 + 17 = 27,10,17,27,OVER 7 + 2 = 9,7,2,9,UNDER 6 + 11 = 17,6,11,17,OVER 19 + 13 = 32,19,13,32,OVER 4 + 18 = 22,4,18,22,OVER
1-20の範囲かつ合計を20でチェックし、結果を OVER でフィルタ
$ ruby good.rb 1 20 20 | grep ",OVER" 18 + 5 = 23,18,5,23,OVER 8 + 16 = 24,8,16,24,OVER 17 + 14 = 31,17,14,31,OVER 19 + 12 = 31,19,12,31,OVER 6 + 20 = 26,6,20,26,OVER 7 + 15 = 22,7,15,22,OVER
1-20の範囲かつ合計を20でチェックし、結果を UNDER でフィルタ
$ ruby good.rb 1 20 20 | grep ",UNDER" 8 + 3 = 11,8,3,11,UNDER 13 + 4 = 17,13,4,17,UNDER 7 + 12 = 19,7,12,19,UNDER 6 + 1 = 7,6,1,7,UNDER