まず、プログラミングは「こう書けばいい」……ではありません。
『プログラムは魔法でもなんでもなく、人間が現実世界でやっていることを逐一指示されながら処理しているだけの代物である』です。
つまり、『現実世界でならどうするか』です。
質問にある内容を、プログラミングとかは置いといて、現実世界で、手作業でやると考えてください。
それを実装すればいいだけです。
まずはノートでもいいし、ホワイトボードでもなんでもいいので、これに書いていくと考えます。
今回はホワイトボードだとします。
00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
と書くのですが、そのまま書くこともできますが、『規則性』を見付けてみましょう。
縦の個数、横の個数を調べてみましょう。
縦: 00 ~ 09 等の 10個
横: 00 ~ 90 等の 10個
つまり、10×10 の行列と考えられますね。
そして、次は一行目( 00~09 ) に着目しましょう。
00~09 までの 10個、数字が +1 して行っています。
次に二行目( 10~19 ) に着目しましょう。
10から 19 までを +1 して行ってます。(10個分)
で開始の数字は 10 。前の行の最後は 09 ですね。
関係性を見ると、『前回の行の最後の数字に +1 した数字から始まっている』ですね。
さらに次の 三行目( 20~29 ) を見ても、『前回の行の最後の数字に +1 した数字から始まっている』で、
かつ『10個分、+1して行っている』ですね。
列も見てもいいですが、今回はあまり関係なさそうですね。(無くはないが、考えなくても行けそう)
つまり、
■ 10×10 の行列であり、
■ 最初の行は00から始まり、10個分出力する
■ 二行目以降は 前回の行の最後の数字に +1 した数字から始まる
ということがわかりました。
ですが、最初の行の 00~09 はちょっと変ですね。
おそらく、二行目以降が 10 とかみたいな二桁台なので、そろえる為でしょうね。
一桁を二桁にするにはどうすればいいでしょうか。
3 を 03 にするのです。
そう、『一桁台なら 前に '0' を付ける』ですね。
一桁台とはなんでしょうか。
数直線を書いて考えてみてください。
負の数は考慮せず、正の数だけだとすると、0≦数字<10 ですよね。
(10は含まない事に注意)
では、0≦数字<10 とはなんでしょうか。
これも数直線で考えてみてください。
そうすると、
数字が0以上 『かつ』 数字が 10未満
と考えられますね。(集合と論理のやつ)
よって、
規則性1: 10×10 の行列であり、
規則性2: 最初の行は00から始まり、10個分出力する
規則性3: 二行目以降は 前回の行の最後の数字に +1 した数字から始まる
規則性4: 一桁台の場合は前に '0' を追加する
となります。
ここまでで規則性がわかりましたので、実際にホワイトボードに書いてみましょう。
まずは一行目。
0 から始まっているので、規則性4から
00 01 02 03 04 05 06 07 08 09
となりますね。
規則性3のため、最後に書いた数字( 9 ) をホワイトボードの余白に書いておく。
これを『記録X』としておく。
次に二行目。
規則性3のため、先ほど書いた記録Xの値 に +1 した数字( 10 ) から開始する。
でも 規則性4 の条件には該当しないため、そのまま書く。
00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19
最後に使った数字 ( 19 ) を記録X として更新する ( 9 -> 19 )
更に三行目も同様にやる。
規則性3のため、先ほど書いた記録Xの値 に +1 した数字( 20 ) から開始する。
でも 規則性4 の条件には該当しないため、そのまま書く。
00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
最後に使った数字 ( 29 ) を記録X として更新する ( 19 -> 29 )
……と10行目までやると、最終的に
00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99
となるはずです。
これをJavaならJava、C言語ならC言語……と言う風にそれぞれの言語の書き方で、書き下すだけです。
1行から10行までを……っていうのはfor文で出来そうですね。
1個目から10個目を……もfor文で、(入れ子状態で)出来そうですね。
現実世界だと『ホワイトボードの余白に』書いた記録X については『変数』で実装できそうですね。
もう、ここまで書けば、答えを書いたようなものです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。