18/10/26 00:02:56.11 +rLvZj8m.net
>>779
数学板で2つの宝を先に発見した方を勝者にしたらどうなるかというレスがあったのでプログラムを改変してみた。
treasure2 <- function(m=3,n=4,k=2){
y=1:(m*n)
(z=matrix(y,ncol=n,byrow=T))
(P=as.vector(z))
(Q=as.vector(t(z)))
PQ <- function(x){
p=q=numeric(k)
for(i in 1:k){
p[i]=which(P==x[i])
q[i]=which(Q==x[i])
}
max(p)-max(q)
}
tre=combn(m*n,k)
re=apply(tre,2,PQ)
print(c(P1st=sum(re<0),Q1st=sum(re>0),even=sum(re==0)))
invisible(list(P1st=tre[,which(re<0)],Q1st=tre[,which(re>0)],even=tre[,which(re==0)]))
}
t342=treasure2(3,4,2)
#短軸方向探索Pが先に2つの宝を発見する埋め方
print(matrix(LETTERS[t342$P1st],nrow=2),quote=F)
#長軸方向探索Qが先に2つの宝を発見する埋め方
print(matrix(LETTERS[t342$Q1st],nrow=2),quote=F)
#同時に2つめの宝を発見する埋め方
print(matrix(LETTERS[t342$even],nrow=2),quote=F)