« はいしゃ日記 |Main| jQuery勉強日記 »

« なんか日記 | Python | Djangoのキャッシュはすごいな日記 »

Re: 小町算

Karetta|キミならどう書く 2.0 - 2007 - その 2

想像以上にいっぱいあるなぁ。オリジナルの小町算は除算が整除じゃないからもっと正解の個数が少ないんだが…。

正解は303個。

1 123+45-67+8-9 == 100
2 123+45/6*7-8*9 == 100
3 123+4-5+67-89 == 100
4 123+4*5-6*7+8-9 == 100
5 123-45-67+89 == 100
6 123-4-5-6-78/9 == 100
7 123-4-5-6-7+8-9 == 100
8 123-4-5-6*7/8-9 == 100
9 123-4*5+6+7/8-9 == 100
10 123-4*5+6-7/8-9 == 100
11 123*4-56*7+8/9 == 100
12 123*4-56*7-8/9 == 100
13 123*4/5-6+78/9 == 100
14 123*4/5-6+7-8+9 == 100
15 123/4-5+678/9 == 100
16 123/4-5+6+78-9 == 100
17 123/4*5-67+8+9 == 100
18 12+34+5*6+7+8+9 == 100
19 12+34-5+67*8/9 == 100
20 12+34-5+6*7+8+9 == 100
21 12+34-5-6+7*8+9 == 100
22 12+34-5-6-7+8*9 == 100
23 12+34/5/6+78+9 == 100
24 12+3+4+5-6-7+89 == 100
25 12+3+4-56/7+89 == 100
26 12+3+4*5/6-7+89 == 100
27 12+3+4/5+6+7+8*9 == 100
28 12+3-4+5+67+8+9 == 100
29 12+3-4+5/67+89 == 100
30 12+3-4+5/6*7+89 == 100
31 12+3-4+5/6/7+89 == 100
32 12+3-4-5/67+89 == 100
33 12+3-4-5/6*7+89 == 100
34 12+3-4-5/6/7+89 == 100
35 12+3-4/5+6+7+8*9 == 100
36 12+3*45+6*7-89 == 100
37 12+3*4+5+6+7*8+9 == 100
38 12+3*4+5+6-7+8*9 == 100
39 12+3*4+5*6/7+8*9 == 100
40 12+3*4-5-6+78+9 == 100
41 12+3/45+6-7+89 == 100
42 12+3/4-5+6+78+9 == 100
43 12+3/4*5+6-7+89 == 100
44 12+3/4/5+6-7+89 == 100
45 12-3+4+5/6+78+9 == 100
46 12-3+4-5/6+78+9 == 100
47 12-3+4*5+6+7*8+9 == 100
48 12-3+4*5+6-7+8*9 == 100
49 12-3-4+5-6+7+89 == 100
50 12-3-4+5*6+7*8+9 == 100
51 12-3-4+5*6-7+8*9 == 100
52 12-3*4*5/6/7+89 == 100
53 12-3*4/5-6+7+89 == 100
54 12-3*4/5*6/7+89 == 100
55 12-3/45+6-7+89 == 100
56 12-3/4-5+6+78+9 == 100
57 12-3/4*5+6-7+89 == 100
58 12-3/4/5+6-7+89 == 100
59 12*34/5/6+78+9 == 100
60 12*3+456/7+8-9 == 100
61 12*3-4+5-6+78-9 == 100
62 12*3-4-5-6+7+8*9 == 100
63 12*3-4-5*6/7+8*9 == 100
64 12*3-4*5+67+8+9 == 100
65 12*3*4/5+67/8*9 == 100
66 12*3*4/5+6/7+8*9 == 100
67 12*3*4/5-6/7+8*9 == 100
68 12*3*4/5/6+7+89 == 100
69 12*3*4/5/6*7+8*9 == 100
70 12/3+4*5-6-7+89 == 100
71 12/3+4*5*6-7-8-9 == 100
72 12/3+4*5*6*7/8-9 == 100
73 12/3+4/56+7+89 == 100
74 12/3+4/5*6+7+89 == 100
75 12/3+4/5/6+7+89 == 100
76 12/3-4/56+7+89 == 100
77 12/3-4/5*6+7+89 == 100
78 12/3-4/5/6+7+89 == 100
79 12/3*4-5+6/7+89 == 100
80 12/3*4-5-6/7+89 == 100
81 12/3*4*5/6+78+9 == 100
82 12/3*4/5*6-7+89 == 100
83 12/3/4+5*6+78-9 == 100
84 1+234-56-7-8*9 == 100
85 1+234*5*6/78+9 == 100
86 1+234*5/6-7-89 == 100
87 1+234*5/6/7+8*9 == 100
88 1+234/5+6+7*8-9 == 100
89 1+23+45/6+78-9 == 100
90 1+23+4+5+67+8/9 == 100
91 1+23+4+5+67-8/9 == 100
92 1+23+4+5/67+8*9 == 100
93 1+23+4+5/6*7+8*9 == 100
94 1+23+4+5/6/7+8*9 == 100
95 1+23+4-5/67+8*9 == 100
96 1+23+4-5/6*7+8*9 == 100
97 1+23+4-5/6/7+8*9 == 100
98 1+23+4/5-6-7+89 == 100
99 1+23-4+56+7+8+9 == 100
100 1+23-4+56/7+8*9 == 100
101 1+23-4+5+678/9 == 100
102 1+23-4+5+6+78-9 == 100
103 1+23-4-5+6+7+8*9 == 100
104 1+23-4*5/6+7+8*9 == 100
105 1+23-4/5-6-7+89 == 100
106 1+23*4+567/8/9 == 100
107 1+23*4+56/7+8-9 == 100
108 1+23*4+56/7*8/9 == 100
109 1+23*4+5-6+78/9 == 100
110 1+23*4+5-6+7-8+9 == 100
111 1+23*4+5/6+7+8/9 == 100
112 1+23*4+5/6+7-8/9 == 100
113 1+23*4-5+6+7+8-9 == 100
114 1+23*4-5+6+7*8/9 == 100
115 1+23*4-5/6+7+8/9 == 100
116 1+23*4-5/6+7-8/9 == 100
117 1+23*4*5/6/7+89 == 100
118 1+23*4/5-6+78+9 == 100
119 1+23*4/5*6+7/8-9 == 100
120 1+23*4/5*6-7/8-9 == 100
121 1+23*4/5/6+7+89 == 100
122 1+23/4+5+6/7+89 == 100
123 1+23/4+5-6/7+89 == 100
124 1+2+345/6/7+89 == 100
125 1+2+34+56+7+8/9 == 100
126 1+2+34+56+7-8/9 == 100
127 1+2+34-5+67-8+9 == 100
128 1+2+34*5+6-7-8*9 == 100
129 1+2+34*5/6+78-9 == 100
130 1+2+34/5/6+7+89 == 100
131 1+2+3+45/6+78+9 == 100
132 1+2+3+4+5+6+7+8*9 == 100
133 1+2+3-45+67+8*9 == 100
134 1+2+3-4+5+6+78+9 == 100
135 1+2+3-4*5+6*7+8*9 == 100
136 1+2+3*4-5-6+7+89 == 100
137 1+2+3*4-5*6/7+89 == 100
138 1+2+3*4*56/7-8+9 == 100
139 1+2+3*4*5+6*7*8/9 == 100
140 1+2+3*4*5/6+78+9 == 100
141 1+2+3/4+56/7+89 == 100
142 1+2+3/4-5+6+7+89 == 100
143 1+2-3+4+5/6+7+89 == 100
144 1+2-3+4-5/6+7+89 == 100
145 1+2-3*4+5*6+7+8*9 == 100
146 1+2-3*4-5+6*7+8*9 == 100
147 1+2-3/4+56/7+89 == 100
148 1+2-3/4-5+6+7+89 == 100
149 1+2*345/67+89 == 100
150 1+2*34-56+78+9 == 100
151 1+2*34/5*67/8-9 == 100
152 1+2*3+4+5+67+8+9 == 100
153 1+2*3+4+5/67+89 == 100
154 1+2*3+4+5/6*7+89 == 100
155 1+2*3+4+5/6/7+89 == 100
156 1+2*3+4-5/67+89 == 100
157 1+2*3+4-5/6*7+89 == 100
158 1+2*3+4-5/6/7+89 == 100
159 1+2*3+4*5-6+7+8*9 == 100
160 1+2*3+4*5/6*7+8*9 == 100
161 1+2*3+4/5+6+78+9 == 100
162 1+2*3-4+56/7+89 == 100
163 1+2*3-4-5+6+7+89 == 100
164 1+2*3-4*5/6+7+89 == 100
165 1+2*3-4/5+6+78+9 == 100
166 1+2*3*4*5/6+7+8*9 == 100
167 1+2*3/4+5+6+78+9 == 100
168 1+2*3/4*5*6+78-9 == 100
169 1+2/34+5*6+78-9 == 100
170 1+2/3+4+5-6+7+89 == 100
171 1+2/3+4+5*6+7*8+9 == 100
172 1+2/3+4+5*6-7+8*9 == 100
173 1+2/3+4*5/6+7+89 == 100
174 1+2/3-4+56+7*8-9 == 100
175 1+2/3*4+5*6+78-9 == 100
176 1+2/3/4+5*6+78-9 == 100
177 1-23+4*5+6+7+89 == 100
178 1-23-4+5*6+7+89 == 100
179 1-23-4-5+6*7+89 == 100
180 1-2+34-5+67/8*9 == 100
181 1-2+34-5+6/7+8*9 == 100
182 1-2+34-5-6/7+8*9 == 100
183 1-2+34/5*6+7*8+9 == 100
184 1-2+34/5*6-7+8*9 == 100
185 1-2+3+45+6+7*8-9 == 100
186 1-2+3+4+5+6/7+89 == 100
187 1-2+3+4+5-6/7+89 == 100
188 1-2+3*45*67/89 == 100
189 1-2+3*45/6+7+8*9 == 100
190 1-2+3*4+5+67+8+9 == 100
191 1-2+3*4+5/67+89 == 100
192 1-2+3*4+5/6*7+89 == 100
193 1-2+3*4+5/6/7+89 == 100
194 1-2+3*4-5/67+89 == 100
195 1-2+3*4-5/6*7+89 == 100
196 1-2+3*4-5/6/7+89 == 100
197 1-2+3*4*5+6*7+8-9 == 100
198 1-2+3*4*5-6+7*8-9 == 100
199 1-2+3*4/5*6*7+8+9 == 100
200 1-2-34+56+7+8*9 == 100
201 1-2-3+45+67*8/9 == 100
202 1-2-3+45+6*7+8+9 == 100
203 1-2-3+45-6+7*8+9 == 100
204 1-2-3+45-6-7+8*9 == 100
205 1-2-3+4*56/7+8*9 == 100
206 1-2-3+4*5+67+8+9 == 100
207 1-2*3+4*5+6+7+8*9 == 100
208 1-2*3-4+5*6+7+8*9 == 100
209 1-2*3-4-5+6*7+8*9 == 100
210 1-2/34+5*6+78-9 == 100
211 1-2/3+4+5-6+7+89 == 100
212 1-2/3+4+5*6+7*8+9 == 100
213 1-2/3+4+5*6-7+8*9 == 100
214 1-2/3+4*5/6+7+89 == 100
215 1-2/3-4+56+7*8-9 == 100
216 1-2/3*4+5*6+78-9 == 100
217 1-2/3/4+5*6+78-9 == 100
218 1*234+5-67-8*9 == 100
219 1*234/56+7+89 == 100
220 1*234/56*7+8*9 == 100
221 1*23+4+56/7*8+9 == 100
222 1*23+4+5+67-8+9 == 100
223 1*23-4+5-6-7+89 == 100
224 1*23-4-56/7+89 == 100
225 1*23*4+56/7+8/9 == 100
226 1*23*4+56/7-8/9 == 100
227 1*23*4+5-6+7/8+9 == 100
228 1*23*4+5-6-7/8+9 == 100
229 1*23*4+5/6+78/9 == 100
230 1*23*4+5/6+7-8+9 == 100
231 1*23*4-56/7/8+9 == 100
232 1*23*4-5+6+7+8/9 == 100
233 1*23*4-5+6+7-8/9 == 100
234 1*23*4-5/6+78/9 == 100
235 1*23*4-5/6+7-8+9 == 100
236 1*23*4*5/6+7+8+9 == 100
237 1*23*4/5*6-78/9 == 100
238 1*23*4/5*6-7+8-9 == 100
239 1*23/4+5-6+7+89 == 100
240 1*23/4+5*6+7*8+9 == 100
241 1*23/4+5*6-7+8*9 == 100
242 1*23/4*5+678/9 == 100
243 1*23/4*5+6+78-9 == 100
244 1*23/4*5/6+7+89 == 100
245 1*23/4*5/6*7+8*9 == 100
246 1*2+34+56+78/9 == 100
247 1*2+34+56+7-8+9 == 100
248 1*2+34+5+67*8/9 == 100
249 1*2+34+5+6*7+8+9 == 100
250 1*2+34+5-6+7*8+9 == 100
251 1*2+34+5-6-7+8*9 == 100
252 1*2+34-56/7+8*9 == 100
253 1*2+34*5+6/7-8*9 == 100
254 1*2+34*5-67/8*9 == 100
255 1*2+34*5-6/7-8*9 == 100
256 1*2+3+45+67-8-9 == 100
257 1*2+3+4*5+678/9 == 100
258 1*2+3+4*5+6+78-9 == 100
259 1*2+3-4+5*6+78-9 == 100
260 1*2+3*45-6*7*8/9 == 100
261 1*2+3*45*6/7-8-9 == 100
262 1*2+3*4+5-6+78+9 == 100
263 1*2+3/4+5+6+78+9 == 100
264 1*2-3+4+56/7+89 == 100
265 1*2-3+4-5+6+7+89 == 100
266 1*2-3+4*5-6+78+9 == 100
267 1*2-3/4+5+6+78+9 == 100
268 1*2*34+56-7-8-9 == 100
269 1*2*34+5*67/8-9 == 100
270 1*2*34-5+6*7*8/9 == 100
271 1*2*34/5*6/7+89 == 100
272 1*2*3+45/6+78+9 == 100
273 1*2*3+4+5+6+7+8*9 == 100
274 1*2*3-45+67+8*9 == 100
275 1*2*3-4+5+6+78+9 == 100
276 1*2*3-4*5+6*7+8*9 == 100
277 1*2*3*4+5+6+7*8+9 == 100
278 1*2*3*4+5+6-7+8*9 == 100
279 1*2*3*4+5*6/7+8*9 == 100
280 1*2*3*4-5-6+78+9 == 100
281 1*2*3/4+5*6+78-9 == 100
282 1*2/3+4+5/6+7+89 == 100
283 1*2/3+4-5/6+7+89 == 100
284 1/23+4+5/6+7+89 == 100
285 1/23+4-5/6+7+89 == 100
286 1/2+34+56-7+8+9 == 100
287 1/2+34-5+6+7*8+9 == 100
288 1/2+34-5+6-7+8*9 == 100
289 1/2+34-5*6+7+89 == 100
290 1/2+3+45+6*78/9 == 100
291 1/2+3+4+5+6-7+89 == 100
292 1/2+3+4+5*6/7+89 == 100
293 1/2+3*4-5+6+78+9 == 100
294 1/2-34-5+67+8*9 == 100
295 1/2-3+45/6+7+89 == 100
296 1/2-3+4+5*6+78-9 == 100
297 1/2-3-4+5+6+7+89 == 100
298 1/2-3*4+5*6-7+89 == 100
299 1/2-3*4/5+6+7+89 == 100
300 1/2*3+4+5/6+7+89 == 100
301 1/2*3+4-5/6+7+89 == 100
302 1/2/3+4+5/6+7+89 == 100
303 1/2/3+4-5/6+7+89 == 100
OPS = ["", "+", "-", "*", "/"]
EQ = "1_2_3_4_5_6_7_8_9 == 100"
count = 0

def dig(eq = EQ, level = 8):
    global count
    if level:
        for op in OPS:
            dig(eq.replace("_", op, 1), level - 1)

    elif eval(eq):
        count += 1
        print count, eq

dig()
ちなみに、最初に5**8を計算して、40万程度なので、高速化するより素直に書いた方が速いと判断、 書いて実行して70秒程度で解決。

しかし、まだトラックバックがないように見えたので解いてみたのだけども、トラックバックが表示されないみたいだなぁ。なんでだろう。

ググってみたら2個見つかった。そしてPythonの解答がすでにあることがわかったので2番目の問題を解く気が失せてしまった。see odz buffer


= とか言いながら作ってしまった。
from operator import add, mul, sub, div

def join(a, b):
    return a * 10 + b

OPS = {
    '+': add,
    '-': sub,
    '*': mul,
    '/': div,
    '' : join
}

EQ = "1_2_3_4_5_6_7_8_9 == 100"
count = 0

def dig(eq = "1", value = 1, next = 2):
    global count
    if next < 10:
        for opname, op in OPS.iteritems():
            dig(
                eq + opname + str(next),
                op(value, next),
                next + 1)

    elif value == 100:
        count += 1
        print count, eq

dig()

= 一般化バージョンまで作ってしまった。 下のコードのOPSって辞書が「表示、関数、実行順序」の3つの値のタプルになっていて、 ここを書き換えることで両方の問題を解ける。

下のコードは問題の前半を解くコードで、実行すると303個の解が表示される。一方、

from operator import add, mul, sub, div

def join(a, b):
    return a * 10 + b

# op_name, op_function, op_order
OPS = [
    ("", join, 0),
    ("+", add, 2),
    ("-", sub, 2),
    ("*", mul, 1),
    ("/", div, 1)]

EQ = "1_2_3_4_5_6_7_8_9 == 100"
count = 0

def dig(ops = [], level = 8):
    global count
    if level:
        for op in OPS:
            dig(ops + [op], level - 1)

    else:
        eq, result = evaluate(ops)
        if result == 100:
            count += 1
            print count, eq

def evaluate(ops):
    values = [None] + range(1, 10) + [None]
    
    eqstr = "1"
    i = 1
    for i, op in enumerate(ops):
        eqstr += op[0] + str(i + 2)

    priority = 0
    while priority < 3:
        for i, op in enumerate(ops):
            if op[2] == priority:
                values = values[:i + 1] +\
                    [op[1](values[i + 1], values[i + 2])] +\
                    values[i + 3:]
                del ops[i]
                break
        else:
            priority += 1

    return eqstr, values[1]

dig()
OPSを下のように書き換えると問題の後半の解が出せる。
OPS = [
    ("", join, 0),
    ("+", add, 1),
    ("-", sub, 1),
    ("*", mul, 1),
    ("/", div, 1)]
答えは156個。あれ、さっきのは144個だったけど…? 理由は簡単で、解が144個になるバージョンは、 joinの優先順位が他の演算子よりも高いことを見落としているから、
1/2/3/4+5+67-8-9
これの計算結果が100になる。 手計算してみるとわかるけど、これは55になる。 でもjoinの優先順位を高く設定していないと 5+67が(5+6)7になり、117-8-9で100になるわけだ。
= そしてこの「一般化バージョン」のいいところは evaluateの1行目を下のように書き換えるだけで 整除じゃないバージョンにできることだ。
    values = [None] + [float(x) for x in range(1, 10)] + [None]
本当は浮動小数点演算の誤差のからみがあるので、 有理数オブジェクトと有理数用の加減乗除の関数を用意する必要があるけど、 面倒なので省略。 下のような結果が出るようになる。
100 1/2*3/4*56+7+8*9
101 1/2/3*456+7+8+9
整除でないバージョンは前半が101個、後半が67個になるかな。 誤差が原因で多少変動するかも。でももうめんどくさくなった。

一応貼っておく。

1 123+45-67+8-9
2 123+4-5+67-89
3 123+4*5-6*7+8-9
4 123-45-67+89
5 123-4-5-6-7+8-9
6 12+34+5*6+7+8+9
7 12+34-5+6*7+8+9
8 12+34-5-6+7*8+9
9 12+34-5-6-7+8*9
10 12+3+4+5-6-7+89
11 12+3+4-56/7+89
12 12+3-4+5+67+8+9
13 12+3*45+6*7-89
14 12+3*4+5+6+7*8+9
15 12+3*4+5+6-7+8*9
16 12+3*4-5-6+78+9
17 12-3+4*5+6+7*8+9
18 12-3+4*5+6-7+8*9
19 12-3-4+5-6+7+89
20 12-3-4+5*6+7*8+9
21 12-3-4+5*6-7+8*9
22 12*3-4+5-6+78-9
23 12*3-4-5-6+7+8*9
24 12*3-4*5+67+8+9
25 12/3+4*5-6-7+89
26 12/3+4*5*6-7-8-9
27 12/3+4*5*6*7/8-9
28 12/3/4+5*6+78-9
29 1+234-56-7-8*9
30 1+234*5*6/78+9
31 1+234*5/6-7-89
32 1+23-4+56+7+8+9
33 1+23-4+56/7+8*9
34 1+23-4+5+6+78-9
35 1+23-4-5+6+7+8*9
36 1+23*4+56/7+8-9
37 1+23*4+5-6+7-8+9
38 1+23*4-5+6+7+8-9
39 1+2+34-5+67-8+9
40 1+2+34*5+6-7-8*9
41 1+2+3+4+5+6+7+8*9
42 1+2+3-45+67+8*9
43 1+2+3-4+5+6+78+9
44 1+2+3-4*5+6*7+8*9
45 1+2+3*4-5-6+7+89
46 1+2+3*4*56/7-8+9
47 1+2+3*4*5/6+78+9
48 1+2-3*4+5*6+7+8*9
49 1+2-3*4-5+6*7+8*9
50 1+2*34-56+78+9
51 1+2*3+4+5+67+8+9
52 1+2*3+4*5-6+7+8*9
53 1+2*3-4+56/7+89
54 1+2*3-4-5+6+7+89
55 1+2*3*4*5/6+7+8*9
56 1-23+4*5+6+7+89
57 1-23-4+5*6+7+89
58 1-23-4-5+6*7+89
59 1-2+3+45+6+7*8-9
60 1-2+3*4+5+67+8+9
61 1-2+3*4*5+6*7+8-9
62 1-2+3*4*5-6+7*8-9
63 1-2-34+56+7+8*9
64 1-2-3+45+6*7+8+9
65 1-2-3+45-6+7*8+9
66 1-2-3+45-6-7+8*9
67 1-2-3+4*56/7+8*9
68 1-2-3+4*5+67+8+9
69 1-2*3+4*5+6+7+8*9
70 1-2*3-4+5*6+7+8*9
71 1-2*3-4-5+6*7+8*9
72 1*234+5-67-8*9
73 1*23+4+56/7*8+9
74 1*23+4+5+67-8+9
75 1*23-4+5-6-7+89
76 1*23-4-56/7+89
77 1*23*4-56/7/8+9
78 1*2+34+56+7-8+9
79 1*2+34+5+6*7+8+9
80 1*2+34+5-6+7*8+9
81 1*2+34+5-6-7+8*9
82 1*2+34-56/7+8*9
83 1*2+3+45+67-8-9
84 1*2+3+4*5+6+78-9
85 1*2+3-4+5*6+78-9
86 1*2+3*4+5-6+78+9
87 1*2-3+4+56/7+89
88 1*2-3+4-5+6+7+89
89 1*2-3+4*5-6+78+9
90 1*2*34+56-7-8-9
91 1*2*3+4+5+6+7+8*9
92 1*2*3-45+67+8*9
93 1*2*3-4+5+6+78+9
94 1*2*3-4*5+6*7+8*9
95 1*2*3*4+5+6+7*8+9
96 1*2*3*4+5+6-7+8*9
97 1*2*3*4-5-6+78+9
98 1*2/3+4*5/6+7+89
99 1/2*34-5+6-7+89
100 1/2*3/4*56+7+8*9
101 1/2/3*456+7+8+9
1 123+45-67+8-9
2 123+4-5+67-89
3 123-45-67+89
4 123-45/6+78+9
5 123-4-5-6-7+8-9
6 12+3+4+5-6-7+89
7 12+3+4+5/6+7+89
8 12+3-4+5+67+8+9
9 12+3*4-56+7+89
10 12+3*4/5+6-7+89
11 12-3+4+5*6-7+8-9
12 12-3-4+5-6+7+89
13 12-3-4*5+6+78-9
14 12-3*4+56+7-8+9
15 12*3-4+5-6+78-9
16 12/3+4-5*6-7+89
17 12/3*4+5+6*7-89
18 1+23+4+5-6*7-89
19 1+23-4+56+7+8+9
20 1+23-4+5+6+78-9
21 1+23-4-5*6-7+8+9
22 1+23-4*5+6-7-8+9
23 1+23-4*5-6+7+8-9
24 1+2+34-5+67-8+9
25 1+2+3+4+5*6-7+8+9
26 1+2+3+4*5+67-8-9
27 1+2+3-4+5+6+78+9
28 1+2+3-4+5/6*78+9
29 1+2+3-4*5-6+7+89
30 1+2+3*4-5-6+78+9
31 1+2*3+4+5*6-7+8-9
32 1+2*3-4+5-6+7+89
33 1+2*3-4*5+6+78-9
34 1+2*3*4+56+7-8+9
35 1+2/3+4+5-6+7+89
36 1+2/3+4*5+6+78-9
37 1-2+3-4+5*6-7+89
38 1-2+3*4-5*6-7+89
39 1-2*3-4+5+6+7+89
40 1-2/3+4*5*6+7-8-9
41 1-2/3-4+5*6+7+89
42 1*23+4+5+67-8+9
43 1*23-4+5-6-7+89
44 1*23-4+5/6+7+89
45 1*2+34+56+7-8+9
46 1*2+3+45+67-8-9
47 1*2+3*4+56+7+8+9
48 1*2+3*4+5+6+78-9
49 1*2+3*4-5*6-7+8+9
50 1*2+3*4*5+6-7-8+9
51 1*2+3*4*5-6+7+8-9
52 1*2-3+4-5+6+7+89
53 1*2-3+4*5*6-7+8+9
54 1*2*34+56-7-8-9
55 1*2*3+4+5*6-7+8+9
56 1*2*3+4*5+67-8-9
57 1*2*3-4+5+6+78+9
58 1*2*3-4+5/6*78+9
59 1*2*3-4*5-6+7+89
60 1*2*3*4-5-6+78+9
61 1*2/3/4+5*6+78-9
62 1/2+3-4+5*6*7-89
63 1/2+3*4+5-6+78+9
64 1/2+3*4*5+6+7+8+9
65 1/2-3*4/5+6+7+89
66 1/2*34-5+6-7+89
67 1/2/3*456+7+8+9

odz buffer - 小町算 #3。 まじめに有理数で計算すると後半の問題の答えが68個だって。僕のより1個多い。 差が出るのはこれ「1*2/3/4-5+6*78+9」。 浮動小数点数方式では100.00000000000003になってしまう。

トラックバック(Trackback)

Trackback URL: http://www.nishiohirokazu.org/mt/mt-tb.cgi/622

ご意見・ご感想をお送りください(フィードバック)

(フィードバックはメールで送信され、基本的に表示されませんが、内容によっては公開させていただくこともございます。ご了承ください。Your comment doesn't appear the page immediately. If the comment has value to other people, it will be put on the page or subsequent entries. Thank you.)

上の情報は、いずれも未記入でかまいません。 All of above questions are optional.