GRSのブログ -2ページ目

GRSのブログ

スペハリ / プチコンmkII


▲プチコンの編集画面をカラー化しています(誰でも簡単にできます)





数字を1から順番に10まで足す場合

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

プチコンで表現すると

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

ですが、
最大値が変わるとプログラムを書き替えるのが大変なので
一般的に

MIN=1:MAX=10

ANS=0
FOR I=MIN TO MAX
 ANS=ANS+I
NEXT


って書きます

プチコンなら一瞬で計算してくれます
しかし、最大値が500,000の場合このプログラムでは時間が掛かります
 プチコンの扱える数字は約50,000までなので最大値を1,000にして500回繰り返します
 値を求めるのが目的ではないので・・・

MIN=1:MAX=1000

FOR J=1 TO 500
 ANS=0
  FOR I=MIN TO MAX
   ANS=ANS+I
  NEXT
NEXT


実行すると約20秒掛かります

ここで計算の工夫をします

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




(1+10)*(10/2) = 55

で、求められます

プチコンで表現すると

ANS=(MIN+MAX)*(MAX/2)


なので、20秒掛かったプログラムを書き替えると

MIN=1:MAX=1000

FOR J=1 TO 500

 ANS=0
 ANS=(MIN+MAX)*(MAX/2)

NEXT


実行すると約1秒で終了します


工夫次第でプログラムの高速化が図れます ヘ(゚∀゚*)ノ

物事を直線的に考えると速度的や論理的に難しくなる場合がありますが
ちょっと見方を変えれば解決する方法があるはずです ヾ(@^▽^@)ノ

因みに、この計算式は小学3,4年生ぐらいの算数の時間に習ったので
特別な計算方法ではありません
 何かの公式だったと思うけど覚えていません
(^^;)

数学が苦手だから…で、尻込みする必要はないです。
こんなことは『パズル』です
 パズル嫌いって言われると…ですが (^^;)


脱線しますが

8ビットパソコンのCPUは数字を 足したり 引いたり することしか出来ませんでした
そんなCPUでも 4*5 を実現するために 4を5回足し算する ことで求めていました
 かけ算って本来、何回足すかなんで… 小学校のかけ算の授業で学びます
だから三角関数のsin等はまともに計算することが困難なため、ゲームなどでは
参照テーブルを作成して計算してました。ヤッパリ工夫です
 参照テーブルって 配列変数であらかじめ SIN(45)=0.71 等の計算結果を
 あらかじめ書き込んだ答えを見ながら計算する方法です。
  プチコンなら直接計算した方が少し速いんですが… (^^;)
  この参照テーブルってもの凄く便利なので別の機会に説明します
  プチコン3号が出ても絶対役に立つテクニックですよ~ ヽ(゜▽、゜)ノ