人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

jamaicaで遊ぶことが多いのですが
プログラム?(VBS若しくは、javascript)で、
以下の条件のを作ってください

(例)
式 4 3 3=10 1 1 1 1 1 1=6
答え 4+3+3=10 1+1+1+1+1+1=6

みたいな感じです。
いわゆる穴埋めです。プログラムの最後にMSGBOX(VBSだったら)で表示するようお願いします。
答えをだすサイトはたくさんありますが、どういう仕組みなのか(子供でもわかるぐらいやさしく)教えてください。基本的にどんなプログラムでも良いですが、簡単なものでお願いします。まだ、初心者なもので・・・
ポイントをあまり持っていないため、回答5件までとさせて頂きます。コメントでの回答もお待ちしております。すいませんが宜しくお願いします。

●質問者: ?01?
●カテゴリ:コンピュータ 趣味・スポーツ
✍キーワード:Jamaica JavaScript VBS コメント サイト
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● garyo
●40ポイント

以前このような質問があったようです

http://q.hatena.ne.jp/1256711755

http://q.hatena.ne.jp/1256599368

◎質問者からの返答

早々の回答ありがとうございました。

233通りなんですね!

けれども、私はVBAのことについて分からないんです。これからは、人力検索の過去の質問を見るように心がけますね。


2 ● shujisi
●0ポイント

http://tool.stabucky.com/jamaica.htm

このページのソースを見ると、お探しのものが書いてありますね。

javascriptです。仕組みを(子供でもわかるぐらいやさしく)いうと、要するに総当りで計算して、黒サイコロの合計と同じ計算結果になったものだけを最後に出力するプログラムのようです。

「function seek_goal」のなかに、4重の入れ子になっているFor?Nextステートメントと、5重の入れ子になっているFor?Nextステートメントがありますね。

4重のほうですべての演算記号の順列をつくり、5重のほうですべての数値(白サイコロ)の順列を作り、それぞれ演算をしたけっかが黒サイコロの合計とおなじになるかどうかをチェックしています。プログラム自体の転記はマナー上できないのでご自身でサイトを見ながら検討していただければと思います。

プログラムのつくりも分かりやすく出来ていると思いますが、いかがですか?

◎質問者からの返答

実は、このサイトを前に拝見したのですがその時ソースの内容がどうなっているのか分からず困っていたのですが、Id:shujisiさんの回答で少し流れが分かりました。

ありがとうございました。

けれども、まだ分からないことがあるのでそれは自分で勉強することにします。(人力検索の意味が・・・)

本当にありがとうございました。


3 ● Galapagos
●40ポイント ベストアンサー

JavaScriptで書いてみました。下記のソースをHTMLでセーブして実行してみてください。

与えられた問題の空白部分に、順々に四則演算式を並べていき(重複を許す順列)、その計算結果をeval関数で判定しています。

<html lang="ja">
<head>
<script type="text/javascript">
<!--
var n, p;
var items;
var answer = '';
var tbl = new Array('+', '-', '*', '/'); //使用する演算式

//正解をanswerに代入
function check() {
 var i;
 var e = items[0];
 for (i = 0; i < n; i++) {
 e = e + p[i] + items[i + 1];
 }
 e1 = e.replace('=', '=='); //JavaScriptでは等式は '==' なので置換
 //式を実行してみて正しければ代入
 if (eval(e1)) {
 answer = answer + e + '<br />';
 }
}

//重複を許す順列の生成
function rep_perm(pos) {
 var i;
 if (pos == n) {
 check();
 } else {
 for (i = 0; i < tbl.length; i++) {
 p[pos] = tbl[i];
 rep_perm(pos + 1);
 }
 }
}

//答えを探索
function search() {
 var q = document.getElementById('question').value;
 items = q.split(' '); //個々の要素に分解
 n = items.length - 1;
 p = new Array(n);
 rep_perm(0);
 document.getElementById('answer').innerHTML = answer;
}

//結果クリア
function cancel() {
 document.getElementById('answer').innerHTML = '';
}
-->
</script>
</head>
<body>
<form>
問題を入力してください:<br />
<input id="question" type="text" size="40" />
<input type="button" value="計算" onClick="search()" />
<input type="button" value="クリア" onClick="cancel()" />
</form>
<br />
結果は:<br />
<div id="answer" />
</body>
</html>
◎質問者からの返答

プログラム(JavaScript)の作成ありがとうございました。

とても、分かりやすく短かったのでビックリしました。(多少分からないのがありますが、そこは勉強します。)

実際に実行してみたのですが、『問題を入力して下さい』の入力場所への入力の仕方が最初はイマイチ良く分かりませんでした。

ですが、そのぐらいなら私でも修正できますので・・・

あとは、結果がなかった時に何も現れないのが気になりましたが、

回答ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ