challenge 小町算

古典的なパズルである小町算を解くプログラムを作成してください。

小町算とは:

1□2□3□4□5□6□7□8□9=100

四角の中に、空白、+、-、×、÷のいずれかを一つ入れ、等式が成り立つようにするパズルです。

解答例:

1-2-3+4×56÷7+8×9=100

1+234×5÷6-7-89=100

参考: http://ja.wikipedia.org/wiki/%E5%B0%8F%E7%94%BA%E7%AE%97

  • evalやそれに類するものを使うか否かは自由です。
  • 割り算の際には小数点以下の切捨てが起こらないのが望ましいです。(必須ではない)
    • 切捨てが起こる場合の解答例:1÷2÷3+4+5÷6+7+89=100
  • 余裕があれば括弧を含むようにしてもいいかもしれません。

手元で20数行ほどのPythonスクリプトを書いてみたところ、101個の解答が得られました。

Posted feedbacks - Groovy

重たすぎです。

1.java実行形式にコンパイル
2.combi.eachをfor文に書き換える

としたら何とか動くようになりました。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import static groovy.util.GroovyCollections.combinations
import groovy.util.Eval


def operations = ["", "+", "-", "*", "/"]

def combi = combinations((1..8).collect{ operations })

def eval = new Eval()
combi.each{ opes ->
    def text = "1${opes[0]}2${opes[1]}3${opes[2]}4${opes[3]}5${opes[4]}6${opes[5]}7${opes[6]}8${opes[7]}9"
    if( eval.me(text) == 100 ){
        println "${text} = 100"
    }
}

Index

Feed

Other

Link

Pathtraq

loading...