2021/02/19

5. スクラッチでも時間がかかることを、何とか楽に!

1 数学語は便利!
  先週は、スクラッで数字 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 の数を数えた。
  数えなくても 10 個あることは分かっているが、
  スクラッチのプログラム

  は次のように数字の数を数えていた。

      d:  0 1 2 3 4 5 6 7 8 9 10
     個数:  1 1 1 1 1 1 1 1 1 1
  カウンター:0 1 2 3 4 5 6 7 8 9 10

  スクラッチのこのプログラムを実行すると、上に書いたように、
  まじめに一つひとつ数える。

  しかし、数学ではそんなめんどうなことはしない。

  めんどうなことをせずに済ますために、ちょっとめんどうな準備をする。

  「10 個の 1 を足し算すれば 10 になる」ことは分かっている。
  変数 n を使って一般的に書くと、「n 個の 1 を足し算すれば n になる」。

  これを数学語では 、つまり、数式では

  と書き、意味は
  である。
  
  n がどんな数でも n 回の足し算をせずに、この和は n である。

  そこで公式として
  を覚えておくと便利に使うことができる。

  上のプログラムで、
   d を 0 にする
  を
   d を 4 にする
  に変えるとどうなるだろうか。

      d:  4 5 6 7 8 9 10
     個数:  1 1 1 1 1 1
  カウンター:0 1 2 3 4 5 6

  このときは、4 から 9 までを一つひとつ数えて 6 個になる。

  数式では

  のように和が得られる。
  変数 c を使って、c から 9 までの個数は 

 
  と書くことができる。

2. 2桁の数で、右となりの数字が同じか大きくなっている数の個数

  先週、「13. つぎは、0000 から 0099 まで数えてみよう。」 で
  次のスクラッチのプログラムを示した。

これを分解すると次のようになる。

中央の d の繰り返しの 「1 という」の部分にその右の 「カウンターを 1 ずつ変える」の
ブロックが入り、数式では
 と表すことができる。

左の c の繰り返しの「d の繰り返し結果 と言う」の部分に中央のブロックを入れると、
数式では
のように表される。

  このプログラムの中の「d を 0 にする」を 「d を c にする」に変える。


  これは次のように動作する。

   d 0 1 2 3 4 5 6 7 8 9 10   カウンター
  c                             0
  0  1 1 1 1 1 1 1 1 1 1 (=10) 10
  1    1 1 1 1 1 1 1 1 1 (= 9) 19
  2      1 1 1 1 1 1 1 1 (= 8) 27
  3        1 1 1 1 1 1 1 (= 7) 34
  4          1 1 1 1 1 1 (= 6) 40
  5            1 1 1 1 1 (= 5) 45
  6              1 1 1 1 (= 4) 49
  7                1 1 1 (= 3) 52
  8                  1 1 (= 2) 54
  9                    1 (= 1) 55

  このスクラッチのプログラムは、この和を一つひとつ数えている。
  数式では
  と表される。c に対して
  であったので、d についての繰り返しの部分は、
  「カウンターを 10-c ずつ変える」に置き換え、
  とすることができる。

  これを数式で書くと、
  と表される。

  これは 1 から 10 までの数を一つひとつ足し算をすることを表しているが、
  足し算をせずに以下のように考えることができる。

  変数 n を使って一般的に書くと、
  のように n-1 回の足し算が、足し算1回、掛け算1回、割り算1回の計算になる。
  公式として
  を覚えておくとよい。

  n が大きな数のときは、スクラッチのプログラムでは大変時間がかかるが、
  数学の公式を使うと楽に和を求めることができる。

  めんどうなことはしたくない。数学は便利だなあ。

3. よんすうパズルを出題するスクラッチのプログラム

  スクラッチの乱数を生成する機能を使うと、
  よんすうパズルの問題を作ることができる。

  a. 変数 a, b, c, d, t を作り、
   実行画面の上のほうに a, b, c, d を左から横1列に並べる。
   その下に t を置く。


  b. スプライトの大きさと位置 x, y を次のようにする。


  c. プログラムを以下のようにする。


  このプログラムは出題をするだけで、
  どのように解いたかをプログラムに知らせることはできない。
  合っているか違っているかの判定もできない。
  解がわからないときの正解例を表示することももちろんできない。
  でも、切符や、自動車を見なくても、よんすうパズルを楽しむことができる。

  このプログラムを少し変えたものを、スクラッチのホームページ上に共有で公開した。

4. おまけ

  どのように解いたかをプログラムに知らせ、
  合っているか違っているかを判定する
  スクラッチのプログラム yonsu-puzzle を作成した。
  これは、正解例を表示することはもちろんできない。

  スクラッチのホームページ上に共有で公開した。

0 件のコメント:

コメントを投稿

20. 円錐の半分?

17-19 で三角形、四角形の面積を半分にする問題を解いた。 今回は円錐を半分にする実験をしてみよう。 まず、円錐を作るための図形をスクラッチで描いてみた。 プログラムはここ。 https://scratch.mit.edu/projects/561804896 これを実行すると...