#Quiz 2####
#triangulo de pascal hasta 10

t.p <- function(n){
  t = list()
  t[[1]] = 1
  t[[2]] = c(1,1)
  for (i in 3:n) {
    t[[i]] = 1
    for (j in 2:i) {
      v = t[[i-1]][j] + t[[i-1]][j-1]
      t[[i]][j] = ifelse(!is.na(v), v, 1)
    }
  }
  return(list(lista = t,
              vector = unlist(t)))
}
(fin = t.p(10))
## $lista
## $lista[[1]]
## [1] 1
## 
## $lista[[2]]
## [1] 1 1
## 
## $lista[[3]]
## [1] 1 2 1
## 
## $lista[[4]]
## [1] 1 3 3 1
## 
## $lista[[5]]
## [1] 1 4 6 4 1
## 
## $lista[[6]]
## [1]  1  5 10 10  5  1
## 
## $lista[[7]]
## [1]  1  6 15 20 15  6  1
## 
## $lista[[8]]
## [1]  1  7 21 35 35 21  7  1
## 
## $lista[[9]]
## [1]  1  8 28 56 70 56 28  8  1
## 
## $lista[[10]]
##  [1]   1   9  36  84 126 126  84  36   9   1
## 
## 
## $vector
##  [1]   1   1   1   1   2   1   1   3   3   1   1   4   6   4   1   1   5
## [18]  10  10   5   1   1   6  15  20  15   6   1   1   7  21  35  35  21
## [35]   7   1   1   8  28  56  70  56  28   8   1   1   9  36  84 126 126
## [52]  84  36   9   1
t.p2 <- function(n, ...){
  t = list()
  tm = matrix(0,n,n)
  for (i in 1:n) {
    tm[i,1:i] = choose((i-1), 0:(i-1))
    t[[i]] = choose((i-1), 0:(i-1))
  }
  xy = expand.grid(1:n,1:n)
  xy$Var1[xy$Var2%%2==0] = xy$Var1[xy$Var2%%2==0]+0.5
  plot(xy, type = 'n',
       axes=F, ylab='', xlab='',
       main = 'Triangulo de Pascal')
  n = length(t)
  for (i in 1:n) {
    text(xy$Var1[(((n*i)-(n-1))+floor((i-1)/2)):((n*i)-floor(i/2))],
         xy$Var2[((n*i)-(n-1)):((n*i)-(i-1))],
         t[[n+1-i]], ...)
  }
  return(list(lista = t,
              matriz = tm))
}
(fin2 = t.p2(10, cex = 1))

## $lista
## $lista[[1]]
## [1] 1
## 
## $lista[[2]]
## [1] 1 1
## 
## $lista[[3]]
## [1] 1 2 1
## 
## $lista[[4]]
## [1] 1 3 3 1
## 
## $lista[[5]]
## [1] 1 4 6 4 1
## 
## $lista[[6]]
## [1]  1  5 10 10  5  1
## 
## $lista[[7]]
## [1]  1  6 15 20 15  6  1
## 
## $lista[[8]]
## [1]  1  7 21 35 35 21  7  1
## 
## $lista[[9]]
## [1]  1  8 28 56 70 56 28  8  1
## 
## $lista[[10]]
##  [1]   1   9  36  84 126 126  84  36   9   1
## 
## 
## $matriz
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
##  [1,]    1    0    0    0    0    0    0    0    0     0
##  [2,]    1    1    0    0    0    0    0    0    0     0
##  [3,]    1    2    1    0    0    0    0    0    0     0
##  [4,]    1    3    3    1    0    0    0    0    0     0
##  [5,]    1    4    6    4    1    0    0    0    0     0
##  [6,]    1    5   10   10    5    1    0    0    0     0
##  [7,]    1    6   15   20   15    6    1    0    0     0
##  [8,]    1    7   21   35   35   21    7    1    0     0
##  [9,]    1    8   28   56   70   56   28    8    1     0
## [10,]    1    9   36   84  126  126   84   36    9     1