Numpy练习小例题(2)--创建一个8*8的国际象棋棋盘(黑块为0,白块为1)

2023-10-10 03:50

本文主要是介绍Numpy练习小例题(2)--创建一个8*8的国际象棋棋盘(黑块为0,白块为1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

创建的国际象棋棋盘如下图所示:

0a2e5e6e75cb47678b1b7122b7178431.png5c9459d33296441fb2597c0c71f61b5e.png

 

 

 首先可以创建一个全0或者全1的8*8数组--在这里我创建的是全0数组

Q=np.zeros((8,8),dtype=int)
print(Q)

bd529734dc2d4be9ae346d43fa678322.png

第一步:观察到偶数行的第一个都为1,将全0的数组每偶数行都变为1 

Q[1::2]=1
Q

7102c4f1f324407ebb6f559dd3e10477.png

第二步:我们需要把偶数行的奇数列变为1,而不把每一行都变为1 

Q[1::2,::2]=1
print(Q)

2f08ccc7854047fda8ede1973760662a.png

 注意:不能像以下代码这样子去书写:(这样写会导致一直不能输出新的代码结果,不用问为什么,我已经尝试了半个小时,就是不能这样子分开写!!!!)

Q[1::2]=1
print(Q)
Q[1::2,::2]=1
print(Q)

第三步:又观察到奇数行的偶数列为1,先将奇数行都变为1

Q[::2]=1
print(Q)

259f47ce442f4ba994e6b548d0c0bab5.png

第四步:将奇数行的偶数列为1

Q[::2,1::2]=1
print(Q)

 (注意:该部分和上述描述的坑一样,都是不能够分开写的,分开写不能获得新数组的结果,我的Anaconda和jupyter版本都是最新的)

总结完整代码如下:

#首先可以创建一个全0或者全1的8*8数组--在这里我创建的是全0数组
Q=np.zeros((8,8),dtype=int)#第一步:观察到偶数行的第一个都为1,将全0的数组每偶数行都变为1   第二步:我们需要把行列交叉的点都变为1,而不把每一行都变为1
Q[1::2,::2]=1#第三步:观察到奇数行的偶数列为1,先将奇数行都变为1    第四步:将奇数行的偶数列都变为1
Q[::2,1::2]=1
print(Q)

PS:国际象棋(Chess),又称西洋棋,是—种二人对弈的棋类游戏。棋盘为正方形,由64个黑白(深色与浅色)相间的格子组成;棋子分黑白(深色与浅色)两方共32枚,每方各16枚。28667aeae698440abbfcbcfa0f4b61bf.png

国际象棋的规则:

1、布子规则:

无论是白方视野还是黑方视野,棋盘的最右下角的一格一定要是白色,白后一定要放在白格上,黑后一定要放在黑格上。并且,白王一定在e1格,黑王一定在e8格。

2、行棋规则:

王(K):横、直、斜都可以走,但是每次限走一步。王是不可以送吃的,也就是任何被敌方控制的格子,己方王都不能走进去。否则,算“送王”犯规,三次就要判负。

(1)除易位时以外,王可以走到不被对方棋子攻击的任何相邻格子,而且只能走一步。

(2)易位是由王和己方任何一个车一起进行的仍被视作王的一步的走法。

后(Q):横、直、斜都可以走,步数不受限制,但是不能越子。

车(R):横、竖都可以走,步数不受限制,不能斜走。除王车易位外不能越子。

象(B):只能斜走。格数不限,不能越子。开局时每方有两象,一个占白格,一个占黑格。

马(N):每步棋先横走或者直走一格,然后再往外斜走一格;或者先斜走一格,最后再往外横走或者竖走一格(也就是走“日”字)。可以越子,没有中国象棋中的“蹩马腿”限制。

兵(P):只能向前直走,每次只能走一格。但是走第一步时,可以走一格或两格。兵的吃子方法与行棋方向不一样,它是直走斜吃,也就是如果兵的斜进一格内有对方棋子,就可以吃掉它而占据该格。

 

 

这篇关于Numpy练习小例题(2)--创建一个8*8的国际象棋棋盘(黑块为0,白块为1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/177747

相关文章

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

RabbitMQ练习(AMQP 0-9-1 Overview)

1、What is AMQP 0-9-1 AMQP 0-9-1(高级消息队列协议)是一种网络协议,它允许遵从该协议的客户端(Publisher或者Consumer)应用程序与遵从该协议的消息中间件代理(Broker,如RabbitMQ)进行通信。 AMQP 0-9-1模型的核心概念包括消息发布者(producers/publisher)、消息(messages)、交换机(exchanges)、

顺序表之创建,判满,插入,输出

文章目录 🍊自我介绍🍊创建一个空的顺序表,为结构体在堆区分配空间🍊插入数据🍊输出数据🍊判断顺序表是否满了,满了返回值1,否则返回0🍊main函数 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞+关注+评论+收藏(一键四连)哦~ 🍊自我介绍   Hello,大家好,我是小珑也要变强(也是小珑),我是易编程·终身成长社群的一名“创始团队·嘉宾”

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

批处理以当前时间为文件名创建文件

批处理以当前时间为文件名创建文件 批处理创建空文件 有时候,需要创建以当前时间命名的文件,手动输入当然可以,但是有更省心的方法吗? 假设我是 windows 操作系统,打开命令行。 输入以下命令试试: echo %date:~0,4%_%date:~5,2%_%date:~8,2%_%time:~0,2%_%time:~3,2%_%time:~6,2% 输出类似: 2019_06

【Rust练习】12.枚举

练习题来自:https://practice-zh.course.rs/compound-types/enum.html 1 // 修复错误enum Number {Zero,One,Two,}enum Number1 {Zero = 0,One,Two,}// C语言风格的枚举定义enum Number2 {Zero = 0.0,One = 1.0,Two = 2.0,}fn m

MySql 事务练习

事务(transaction) -- 事务 transaction-- 事务是一组操作的集合,是一个不可分割的工作单位,事务会将所有的操作作为一个整体一起向系统提交或撤销请求-- 事务的操作要么同时成功,要么同时失败-- MySql的事务默认是自动提交的,当执行一个DML语句,MySql会立即自动隐式提交事务-- 常见案例:银行转账-- 逻辑:A给B转账1000:1.查询

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计