1. 数字を小さい順に並べてできる 4 桁の数の個数
以前、数字を小さい順に並べてできる 4 桁の数の個数は 715 個と書いた。
1万個もある 4 桁の数 のうち、たった 715 個しかないのは驚き。
そこで前々回(第4回)、715 個しかないのを確かめるためのプログラムを
スクラッチで作り始めた。
13. つぎは、0000 から 0099 まで数えてみよう。
ここまでは、プログラムを作って、動かしてみたと思う。
14. では、0000 から 9999 まで数えてみよう。これは宿題。
15. 0000 から 9999 までの数で、
右となりの数字が同じか大きくなっている数を数えるのは
どのようにしたらよいだろうか。これも宿題。
15. 0000 から 9999 までの数で、
右となりの数字が同じか大きくなっている数を数えるのは
どのようにしたらよいだろうか。これも宿題。
これらの宿題の説明はまだだけど、前回は
数字を小さい順に並べてできる 2 桁の数の個数を数えるプログラムを作った。
数学の公式を使うとプログラムで数えなくともよいことがわかった。
今回はまず、上記の 14. の宿題 0000 から 9999 まで数える から説明する。
プログラムには、次のように動作をさせたい。
a b c d カウンター
0 0 0 0 1
0 0 0 1 2
0 0 0 2 3
...
0 0 0 9 10
0 0 1 0 11
...
0 0 1 9 20
0 0 2 0 21
...
0 0 8 9 90
0 0 9 0 91
...
0 0 9 9 100
0 1 0 0 101
...
0 1 9 9 200
0 2 0 0 201
...
0 9 9 9 1000
1 0 0 0 1001
...
1 9 9 9 2000
2 0 0 0 2001
...
8 9 9 9 9000
9 0 0 0 9001
...
9 9 9 9 10000
そこで、 2 桁の数の個数を数えるスクラッチのプログラムを参考に、
以下のように、4桁の数の個数を数えるプログラムを作る。
プログラムは動かすとかなり時間がかかる。数式では、
のように計算できる。 つぎに、15. の宿題
0000 から 9999 までの数で、
右となりの数字が同じか大きくなっている数を数える を説明する。
前回、「2 桁の数で、右となりの数字が同じか大きくなっている数の個数」を
数えるプログラムを、プログラムの中の「d を 0 にする」を 「d を c にする」に
変えて作った。
このようにすると、c の右となりの数字 d が同じか大きくなる。したがって、
4 桁の数で、右となりの数字が同じか大きくなっている数の個数を数えるには、
そこでとりあえずスクラッチのプログラムで数えてみよう。
a b c d カウンター
0 0 0 0 1
0 0 0 1 2
0 0 0 2 3
...
0 0 0 9 10
0 0 1 1 11
...
0 0 1 9 19
0 0 2 2 20
...
0 0 8 9 90
0 0 9 9 55
0 1 1 1 56
...
0 1 9 9 100
0 2 2 2 101
...
0 9 9 9 220
1 1 1 1 221
...
1 9 9 9 285
2 2 2 2 286
...
8 9 9 9 714
9 9 9 9 715
先ほどの 4 桁の数を数えるプログラムの
「b を 0 にする」を 「b を a にする」に、
「c を 0 にする」を 「c を b にする」に、
「d を 0 にする」を 「d を c にする」に
に入れ替える。
このプログラムのなかの「0.1 秒待つ」を削除すると、すぐに数え終わり、
この部分は10問出題し、正解の数を p に蓄え、最後に正答数を表示する。
4 桁の数で右となりの数字が同じか大きくなっている数の個数が 715 個である
ことがわかる。
スクラッチで足し算練習問題出題プログラムを作ってみよう。
1. a+b=c の a と b に 1 桁の数が表示され、
2. 計算結果をキーボードから入力すると、c にその値が表示される。
3. 足し算の結果と入力した数が合っていれば、「正解です!」と表示する。
4. 上記を10回繰り返し、何問正解したかを表示する。
上記の + や = は、スプライトを編集して作る。
この筆の印の場所をクリックすると、スプライトと言う図柄を作る編集の画面が
中央に現れる。
T を選択し、キーボードから + の記号を入力する。
矢印を選択し + の大きさと位置を調節する。
= のスプライトも同じように作る。
スクラッチのプログラムは以下の通り。
これを分解してみる。
0 から 99 までの乱数にしたり、4桁や5桁の乱数にすることもできる。
入力結果を c に入れる。
同じときは「正解です!」と表示し、正答数を数える p に 1 加える。
このプログラムをすこしかえたものや、引き算、掛け算、割り算、分数の計算の
問題を出題するプログラムを、スクラッチのホームページ上に共有で公開した。