インド式算数パズル解答のソースコードを教えてください。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
elcondor

インド式算数パズル解答のソースコードを教えてください。

#1

投稿記事 by elcondor » 15年前

C言語、アルゴリズム・プログラミングの質問です。

下記の10×10のパズル(インド式算数パズル)を解くプログラミング(C)の以下のアルゴリズムから成るソースコードを教えてください。よろしくお願いします。

S*8S4=1SW6
+WWWSWWWW+
S*SS2=5SWS
5W+W*WW*WS
*W9WS1SS*9
SW=W=WW/W=
SW1W6WW4W6
3WS+SS9S4S
SWWWWWW1W/
1W8=S+1S/S

縦・横に各式が成立するように、Sに0~9の整数、もしくは +-/*= 、の演算子、等号を入れます。
なお、Wには何も入らず式を分断します。

↓アルゴリズム

式を計算する関数②を作る
計算に成功し、二つの式の結果を比較し一致したらTRUEを返す
計算に成功し、二つの式の結果を比較し一致しなかったらFALSEを返す
計算に失敗したらFALSEを返す
※式の計算には四則演算の優先度を意識すること(掛け算を足し算より先に行う)

式が入る構造体を作る
文字のポインタの配列[10]
関係する式の構造体のポインタのリスト
〔実装〕
1.1 文字の配列[10][10]を作り、パズルを代入
1.2 【式の構造体】に値を代入していく
この時点で、【式の構造体】には《文字のポインタの配列》と《関係する式の構造体のポインタのリスト》を入れる
無限ループにならないように《関係する式の構造体のポインタ》は一意にする
式を見つけたら、関係する式を探し、見つけたら、その式の【式の構造体】を作り、そのポインタを《関係する式の構造体のポインタのリスト》に入れる
そして、関係する式の関係する式を探す。
1.3 一番最初の【式の構造体】を関数①に渡す
1.4 結果がTRUEならパズルの結果を出力する

関数①
2.1 【式の構造体】から数式文字列を読み込む
2.2 ループで全パターンの文字をSに入れる
2.2.1 関数②に数式文字列を送る
2.2.2 結果がTRUEならループで《関係する式の構造体のポインタのリスト》を全て参照する
2.2.2.1 その【式の構造体】を関数①へ送る
2.2.2.2 結果がFALSEなら2.2.2のループを抜ける
2.2.3 2.2.2のループ条件がFALSEなら(ループ条件で終了したなら)TRUEをreturnする
2.3 2.2のループがFALSEならFALSEをreturnする

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: インド式算数パズル解答のソースコードを教えてください。

#2

投稿記事 by softya(ソフト屋) » 15年前

学校の課題でしょうか?
この掲示板は、宿題のお手伝いをさせて頂くのがコンセプトとなっている掲示板で、今後も長くC言語を理解して楽しく学習してほしいなって思っております。
なので問題を解くのはあくまでもelcondorさんとなります。
詳しくは、フォーラムルールに書かれています。 http://dixq.net/board/board.html
上記ルールをお読み頂いて、フォーラムルールにありますテンプレートに従って記入をお願いします。

それとここまで分かっているのなら、もうコードがするだけだと思うのですが何処が分からないのでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る