>>384
交換則が成り立つことに気付けば、順列でなく組み合わせで考えればよいから、スクリプトを高速化できる。
http://livedoor.blogimg.jp/scienceplus2ch/imgs/0/9/09198852.jpg
の問1は初期状態に関わらずゲームを終了させることができる例と思わる。

ド底辺特殊シリツ医卒が全員裏口であるのにちなんで、初期値がすべて裏であるときに全部表にしてゲーム終了にする手順をRに計算させてみる。

n=7
k=3
a=rep(0,7) #7枚全部裏のとき
f <- function(i){
re=i+0:(k-1)
re=re%%n
re[which(re==0)]=n
return(re)
}
g <- function(x) (x+1)%%2
h <- function(i,b){
idx=f(i)
b[idx]=g(b[idx])
return(b)
}
i <- function(v){
tmp=a
for(w in v){
tmp=h(w,tmp)
}
return(tmp)
}