規則を見つけるコツは、「数えてみる」こと
前回まで、「課題が解けないのは普通のこと」「まずプログラミングを忘れて、日本語で考えよう」という話をしました。

今回は、もう一歩進みます。問題にひそむ「規則」を見つける方法です。
先日、ある学生さんがこんな課題に詰まっていました。

「自然数を入力すると、その数だけの段のピラミッドを表示する」
たとえば 3 を入力すると、こうなります。

  *
 ***
*****
文法は習っている。でも、どう書けばいいか分からない。手が止まる。よくある状態です。

ここで私が伝えたのは、「ただ眺めるんじゃなくて、数えてみよう」ということでした。
まず、各行の「*の数」を数えます。
1行目:*が 1個
2行目:*が 3個
3行目:*が 5個
1、3、5。──何か気づきませんか。2ずつ増えている。奇数が並んでいます。

次に、「スペースの数」を数えます。
ここで、ひとつ面白い見方があります。
このピラミッド、よく見ると左右対称です。だから、スペースは*の左だけでなく、右にも同じ数だけ隠れていると考えられます。

  *   左2 + *1 + 右2
 ***  左1 + *3 + 右1
***** 左0 + *5 + 右0

左のスペースは 2、1、0 と1ずつ減っていく。右も同じです。
もちろん、画面に出すだけなら、右のスペースは見えないので、左側だけ考えれば足ります。でも「左右対称なんだ」と気づけると、問題の本当の形が見えてきます。

そして大事なのは、ここです。
同じ問題でも、見方はひとつではありません。
「左のスペースだけ」と考えてもいい。「左右対称」と考えてもいい。どちらも正解です。自分が一番しっくりくる捉え方を選べばいいんです。

規則さえ見つかれば、あとはコードに翻訳するだけ。「行ごとに、スペースを何個、*を何個」と分かっているなら、繰り返し(for)で書けます。
正直に言うと、その学生さんは、その場ではコードまで書ききれませんでした。私がヒントを出しながら、一緒に仕上げました。それでいいんです。規則を見つける感覚を、一度つかむこと。それが何より大事だからです。

課題に詰まったら、まず数えてみてください。
そして、いろんな角度から眺めてみてください。
規則は、たいてい数字の中に隠れています。