table は高くつくので以下のようにすれば十数倍速くなる。だが,まだまだ時間が掛かりすぎる。
func = function(s) {
options(scipen=100)
s = as.integer(unlist(strsplit(s, ",")))
m = s[1]-1
n = s[2]
for (i in m:1) {
a = as.integer(strsplit(as.character(i), "")[[1]])
y = integer(10)
y[a+1] = 1
if (sum(y) == length(a)) {
b = strsplit(as.character(i^n), "")[[1]]
if (!any(b %in% a)) return(i)
}
}
return("-")
}