提供:Japanese Scratch-Wiki

このきじは ひらがなでよめません。ごめんなさい。編集者向け:作成する
Warning
メモ:
この記事を理解するには数学知識が必要であり、ない場合は説明が難しい場合があります。

総和とは、ある数からある数までを順番に足していったものである。

例えば、「1」から「10」までの総和は、

1+2+3+4+5+6+7+8+9+10
=55

となる。

また、この総和には以下の性質がある。

1からnまでの数の和

Sum.png

この性質を利用して、以下のプログラムを作ることができる。
(((n) * ((n) + (1))) / (2))

応用

  • 運転ゲームなどで滑らかな減速をする。
定義 速度計算(最大速度)(初期距離)
[速度 v] を [0] にする
[停車目標までの残りの距離 v] を (初期距離) にする
<(最大速度) < ((速度) + (足される速度))> まで繰り返す//足される速度は、アクセルのレベルによる。
[停車目標までの残りの距離 v] を ((停車目標までの残りの距離) - (引かれる距離)) にする
[速度 v] を ((速度) + (足される速度)) にする
end
<(速度) < [0.1]> まで繰り返す
[停車目標までの残りの距離 v] を ((停車目標までの残りの距離) - (引かれる距離)) にする//引かれる距離は速度による。
[速度 v] を ((速度) - (引かれる速度)) にする// ひかれる速度はブレーキのレベルによる。
end
もし <(停車目標までの残りの距離) < [0]> なら
速度計算 ((最大速度) - (1))(初期距離)
でなければ
[最適な速度 v] を (最大速度) にする
end

この場合、この計算により一番早くて、一番正確に止まれることができる。

だが、初期速度が120の場合は、とても長い計算になってしまう。

なので、ここで総和を使うと、

定義 速度計算(最大速度)(初期距離)
[速度 v] を [0] にする
[停車目標までの残りの距離 v] を (初期距離) にする
[停車目標までの残りの距離 v] を ((停車目標までの残りの距離) - (((最大速度) * ((最大速度) + (1))) / (2))) にする//1ずつ距離が減るとすると 減っていくのが1ではない場合で、等差数列ならば、「1*距離が減る数」を答えに掛ければよい。
[速度 v] を (((最大速度) * ((最大速度) + (1))) / (2)) にする
...

というようにあらわせる。 一見、あまり変わりないように見えるが、繰り返しの時間をカットできる上、負荷を抑えることができる。

Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。