toDigits <- function(n){ rev(floor(n/(10^(0:floor(log(n, 10)))))%%10) } toNum <- function(n){ n <- rev(n) num <- 0 for(i in 1:length(n)){ num <- num + n[i]*10^(i-1) } return(num) } limit <- 9999 max.pandigital <- 0 for(i in 1:limit){ n <- 1 cand <- numeric(0) while(length(cand) < 9){ cand <- c(cand, toDigits(i * n)) n <- n + 1 } if(length(cand)==9){ if(setequal(cand, 1:9)){ if(toNum(cand) > max.pandigital) max.pandigital <- toNum(cand) } } }
何の工夫もねぇ。まあ常識的な時間で終わるからいいだろ見たいな適当な考え。