Algorithm
memo
min max を含む 、切のいい範囲を得、10点程度に分割。
min=maxの場合、例外処理、min=max=0の場合も特殊処理
min,max それぞれの数字の絶対数の次数を計算して、大体の範囲を得る。(微調整は後から)
それぞれ0の場合は、例外処理で、範囲の最大(MAX)、最小値(MIN)を0とする。
次数計算で絶対値を取るので、min,maxが正負の場合で処理を分ける
MIN.MAXはそれぞれmin,maxを絶対値で超える最小の10
n
を見つける。
また、min,max から MINからMAXを10点分割できる1*10
n
2*10
n
5*10
n
のいづれかの増分値(inc)を見つける
MAX,MINをチューニングするに当たり、場合わけを行う。
max,minがともに正であれば、minを0にする判断もあり。(ex: if(max/2 > min) ...)
max,minの符合が異なれば、MAX、MINはともにチューニング
max,minがともに負であれば、manを0にする判断もあり。(ex: if(min/2 < max) ...)
またmin,maxそれぞれの絶対値がincより少ない場合も対処必要。
MAXのチューニングとして、MAXとmaxの間で、maxより大きくかつ、MAXより最大減incの整数倍を除いたもの
MINのチューニングとして、MINとminの間で、minより小さくかつ、MINより最大減incの整数倍を加えたもの
MAX,MIN,inc より 分割数(div)を最終決定する
最終解は
for(int i=0; i <div+1 ; ++) min + inc * i