分からない問題はここ ..
[2ch|▼Menu]
667:132人目の素数さん
20/01/24 14:24:18 hf8Gpc9I.net
>>642
6人から3人選ぶより、6人から5人選ぶ方が組み合わせが少ないから計算時間は短かった。

c2=gtools::combinations(6,2) # 6人の2人選ぶ組み合わせ 15通り
p15=gtools::permutations(2,15,0:1,re=T) # 15通りが知り合い(1)か否(0)か 2^15通り
c5=gtools::combinations(6,5) ; # 6人から5人を選ぶ組み合わせ 6通り

ramsey <- function(x){
(acq=c2[x==1,]) # 知り合いの組み合わせ
if(is.null(nrow(acq))) acq=t(as.matrix(acq))
is5acq=FALSE
nr=nrow(c5)
for(i in 1:nr){
j1=which(c5[i,1] == acq[,1])
j2=which(c5[i,2] == acq[,1])
j3=which(c5[i,3] == acq[,1])
j4=which(c5[i,4] == acq[,1])
j5=which(c5[i,5] == acq[,1])
aq1=acq[c(j1,j2,j3,j4,j5),2]
j1=which(c5[i,1] == acq[,2])
j2=which(c5[i,2] == acq[,2])
j3=which(c5[i,3] == acq[,2])
j4=which(c5[i,4] == acq[,2])
j5=which(c5[i,5] == acq[,2])
aq2=acq[c(j1,j2,j3,j4,j5),1]
su=sort(unique(c(aq1,aq2))) 
is5acq=all(c5[i,] %in% su)
if(is5acq) break
}
if(is5acq) return(1)

(acq=c2[x==0,]) # 他人の組み合わせ
if(is.null(nrow(acq))) acq=t(as.matrix(acq))
is5acq=FALSE
nr=nrow(c5)
for(i in 1:nr){
j1=which(c5[i,1] == acq[,1])
j2=which(c5[i,2] == acq[,1])
j3=which(c5[i,3] == acq[,1])
j4=which(c5[i,4] == acq[,1])
j5=which(c5[i,5] == acq[,1])
aq1=acq[c(j1,j2,j3,j4,j5),2]
j1=which(c5[i,1] == acq[,2])
j2=which(c5[i,2] == acq[,2])
j3=which(c5[i,3] == acq[,2])
j4=which(c5[i,4] == acq[,2])
j5=which(c5[i,5] == acq[,2])
aq2=acq[c(j1,j2,j3,j4,j5),1]
su=sort(unique(c(aq1,aq2))) 
is5acq=all(c5[i,] %in% su)
if(is5acq) break
}
if(is5acq) return(-1)
return(0)
}
> sum(apply(p15,1,ramsey)==0)
[1] 0


次ページ
続きを表示
1を表示
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

1561日前に更新/333 KB
担当:undef