Problem 38

Problem 38 - Project Euler

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)
    }
  }
}

何の工夫もねぇ。まあ常識的な時間で終わるからいいだろ見たいな適当な考え。