裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

10 を作る(その 2)

2014年12月30日 | ブログラミング

10 を作る」の発展版 1158 で10 を 作れと... あんたは,ほんとに,「いい娘や」ねえ

とはいえ,汎用のプログラムを書く気にはならないので,少しだけ変更・追加

Expr = c("n1 %s (n2 %s (n3 %s n4))",
         "(n1 %s n2) %s (n3 %s n4)",
         "((n1 %s n2) %s n3) %s n4",
         "(n1 %s (n2 %s n3)) %s n4",
         "n1 %s ((n2 %s n3) %s n4)")
Op = c("+", "-", "*", "/")
Num = c(1, 1, 5, 8)
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")
        }
      }
    }
  }
}
library(e1071)
n = permutations(4)
for (i in 1:24) {
  Expr2 = gsub("n1", Num[n[i, 1]], Expr)
  Expr2 = gsub("n2", Num[n[i, 2]], Expr2)
  Expr2 = gsub("n3", Num[n[i, 3]], Expr2)
  Expr2 = gsub("n4", Num[n[i, 4]], Expr2)
  for (expr in Expr2) {
    Eval(expr)
  }
}

ダブルで出てくるが,解答は

8 / (1 - (1 / 5))

コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 乱数の実装を問題にする? | トップ | 属性相関係数 »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
昔の記事 (ra_fan_jp)
2014-12-31 18:34:12
http://r-statistics-fan.hatenablog.com/entry/2014/05/19/225518

昔の記事ですが、総当りで10を作ることの出来る全部の組合せを計算しました。並び替え許可の場合と、不許可の場合も計算しています。
返信する

コメントを投稿

ブログラミング」カテゴリの最新記事