LoginSignup
2
2

More than 5 years have passed since last update.

クイズ

Posted at

問題

0829.png

回答

1個塗るとき、白マス8個の前後と間計9か所に、黒マスを1個入れればよい。
$$\binom{9}{1}=9$$
2個塗るとき、白マス7個の前後と間計8か所に、黒マスを2個入れればよい。
$$\binom{8}{2}=28$$
k個塗るとき、白マス9-k個の前後と間計9-k+1か所に、黒マスをk個入れればよい。
$$\binom{10-k}{k}$$

黒マス 白マス 通り数
1 8 9
2 7 28
3 6 35
4 5 15
5 4 1
Total 88

Rで検証してみよう

> event.all <- expand.grid( c(0,1), c(0,1), c(0,1), c(0,1), c(0,1), c(0,1), c(0,1), c(0,1), c(0,1) )
> # 白か黒か、白は0 黒は1
> exam <- matrix( 0, nrow(event.all), ncol(event.all)-1 )
> for ( i in 1:(ncol(event.all)-1) ) {
+   exam[,i] <- event.all[,i] * event.all[,i+1]
+ }
> # 隣の列と掛け算をする。黒マスが連続出る場合、積が1となる。連続でない場合、積が0となる。

> sum( apply(exam, 1, sum) == 0 ) - 1
[1] 88
> # 積の和が0であれば、連続に塗られていない。値が0である数kは全通りの数である。少なくとも1つの黒マスを塗るので、k-1は答えとなる。

コード

code.r
event.all <- expand.grid( c(0,1), c(0,1), c(0,1), c(0,1), c(0,1), c(0,1), c(0,1), c(0,1), c(0,1) )
# 白か黒か、白は0 黒は1

exam <- matrix( 0, nrow(event.all), ncol(event.all)-1 )

for ( i in 1:(ncol(event.all)-1) ) {
  exam[,i] <- event.all[,i] * event.all[,i+1]
}
# 隣の列と掛け算をする。黒マスが連続出る場合、積が1となる。連続でない場合、積が0となる。

sum( apply(exam, 1, sum) == 0 ) - 1
# 積の和が0であれば、連続に塗られていない。値が0である数kは全通りの数である。少なくとも1つの黒マスを塗るので、k-1は答えとなる。
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2