23/07/09 20:29:13.60 e2sPptih.net
再帰プログラムでの総列挙の練習
(while loopを使った方が速かったが)
サイコロを6回振り、出た目をノートに記録する。
記録されうるデータを列挙する。
g <- function(num, N, digit){
if(num <= 0 & digit <= 0) return()
else{
return(c(g(num%/%N, N ,digit-1), num%%N))
}
}
d=NULL
for (i in 0:(6^6-1)){
d=rbind(d,g(i,6,6)+rep(1,6))
}
head(d,10)
tail(d,10)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 1 1 1 1 1
[2,] 1 1 1 1 1 2
[3,] 1 1 1 1 1 3
[4,] 1 1 1 1 1 4
[5,] 1 1 1 1 1 5
[6,] 1 1 1 1 1 6
[7,] 1 1 1 1 2 1
[8,] 1 1 1 1 2 2
[9,] 1 1 1 1 2 3
[10,] 1 1 1 1 2 4
[,1] [,2] [,3] [,4] [,5] [,6]
[46647,] 6 6 6 6 5 3
[46648,] 6 6 6 6 5 4
[46649,] 6 6 6 6 5 5
[46650,] 6 6 6 6 5 6
[46651,] 6 6 6 6 6 1
[46652,] 6 6 6 6 6 2
[46653,] 6 6 6 6 6 3
[46654,] 6 6 6 6 6 4
[46655,] 6 6 6 6 6 5
[46656,] 6 6 6 6 6 6