# snakes.R # snakes and ladders # Build the transition matrix P P <- matrix(rep(0,101^2),nrow=101) r <- function(row,inp) for (i in 1:6) { P[row+1,inp[i]+1] <<- P[row+1,inp[i]+1] + 1/6 } r(0,c(38,2,3,14,5,6)) r(1,c(2,3,14,5,6,7)) r(2,c(3,14,5,6,7,8)) r(3,c(14,5,6,7,8,31)) r(4,c(5,6,7,8,31,10)) r(5,c(6,7,8,31,10,11)) r(6,c(7,8,31,10,11,12)) r(7,c(8,31,10,11,12,13)) r(8,c(31,10,11,12,13,14)) r(9,c(10,11,12,13,14,15)) r(10,c(11,12,13,14,15,6)) r(11,c(12,13,14,15,6,17)) r(12,c(13,14,15,6,17,18)) r(13,c(14,15,6,17,18,19)) r(14,c(15,6,17,18,19,20)) r(15,c(6,17,18,19,20,42)) r(16,c(17,18,19,20,42,22)) r(17,c(18,19,20,42,22,23)) r(18,c(19,20,42,22,23,24)) r(19,c(20,42,22,23,24,25)) r(20,c(42,22,23,24,25,26)) r(21,c(22,23,24,25,26,27)) r(22,c(23,24,25,26,27,84)) r(23,c(24,25,26,27,84,29)) r(24,c(25,26,27,84,29,30)) r(25,c(26,27,84,29,30,31)) r(26,c(27,84,29,30,31,32)) r(27,c(84,29,30,31,32,33)) r(28,c(29,30,31,32,33,34)) r(29,c(30,31,32,33,34,35)) r(30,c(31,32,33,34,35,44)) r(31,c(32,33,34,35,44,37)) r(32,c(33,34,35,44,37,38)) r(33,c(34,35,44,37,38,39)) r(34,c(35,44,37,38,39,40)) r(35,c(44,37,38,39,40,41)) r(36,c(37,38,39,40,41,42)) r(37,c(38,39,40,41,42,43)) r(38,c(39,40,41,42,43,44)) r(39,c(40,41,42,43,44,45)) r(40,c(41,42,43,44,45,46)) r(41,c(42,43,44,45,46,47)) r(42,c(43,44,45,46,47,26)) r(43,c(44,45,46,47,26,11)) r(44,c(45,46,47,26,11,50)) r(45,c(46,47,26,11,50,67)) r(46,c(47,26,11,50,67,52)) r(47,c(26,11,50,67,52,53)) r(48,c(11,50,67,52,53,54)) r(49,c(50,67,52,53,54,55)) r(50,c(67,52,53,54,55,53)) r(51,c(52,53,54,55,53,57)) r(52,c(53,54,55,53,57,58)) r(53,c(54,55,53,57,58,59)) r(54,c(55,53,57,58,59,60)) r(55,c(53,57,58,59,60,61)) r(56,c(57,58,59,60,61,19)) r(57,c(58,59,60,61,19,63)) r(58,c(59,60,61,19,63,60)) r(59,c(60,61,19,63,60,65)) r(60,c(61,19,63,60,65,66)) r(61,c(19,63,60,65,66,67)) r(62,c(63,60,65,66,67,68)) r(63,c(60,65,66,67,68,69)) r(64,c(65,66,67,68,69,70)) r(65,c(66,67,68,69,70,91)) r(66,c(67,68,69,70,91,72)) r(67,c(68,69,70,91,72,73)) r(68,c(69,70,91,72,73,74)) r(69,c(70,91,72,73,74,75)) r(70,c(91,72,73,74,75,76)) r(71,c(72,73,74,75,76,77)) r(72,c(73,74,75,76,77,78)) r(73,c(74,75,76,77,78,79)) r(74,c(75,76,77,78,79,100)) r(75,c(76,77,78,79,100,81)) r(76,c(77,78,79,100,81,82)) r(77,c(78,79,100,81,82,83)) r(78,c(79,100,81,82,83,84)) r(79,c(100,81,82,83,84,85)) r(80,c(81,82,83,84,85,86)) r(81,c(82,83,84,85,86,24)) r(82,c(83,84,85,86,24,88)) r(83,c(84,85,86,24,88,89)) r(84,c(85,86,24,88,89,90)) r(85,c(86,24,88,89,90,91)) r(86,c(24,88,89,90,91,92)) r(87,c(88,89,90,91,92,73)) r(88,c(89,90,91,92,73,94)) r(89,c(90,91,92,73,94,75)) r(90,c(91,92,73,94,75,96)) r(91,c(92,73,94,75,96,97)) r(92,c(73,94,75,96,97,78)) r(93,c(94,75,96,97,78,99)) r(94,c(75,96,97,78,99,100)) r(95,c(96,97,78,99,100,95)) r(96,c(97,78,99,100,96,96)) r(97,c(78,99,100,97,97,97)) r(98,c(99,100,98,98,98,98)) r(99,c(100,99,99,99,99,99)) r(100,c(100,100,100,100,100,100)) init <- c(1,rep(0,100)) ## simulate the game markov(init,P,50,0:100) simlist <- replicate(1000,which(markov(init,P,500,0:100) == 100)[1]) mean(simlist) # fundamental matrix f <- solve(diag(100) - M[1:100,1:100]) ## absorbtion probabilities f %*% rep(1,100)