コミュニティアイコン プチコン 非公式コミュニティ トピック

アバター
ヘンルーダ ◆yprQSt4Ll9A2
2018/11/27 14:16
情報交換
ちょっと慣れてきた気がした
だがサンプルみたら数千行とかあってびっくりした。道は長いですね。

今朝、試しにファイルを1つ投稿して、今見たら公開キーがついていたのでちょっとした成長を実感しました。
公開キー:WZDVW3L4
ファイル名:SIMULTANEOUS
大したものじゃなければここじゃなくて別に書けという注意書きがあったので、これ以降投稿することがあってもここには書かないようにします。
でも今回は初投稿だから私にとって凄いものなので許して

コメント

アバター
ヘンルーダ 2018/11/27 14:40 ◆yprQSt4Ll9A2
投稿したファイルについて簡単に説明すると、
ファイル名はsimultaneous equation(連立方程式)から。つまりは連立方程式を解くプログラムです。
といっても2元1次と3元1次の簡単なものに限りますが…

傲慢なのは周知の上、プログラムを見て不満点を上げて頂けたらと思っています。もう少し簡潔にまとめられるところがあったり、私の知らない術でスマートな形にできたり、ということがあれば是非教えて頂きたいです。
プログラム式中に一切の説明がないのは…すみませんでした。まだ簡単なことしか知らないので、読んだら誰でもわかるプログラムだとは思いますが…
アバター
ツララ 2018/11/27 14:50 ◆ArUdBYOYME1V
投稿というか、ヘンルーダさん用のネットストレージにセーブして
他の人もアクセスできるように公開キーを発行しただけですよね?

許すも許さないも
大したものしか書くな。なんて言ってる人がいるんです?
それともツッコミが入ると、それが例え好意からのものだとしても恐縮しちゃうんです?
ヘンルーダさんが公開したいと思ったから公開キーを出したんでしょうから
他の人に教えないと意味無いじゃないですか。
当然ですけど公開キーの取り消しだってヘンルーダさんの自由ですよ?

とー言ってぇ…、もう許せるぞオイ!
アバター
こういち 2018/11/27 16:39 ◆ou0jbJnEJ0Kb
プチコンあるある
プチコン始めたばかりの人連立方程式解くプログラム作りがち。
ちなみにガウスの仮定法ですか?クラメルの公式ですか?
アバター
ブルー 2018/11/27 16:57 ◆F30iKws/Dqrq
残念。
僕が作ったのは、簡易計算機とRPG風コマンド選択式バトルです。
アバター
あきと 2018/11/27 17:54 ◆Bz8zeG7wRHNQ
落としてみました。いざやってみると連立方程式の解が整数になるよう代入するのって難しいんだなと思いました。ネットで問題探してきて入れてみたり。
やってみて思った事を書きます。

ax+by=e
cx+dy=f
最初にぱっと見た時はa,b,e,c,d,fとINPUTするのかなと思ってしまいました。
式としては上の表示の方がいいので、実際にINPUTもa,b,e,c,d,fの方がいいような気もします。
「れい)2,1,4,5,7,8-> 2x+y=4 5x+7y=8」のように代入例を一緒にプリントしてはどうでしょうか。

もう一つyの係数に負の値を入れると
2x+-5=6
のような表示になるのでSGN命令で「+」表示の制御を行うときちんとマイナスだけになると思います。

2次方程式でグラフとかだせるといいですね。
アバター
こういち 2018/11/27 21:44 ◆ou0jbJnEJ0Kb
ダウンロードしました。クラメルの公式ですね。
せっかくだからn元1次を解けるように改造しよう。
アバター
ヘンルーダ 2018/11/27 21:51 ◆yprQSt4Ll9A2
>>ツララさん
非公式wikiの注意書きにそのような文面があったので、そういう習わしがあるのかと思ってました。
特に気にしなくても良いんですね。安心しました。

>>ブルーさん
RPG…はどうやるのか分かりませんが、簡易計算機なら頑張れば私にも出来そうです!
アバター
ヘンルーダ 2018/11/27 21:59 ◆yprQSt4Ll9A2
>>こういちさん
連立方程式は結構スタンダードだったんですね。
n元1次になると…行列式をどう扱ったら良いのでしょうか…
2元と3元の場合で完全に分けてしまったので、新たに4元、5元…とやっていくのはあまりに手前ですし…
アバター
ヘンルーダ 2018/11/27 22:09 ◆yprQSt4Ll9A2
>>あきとさん
ご指摘ありがとうございます。係数か否かしか頭にありませんでした。細やかな気遣いもプログラムする際は留意が必要ですかね…
負の数の場合に+と−が並んでしまうのは仕方ないかと思っていたのですが、ちゃんと対策できたのですね。SGN命令、調べてみます。
(グラフの描画の仕方は全くわかりません…)
アバター
ヘンルーダ 2018/11/27 23:39 ◆yprQSt4Ll9A2
あきとさんの指摘に基づいた修正に加え、係数が1のときの省略、0のときのxやyの省略もしています。
IF〜THEN〜ばっかりになってしまったのですが、そういうものでしょうか。
アバター
こういち 2018/11/28 5:39 ◆ou0jbJnEJ0Kb
ボクもやろうとしてますが、行列式の計算にn!に比例した時間がかかる問題。(行列式の展開でやってます。)
アバター
ヘンルーダ 2018/11/28 14:47 ◆yprQSt4Ll9A2
>>あきとさん
プログラミングなどにおける関数はまだまだ知らないのですが、関数を使えたら便利そうですね。def〜endは調べてみます。
こちらの「関数」は関数というより写像なんでしょうか?ある変数の値によって、それに対応した命令を吐き出すような仕組みじゃないかと思ってたのですが…

>>こういちさん
n次の行列式を求めるプログラムが必要になってくるんでしょうか。なんとなく余因数展開が良いのかな…?とは思うけど方針までは難しいですね…
アバター
あきと 2018/11/28 17:22 ◆Bz8zeG7wRHNQ
写像はどちらかというと配列の挙動に近いと思いました。
プログラムにおける関数は以下のような存在かなと考えています。

・入力に対して出力がある
y=func(x) のように数学的な関数に近い存在ですね。
また今回の方程式の場合は
renritu a,b,c,d,e,f out r,x,y
のように定義してx,yに解が入る関数も作成できると思います。
rは不成立のフラグを返しています。
OUT命令を使うと複数の返り値が定義できます。

・入力に対して出力がない
何か値が返ってくるわけでは無い関数も作成できます。
これは渡したパラメータが分岐の条件判定に使用されることになります。
また返り値ではなく、例えばグラフィックに反映されるなど出力先が
違うという事もあります。

・入力も出力もない存在
複数の命令をまとめて実行する概念にまとめるためにただ関数化する。
GOSUBで呼び出すサブルーチンと一緒。

ヘンルーダさんが書いた「命令を吐き出すような仕組み」というのは関数言語のような存在なのかなと思いますが、SMILEBASICではそこまでできないです。
変数の束縛とかもないですし。
アバター
こういち 2018/11/28 21:13 ◆ou0jbJnEJ0Kb
クラメルの公式にこだわるならn*n行列の行列式を求める処理は必須になりますね。
ちょっと調べてみたら
上三角行列に変換してから行列式を計算すると簡単なな三重FORループで書けて、
n^3に比例した時間で計算できるらしいです。
アバター
ヘンルーダ 2018/11/29 6:30 ◆yprQSt4Ll9A2
>>あきとさん
入出力があるものは感覚的に理解できました。
出力がないものはIF〜THEN @〜 みたいな感じかなと。
入出力がないものは…サブルーチンの例をあまり見たことがないのでよくわかりませんでした。
配列の列挙というのはなんなのでしょうか。
アバター
ヘンルーダ 2018/11/29 6:45 ◆yprQSt4Ll9A2
>>こういちさん
上三角行列を知らなかったので調べてみたのですが、より少ない要素を扱うことになれば確かに簡単になるかもしれないですね。
ところで、〜に比例した時間で計算する という表現はプログラミング特有のものなんでしょうか。電子計算機はなんでも高速で計算できるものかと思っていましたが、命令を組む段階ではそうでもなさそうですよね。
アバター
こういち 2018/11/29 7:56 ◆ou0jbJnEJ0Kb
確か誤差とかを表すときにも同じような表現をした気がする。
例えば、計算に log nに比例した時間がかかることを
O(logn)の計算量と言ったりします。
アバター
あきと 2018/11/29 11:51 ◆qGd5dQw2g3a2
サブルーチンについてはGOSUB〜RETURNを、配列についてはDIM命令をヘルプで読んでみてください。
アバター
ヘンルーダ 2018/11/29 21:22 ◆yprQSt4Ll9A2
お二人ともこんなにお付き合いいただきありがとうございました。
今後は、今回のプログラムの改良や、実際のプログラミング問題の考察など、もう一歩や二歩、足を進められたらと思います。
あとはもう一度基本を見返すのも必要ですね。

コメントを書く

この投稿にはコメントできません。

- WEB PATIO -