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

4つの数字を、四則演算「+」「?」「×」「÷」を使って、
10になるか、ならないかのアルゴリズムを知っている人がいたら、
教えてください。
(÷で余りが出る場合は、NGとする)

簡単に言うと、
電車の切符の4つの数字で、
10にするときのアルゴリズムを知りたいと思っています。
よろしくおねがいしますm(_ _)m

●質問者: hiyarihatto
●カテゴリ:コンピュータ インターネット
✍キーワード:アルゴリズム 切符 数字 演算 電車
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● sushi0
●27ポイント

python:計算パズルとpython - 清水川Web

http://www.freia.jp/taka/blog/28

perl:4桁の数字を10にする証明 - めも日記

http://www.noppi.jp/diary/?date=20040828#p02

C++ : 4けたの数字を10にするプログラム in C++版・もけっけさんの本 Part3 - めも日記

http://www.noppi.jp/nicky/nicky.cgi?DT=20040829A#20040829A

Oracle, .net:4 つの数字から四則演算のみで 10 を作る方法 [テンパズル]

http://blogs.wankuma.com/jeanne/archive/2006/09/19/39079.aspx

ruby:切符問題 - バリケンのRuby日記

http://rubyist.g.hatena.ne.jp/muscovyduck/20060909

Scheme:Island life

http://www.lava.net/~shiro/Private/diary/0112.html

早稲田大学の課題 - 切符の番号で10を作る -

課題 http://www.kashi.info.waseda.ac.jp/~kashi/lec1999/jsj99/make10.h...

レポート http://www.kashi.info.waseda.ac.jp/~kashi/lec1999/jsj99/rep2/

とりあえず検索で引っかかったところで、中身は読んでないのですが、

このあたりを参考にされてはいかがでしょうか。


2 ● kmon
●27ポイント

以下に説明するアルゴリズムは、M.Hiroiさんのホームページで昔読んだものです。(今確認のために見に行ったところ、該当のページが見つかりませんでした。トップページのアドレスを最後に書いておきます。)

ここでは、数字4桁を与えられたとして、可能性のある式を総当たりで生成して、実際に10になる式を見つけることになります。


  1. 4桁の数字を収める変数を、n1, n2, n3, n4 とします。
  2. 演算子(「+」「?」「×」「÷」のどれか1つ)を収める変数を3つ用意します。各々k1, k2, k3とします。
  3. 7つの変数を、n1, k1, n2, k2, n3, k3, n4という順番に並べて1つの式を生成します。(例えば、(n1, n2, n3, n4)=( 1, 2, 3, 3), (k1, k2, k3)=(+, -, *)とすると、"1+2-3*3"という式が生成されます。)
  4. 生成した式を実際に計算し、結果が10になるものだけ表示します。(計算する部分は途中まで分数で計算しておいて、最後約分するようにします。整数にならなければアウトですので、次に行きます。)
  5. 2.から4. までを演算子の組み合わせ分繰り返します。

補足:

・先頭の数字の前に、単項演算子のマイナスを許す場合は、演算子を収める変数を1つ増やします。

・数字の合体(2,2と並んだら「22」と読むこと)を認める場合は、演算子に特殊な記号のものを付け加えて、式を計算するときに対応します。


M.Hiroi's Home Page:

http://www.geocities.jp/m_hiroi/

◎質問者からの返答

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

この場合ですと、( )の計算はロジックに含まれていなそうですが、参考になりました


3 ● きゃづみぃ
●26ポイント

大きな外枠のループとして1から9まで 9回ループさせます。

それから1から4で 3重ループさせます。

そのループの値が

1のときは「+」

2のときは「×」

3のときは「?」

4のときは「÷」

で計算させ、その結果が 10だったら、それを解答とします。

エクセルのVBAで作ってみました。

これで11、解答が出ました。

Sub Macro1()
d = 1
For a = 1 To 9
 For c1 = 1 To 4
 For c2 = 1 To 4
 For c3 = 1 To 4
 Select Case c1
 Case 1
 b = a + a
 Case 2
 b = a * a
 Case 3
 b = a - a
 Case 4
 b = a / a
 End Select
 
 Select Case c2
 Case 1
 b = b + a
 Case 2
 b = b * a
 Case 3
 b = b - a
 Case 4
 b = b / a
 End Select
 
 Select Case c3
 Case 1
 b = b + a
 Case 2
 b = b * a
 Case 3
 b = b - a
 Case 4
 b = b / a
 End Select
 
 If b = 10 Then
 Cells(d, "A") = a
 Cells(d, "B") = Mid("+×?÷", c1, 1)
 Cells(d, "C") = a
 Cells(d, "D") = Mid("+×?÷", c2, 1)
 Cells(d, "E") = a
 Cells(d, "F") = Mid("+×?÷", c3, 1)
 Cells(d, "G") = a
 d = d + 1
 
 End If
 
 Next c3
 Next c2
 Next c1
Next a
End Sub
関連質問


●質問をもっと探す●



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