これまでのあらすじ
※個人的でくだらない言い訳です、読み飛ばしていただいてかまいません。
今まで、.comエミュレータやら動物将棋やらのページを立ち上げては途中で断念してきました。(動物将棋については開発言語をHSPに変更して今でも作ってますが…)
そして、懲りもせずに今度はbasicインタプリタのページを作りました。
しかし、今回は今までとはわけが違います。
私はとある公立高校の理数課に通っていますが、理数課では夏から秋にかけて、グループごとに研究をすることになっています。
私は数学のグループですが、情報数学分野として、マインスイーパについて研究することになりました。(詳しい研究内容は省きますが、本気です。)
ただ、研究の内容上コンピュータに大量のマインスイーパのステージをプレイさせる必要があり、どうしてもプログラミングが必要になったのですが、あいにく私しかプログラミングが出来ません。
もちろんグループ単位での研究なので私一人が暴走するわけにもいかず、教科書にも載っているbasicをみんなに教え込む事にしました。
ただし、教科書には行番号が必要な時代のかなり古いタイプのbasicが載っており、そんなbasicのインタプリタを私は知らないので、このさい自分で作ってしまおうと思います。
結論から言えば、私がこれを投げ出すと、グループで研究が出来ない事になるので、きっと今回は意地でも完成させます。
現在の状況
basicインタプリタそのものを書かなくとも、桁数の大きい計算が可能な言語へのトランスレータを書けばいいじゃないか、といった手抜き策を思い付き、色々と調べ、試してみましたがなかなか難しいのでやはりインタプリタを書くという当初の方針に戻ってきました。
現在は「当面の目標」として挙げていた「100 END」が実行できる、ぐらいの機能しかありません。
ただ、実験の協力(指導?)に当たっていただく大学への中間報告が今月中なので、本腰を入れていきたいと思います。
いくらなんでも「実験をするための開発環境すらほとんど整っていません」というわけにもいかないので…。
高校に一人でもプログラミングが出来る先生がいたらなぁ、と思う今日この頃です。
課題
構想を練りつつふと困ったことに気がつきました。
たとえば、縦10マス、横10マスの計100マスのマップに10個の爆弾を配置するとします。
点対称や線対称の事を考えないとすると、そのパターンは、(100*99*98*97*96*95*94*93*92*91)/(10*9*8*7*6*5*4*3*2*1)=17310309456440通りにもなります。
つまり、これから作るbasicはかなり大きな数を扱えないといけないようです。
さらに、よくよく教科書を読んでみると、basicは小数を標準で扱え、割り算の答えは標準で小数で返ってくるようです。
当初は軽い気持ちで作ってしまえ、と思いましたが、案外大変そうです。
結局、配列の複数の要素で一つの変数を表すことに決めました。
つまり、変数を3桁づつに区切り、それぞれを順番に配列に入れようと思います。
変数の計算は、筆算の要領で何とか切り抜けられそうです。
(ただ、割り算だけはかなりめんどくさい事になりそうです。)
小数点以下についても、この仕様の影響で3桁までしか扱えない事にします。
自作したプログラムの信用度について
今回の実験では、自作したbasicの上でみんなで作った実験用プログラムを動かして結果を得るという計画なのですが、実験に当たって自作したプログラムの確実性はどうやって証明するのでしょう?
当然、出力されたデータは信じるしかないと思いますが、プログラムにバグがあって出力されたデータがおかしかった場合、研究そのものの意味が無くなるような気がするのですが…。
高校生の遊び程度のプログラムならそんなことは一切気にしませんが、どうやら今回は研究の最期にちょっとした論文のようなものを協力してもらう大学に提出しないといけないようです。
決して大学生が書くような論文ではありませんが、一般的に研究で用いたプログラムにバグが無い事をどのようにして証明しているのか、どなたかご存知でしたら是非お教えください。
一般用コメント一覧
- マインスイーパのステージを自動的にプレイさせるということは、作る予定のインタプリタから外部のアプリが制御できるってことですか?すごい! -- uchan 2010/7/11 12:48
- いえ、そんな大それたものじゃもちろんありません。m(_ _)mあくまで「教科書準拠」ですので。 内部的に思考エンジンからは見えない配列を用意してそれをマインスイーパのマップにしたいと思っています。 つまり、プログラマがずるをすればいくらでも最強の思考エンジンが作れるわけですが、それでは研究にならないので、勿論そんなことはしません。 -- HOSINO 2010/7/12 4:14
- 誤動作が発生する原因は、条件分岐であったり値が上限・下限を超える場合が多いです。条件が切り替わる付近の値や、配列の最大値付近に注意してテストすると良いでしょう。全コード中、どれだけをテストしてみたかの割合をカバレッジといい、品質を保証する数字の一つです。いろいろな定義がありますので、詳しくは調べてみてください。 あと、万一うまくできなかった場合の保険も考えておいたほうがよいですね。話を聞く限りでは、N88互換BASIC http://www.vector.co.jp./soft/win95/prog/se055956.html あたりならその教科書に対応できそうですが… -- Zakky 2010/8/30 0:05
Counter: 399,
today: 1,
yesterday: 0
初版日時: 2010-07-11 (日) 10:53:55
最終更新: 2010-08-23 (月) 00:00:00 (JST) (349d) by lina
|
ぺージ情報 | 閲覧可 | 編集可 | |||
---|---|---|---|---|---|---|
ぺージ名 : | HOSINO/g01アプリ製作室/教科書準拠のbasic | グループ : | すべての訪問者 | グループ : | すべての訪問者 | |
ページ作成 : | lina | ユーザー : | すべての訪問者 | ユーザー : | すべての訪問者 | |
ページ別名 : | 未設定 |