棋子颜色问题
在任意拿出黑白两种颜色的棋子共n个,随机排成一个圆圈。然后在两颗颜色相同的棋子中间放一颗黑色棋子,在两颗颜色不同的棋子中间放一颗白色棋子,放完后撤掉原来所放的棋子,再重复以上的过程,问这样重复进行下去各棋子的颜色会怎样变化呢?
-
分析与求解:
在两颗同色棋子中放一颗黑色棋子,两颗不同色的棋子中间放
一颗白色棋子。采用什么符号表示白色和黑河呢?
因为-1×(-1)=1,1×1=1,故可将黑色棋子用1表示
因为1×(-1)= -1,白色棋子用-1表示。
-
结论:当棋子数为2n时,至多经过2n次操作,就可以全部变为黑子,当棋子数不为2n时则一般不能全变为黑子.
-
matlab模拟:
% 1--黑子 -1--白子
n=128; %棋子个数
times=128; %操作次数
x=zeros(1,n); %操作前的状态 %利用zeros函数产生1行n列个0
y=zeros(1,n); %操作后的状态
for i=1:n
k=rand(1); %利用rand函数产生一个0到1之间的随机数
if(k>0.5) x(i)=1; %对每个棋子赋予初始状态的颜色
else x(i)=-1;
end
end
disp('初始状态:')
x
for i=1:times
i %显示操作次数
for k=1:n-1
y(k)=x(k)*x(k+1);
end
y(n)=x(1)*x(n);
y %显示每次操作的结果
x=y; %每次的结果作为初值赋给下次
end
- 结果
该代码将棋子个数和操作次数均设置为128,可以看到最终全变为了黑子