Problem 116

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)