カメヲラボ

主にプログラミングとお勉強全般について書いてます

Steps(1)

規則性を見つけよう

2点間の距離を求めて、その間が何stepで移動可能なのか・・・と考えると少し複雑に見えるが、逆に1step,2step,3step,4stepと増やしていった時に最大どこまで移動できるのかを考えると、規則性は容易に見えてくる。


例えば、
1stepなら当然距離は1だけしか進むことができない。
2stepなら、1+1で2の距離。*1
3stepなら、1+2+1=4だから最大4移動できることになる。
2stepの時の移動距離が2なので、3stepで移動できるのは
距離が3または4の時のみであることがわかる。


4stepでは1+2+2+1=6が最大だから、距離が5,6のときだけ
4stepで移動できることがわかる。


5stepでは1+2+3+2+1=9だから、距離が7,8,9のときは5step。


このように考えていけば、
距離が0,1,2,3,4,5,6,7,8,9,10...と増えるにつれて
最小ステップ数は
0,1,2,3,3,4,4,5,5,5,6...となる。


ステップ数のみをもう少し多く書くと、
0,1,2,3,3,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,9,10,10,10,10,10,11...
という感じだ。ここまで書くことができれば規則性は完璧にわかるので、あとはこれを参考にしてコードを書いてみることにする。

*1:0stepなら距離0