9 を 4 個使って,+, -, *, / の演算子を適当に使って,かっこも適当に使って演算結果を 10 にせよ。
全ての数を対象にしないので,以下のように適当にプログラムすればよい。
余計な括弧もあるけど,間違いじゃないし。
実行時間は 0.050 秒なので最適化する必要もない。
Expr = c("9%s(9%s(9%s9))",
"(9%s9)%s(9%s9)",
"((9%s9)%s9)%s9",
"(9%s(9%s9))%s9",
"9%s((9%s9)%s9)")
Op = c("+", "-", "*", "/")
Eval = function(Expr) {
for (i in Op) {
for (j in Op) {
for (k in Op) {
s = sprintf(Expr, i, j, k)
a = eval(parse(text=s))
if (!is.na(a) && a == 10) {
cat(s, "\n")
}
}
}
}
}
for (expr in Expr) {
Eval(expr)
}
((9*9)+9)/9
(9+(9*9))/9