easttiger 回复 第1楼 的 xoxo: <br /> mat = array(rep(1:3,3),c(3,3));<br /> <br /> dim(mat)<br /> for(i in 1:3){print(mat == i)}<br /> (mat==1) + (mat==2) + (mat==3)<br /> 或 <br /> c(prod(dim(mat) == c(3,3)), prod((mat==1) + (mat==2) + (mat==3)))<br /> </p>
xoxo 回复 第2楼 的 easttiger:不好意思哦 还是个R语言初学者 不是很懂为什么要把(mat==1) + (mat==2) + (mat==3)? 而且我想要的其实是:检查一个矩阵,它必须是3*3,而且元素只能是0,1,2,这个矩阵要满足一个井字游戏,0代表空着的格子,1代表选手1,2代表选手2,3个连乘一线就是赢(可以是水平的,垂直的,对角的),选手1先走,如果没人连成一线,那么就平局。也就是说,这个矩阵可以是全0,但不能是全1或全2,而且矩阵中1的个数要大于2个个数,当某一方连乘一线时,游戏结束,剩余的空就该是0。 btw,你能不能用简单一点的语言做,小弟初学着,怕看不懂~嘿嘿~
easttiger 回复 第4楼 的 xoxo:既然有了%in% 和 all, 我那方法就简陋了. 我那方法是说当mat里全体元素都是{1,2,3}之一的话, 那么(mat==1) + (mat==2) + (mat==3)必须是一个3*3的元素全为true的矩阵.