謹賀新年(2017年) 覆面算
http://quiz-tairiku.com/q.cgi?mode=view&no=18773
(1) きんが + しんねん = 2017 となり,2, 0, 1, 7 をすべて含むもの
(2) とりにく + とりにく + … + とりにく = やきとり
すなわち,n(とりにく) = やきとり
となり,解に 2, 9 両方が含まれるもの
----------------------------------------
f = function(x) {
library(e1071)
a = permutations(5)
a = apply(a, 1, function(y) c(2, 0, 1, 7, x)[y])
きんが = 10^(2:0) %*% a[c(1, 2, 3), ]
しんねん = 10^(3:0) %*% a[c(4, 2, 5, 2), ]
ans = きんが + しんねん == 2017
if (any(ans)) {
cat(sprintf("%6d\n+%5d\n------\n%6d\n", きんが[ans], しんねん[ans], 2017))
}
}
for (x in c(3:6, 8, 9)) {
f(x)
}
270
+ 1747
------
2017
g = function() {
library(e1071)
a = data.frame(permutations(10) - 1)
a = as.matrix(unique(a[a[, 1] != 0 & a[, 5] != 0, 1:6]))
w = 10^(3:0)
とりにく = a[, c(1:4)] %*% w
やきとり = a[, c(5, 6, 1, 2)] %*% w
for (i in seq_along(とりにく)) {
ans = which(1:9 * とりにく[i] == やきとり[i])
if (any(ans) && # n 「とりにく」 = 「やきとり」
ans %in% a[i, ] == FALSE && # ただし,n は「とりにくやき」に含まれない
all(c(2, 9) %in% c(a[i, ], ans))) { # また,2, 9 を含む
cat(sprintf("\n%6d\nx%5d\n------\n%6d\n", とりにく[i], ans, やきとり[i]))
}
}
}
g()
答えは一意に決まると書いてあいるが,そうではないようだ(やはり,「適切な」総当たりというのは必要)
1402 これを唯一の解としているが
x 7
------
9814
1809 他にも 4 通りの解がある
x 2
------
3618
1859
x 2
------
3718
3819
x 2
------
7638
2709
x 3
------
8127