Problem 114, 115と似た様な問題.長さ50のユニットに長さ2,3,4のタイルを入れるパターンが何通りあるのかを求める.タイルの間は開いている必要はないが,最低1枚のタイルを入れる必要があり,違う長さのタイルを混ぜて使うことはできない.
Problem 114, 115とほとんど同じやり方が通用するので簡単だった.4ms.
## 列の長さをn+1にしたときのパタン n.plus <- function(tile, m, n = 50){ tile.new <- numeric(n+1) tile.new[1] <- sum(tile[m:(n+1)]) tile.new[2:(n+1)] <- tile[1:n] return(tile.new) } ## 長さnの列に長さmのタイルを敷き詰めるパタン pattern <- function(n, m){ tile <- numeric(n+1) tile[2] <- 1 for(i in 2:n) tile <- n.plus(tile, m, n) sum(tile) -1 } pattern(50, 2) + pattern(50, 3) + pattern(50, 4)