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

アバター
RU-RA ◆WXDJqyOv9yBK
2019/8/29 22:25
協力
算数、数学の問題プログラムで終わる説
タイトルまんまです。
算数、数学の問題をプログラムを使って解けるかもという説を実験したいのです。
きっかけは私の宿題にめんどくさいものがあったのでプログラムを使えばできるんじゃね?と思ったことです。
でもさすがに宿題で試すのはカンニングと同じようになってしまうので、皆さんに問題を出していただきたいという企画です。是非、宜しくお願いします!

コメント

アバター
RU-RA 2019/9/2 22:02 ◆WXDJqyOv9yBK
充電器ない事件発生により、開発が遅れます。
申し訳ございません。m(__)m
アバター
ドラキーマカレー 2019/9/5 21:00 ◆3jIC4XsSXrZX
中1レベルの問題

X=82
Y=-56

-X×Y
アバター
F-4 Phantom 2019/9/7 18:31 ◆2Fao.QP8H0Nw
中2レベルの問題
連立方程式

一問目
{x+y=8
{x-y=2

2問目
{4x-3y=50
{3x-2y=50

3問目
{y=2x+3
{y=6x-1

流石に連立方程式はキツいか…?
アバター
RU-RA 2019/9/7 22:04 ◆WXDJqyOv9yBK
ドラキーマカレーさんのと F-4 Phantomさんのはいけそう。これだけやってみます。
出来たら実験成功ということで。
アバター
RU-RA 2019/9/7 22:08 ◆WXDJqyOv9yBK
連立方程式とかって何が難しいかって言うと入力なんですよね。
イヤーマイッタドウシヨー(棒)
アバター
ドラキーマカレー 2019/9/7 22:15 ◆3jIC4XsSXrZX
中3レベル

198の素因数分解
アバター
ツララ 2019/9/7 22:48 ◆ArUdBYOYME1V
2元1次連立方程式を解く関数を作るとして、引数と戻り値を考えてみると
引数は二つ以上の式、戻り値は二つの未知数の値とすると
式は文字列の形で与えるとして
DEF RENRITU_2G1J A$,B$ OUT C,D
みたいな感じになるのかな?
まず式の解析をする処理を作る必要がありそうですね・・・
(文字列なので乗算の演算子は省略して書いても解析処理で判別すればOKなのが便利っちゃ便利)

実験成功というか、機械に自動で問題を解かせるのは
命題をプログラムの処理的に解釈する翻訳の仕組みができてれば可能っていうのは
Naさんの貼ってくれたリンク先を見れば一目瞭然だと思いますけど。
アバター
RU-RA 2019/9/7 23:10 ◆WXDJqyOv9yBK
>ツララさん
いいんだもん!自力で解決するからやり甲斐があるんだもん!他のサイトになんかたよr((
...少し(?)口走ってしまいました。すいません。
ともかく、自力で解決しないと気がすまないのでこのまま継続で。

やはり文字列から解析しないとダメですかね...
一応考えてはいたけど、本当にやるとは...
まあ、やるだけやってみます。

>ドラキーマカレーさん
よーし!中1~3が揃ったぞ!
アバター
Na 2019/9/7 23:23 ◆QoELVrBXBQCI
INPUT "1つめの式のxの係数は?";A
INPUT "1つめの式のyの係数は?";B
INPUT "1つめの式の右辺は?";C
INPUT "2つめの(以下略
みたいにすればとりあえず入力は何とかなりそうです。
アバター
ツララ 2019/9/8 1:26 ◆ArUdBYOYME1V
式の変形まで自分でやっちゃうんならそのまま解いた方が早い気が・・・
そもそも引数を6つにすればいいだけですし・・・

文字列解析は例え当初の目的が達成できなくても、その過程で得るものは多いはずですから
やる意義は十分アリかと。ガンバレガンバレ♪(興味があるので私もガンバル)
というか、MMLとか音系のプログラム書いてる人は文字列解析も得意そうな感じするんですけど
実際どうなんでしょうかね?
アバター
ドラキーマカレー 2019/9/8 7:50 ◆3jIC4XsSXrZX
素因数分解のやつにtryしてみた。
簡単に説明すれば
「プレイヤーに素因数分解する値を入れてもらう。」
「その値を2で割り、その数を2で掛ける。」
「もし素因数分解する値と、2で割って2で掛けた値が
等しければ、変数A1〜A15にする。」
「2で割り、2で掛けた値が等しくない(割り切れてない)
なら、2を3にして、もう一度3で割って3で掛ける。(3でもダメなら
5、7...と、数を変える)」


しかし、問題は割る数。素数で割らないといけないからクソめんどくさい。
アバター
RU-RA 2019/9/8 8:24 ◆WXDJqyOv9yBK
>Naさん、ツララさん
めんどくさいので係数ごとに分けてDEFに解かせる形で作業をしようと思います。
>ドラキーマカレーさん
素数の命令とか追加されれば良いのですが...
アバター
Na 2019/9/8 9:12 ◆QoELVrBXBQCI
>ツララさん
文字列解析もやったことはあります。
"5+7*(11-9)"みたいな文字列から答えを出すやつ。
計算順序のルールがあるからすこし面倒です。
アバター
ツララ 2019/9/8 18:02 ◆ArUdBYOYME1V
素数を順番に導き出す関数を作るしか!
SmileBoom公式から追加されるの待ってるなんてらしくないですよ。
「1と、その数自身以外に約数を持たない自然数」
この条件を満たせばいいわけですからLet's try!
泥臭い方法だとFORループ使ってカウンタ変数をMODで余剰を調べながら、余剰がループの終了まで0にならなければ素数の判定はできそうですな。

DEF SOSUU(A)
 IF A<2 THEN RETURN -1
 VAR I
 FOR I=2 TO A-1
  IF !(A MOD I) THEN BREAK
 NEXT
 IF I<A THEN RETURN 0 ELSE RETURN 1
END

みたいな。
アバター
Na 2019/9/8 18:34 ◆QoELVrBXBQCI
>ドラキーマカレーさん
素数か判定しなくていい方法
・その値が2で割れれば、割れなくなるまで2で割る。
・同様に、その値をさらに3、4、5、...で割る。
・その値が1になるまで繰り返す。
・最後に何で何回割ったか表示する。
アバター
おちゃめ 2019/9/9 4:20 ◆jH1opV6FnGyx
x、yを含む2つの式を入力したら自動的に解を表示する連立方程式プログラムならば以前プチコン3号で作ったのでよかったら参考にしてみてください。
本来ならばパーサーを書く必要がありますが、私が考案したRVAL関数によってパーサー不要で式の値を求めることが可能です。

ちなみにプチコン3号で計算可能などんな複雑な式にも対応しており、計算結果は分数で表示してくれます。

公開キー【 QDVDDXXD 】
アバター
RU-RA 2019/9/9 7:22 ◆WXDJqyOv9yBK
おちゃめさんがプログラム出してくれたので

実験結果
プチコンで算数、数学の問題はプログラムで終わる。

ご協力、ありがとうございました。
アバター
ツララ 2019/9/10 10:23 ◆ArUdBYOYME1V
素因数分解のプログラム作ってて思いついたんですけど

【問題】
次の処理で生成される数値文字列(B$)を素因数分解するプログラムを作れ
FOR A=0 TO 31
B$=B$+STR$(RND(10-!A)+!A)
NEXT
なお、処理時間的に実現不可能っぽいならアルゴリズムだけでも示せ。

これ、RU-RAさん挑戦してみます?

あともう一つ思いついたのは
【問題】
2147483647以下の自然数で、1以外に2つの約数のみを持ち(つまり素数×素数となる数)
その約数の和が最大となる数を求めよ。
「そんなの余裕っち♪」であるなら二番目に大きな数も求めよ。
アバター
おちゃめ 2019/9/10 13:24 ◆jH1opV6FnGyx
「プチコンで算数、数学の問題はプログラムで終わる。」というのはある意味正しいですが、連立方程式でも素因数分解でも解き方を知らなければプログラムを作ることはできません。
私が作った連立方程式を解くプログラムも連立方程式の解き方を知らなければ作ることは不可能です。
したがって、いろいろなプログラムを作れるようになるためにはいろいろな知識を身に付ける必要があります。
アバター
ドラキーマカレー 2020/1/22 0:41 ◆3jIC4XsSXrZX
いまさら追記
素因数分解は中1に降格しました、はい。

コメントを書く

  • こちらは「プチコン3号」「プチコンBIG」など、プチコンシリーズに関する話題を扱ったコミュニティです
  • プチコンシリーズにまったく関係ない書き込みはご遠慮下さい。削除の対象となります
  • こちらにはその他のゲームや雑談のコミュニティはなく、作る予定もありません (ひとりで管理できないため)。ごめんなさい
  • ユーザー登録なしで書き込みができます
  • 秘密の合い言葉は成りすましの防止 (トリップ機能)、書き込みの編集時の本人認証に使用します
  • 秘密の合い言葉に他人に推測されやすい言葉、他サービスと同じパスワードは入力しないでください。
  • 書き込むと、投稿時に入力したお名前と秘密の暗号が記憶され、ログイン状態になります

- WEB PATIO -