$0
小数がいくつか与えられたら、それらがどんな共通する分母の、分数であったかの推定を
するための数値計算プログラム。切り捨てと切り上げも仮定できるが、未指定なら四捨五入を仮定。
使用例:
$0 -vm 50 0.25 0.33
# 四捨五入して、0.25 と 0.33 になるような分数で同じ分母を持つものを見つける。
# 出力される各行の最終行が 2 となるものを探せば良い。
オブション:
-v : 分子を知るべく、その半区間を表示。(verbose)
-m num : 分母の数をどこまで大きくするか。未指定なら13。"Inf" も指定可能。(max-denominator)
-c : 入力された数は、切り上げられた数であるとみなす。(ceil)
-f : 入力された数は、切り捨てられた数であると見なす。(floor)
-% : 入力された数はパーセンテージ表記(百分率)であると見なし、内部的には100分の1倍される。
-q : -v において色をつけない。(quiet)
-i : 数をコマンド引数でなくて、標準入力または引数で指定されるファイルの中から読み取る。
ここで言う半区間とは、数学的な区間[x,y)または(x,y]のような、それぞれ、x以上y未満、x超y以下のような数全体を表している。
開発メモ:
* 引数に並べた数の小数点以下の桁数で、出力すべき最大数は決まるので、自動的に決めても良い。
* 最大何個をとりだすかを指定したい。 -g か何かで。
* -m のオプションで、既に見つけた数の倍数は表示しないようにしたい。
* ただ1個の小数点以下8桁の数が渡された場合の良いアルゴリズムを考えたい。
* 使用時に使い易いように、さらにオプションを整理しよう。