二次元配列の作り方・その2
妹「昨日言ってた、横幅を足したり引いたりして上下に動かす案なんだけどさ、あれだと横にいきすぎた時のループ処理とか出来なくない? 現在位置がどうなってるかわからないから、普通に1足すと次の段にカーソルがいっちゃうような」
「それは割った時の余りで調べればいいんだよ」
妹「余り?」
0 | 1 | 2 |
3 | 4 | 5 |
6 | 7 | 8 |
9 | 10 | 11 |
「例えばこんな感じの配列になってるとする。1足すと右に、3足すと下に進む状態。で、それぞれの数字が横の並びの中のどこかっていうのは、横幅の3で割った時の、余りを見るとわかるんだよ。0だったら左端、2だったら右端。2の部分は横幅-1で計算出来る」
妹「1番上の列と同じになるのか……でもアマリって、そんなブループリントあったっけ?」
「こういう感じの、%で検索すると出てくるんだけど、上のピン÷下のピンの余りが出力されるノードがある」
妹「モジュロ?」
「ってなるよね。余りを英語で書くとmoduloになって、それをカタカナで書くとそうなる」
妹「そりゃカタカナ訳がいいとは言ったけどさ……モジュ郎……」
「あと縦の位置関係を調べる時は、横幅で割るとわかる。余りは切り捨てだけど、Integer同士の割り算なら自動で余りは捨てられるからそのままで」
妹「これも横なの? 縦の長さで割るんじゃなくて?」
「横幅で合ってるよ。012は割ると0、345だと1、678は2になって、必要な数字が出てくる。計算で縦の長さを使う事はまずないと思う。あ、でもこれは横に並べてる入れるの場合だから」
0 | 3 | 6 | 9 |
1 | 4 | 7 | 10 |
2 | 5 | 8 | 11 |
「こういう具合に縦→横に並べてる場合は逆になって、計算は全部縦が基準になる」