关于棋盘的一个

每周挑战 281

很抱歉在过去的几周里我没能做到。我搬了家,换了新工作,所以这段时间没有机会参与挑战。

穆罕默德·s·安瓦尔 (mohammad s. anwar) 每周都会发出“每周挑战”,让我们所有人都有机会为两周的任务提出解决方案。我的解决方案首先用python编写,然后转换为perl。这对我们所有人来说都是练习编码的好方法。

挑战,我的解决方案

任务 1:检查颜色

任务

给定坐标,一个字符串,代表棋盘正方形的坐标,如下所示:

关于棋盘的一个

编写一个脚本,如果方块是亮的则返回 true,如果方块是暗的则返回 false。

我的解决方案

这相对简单。我做的第一件事是检查提供的位置是否有效(第一个字符是 a-h,第二个字符在 1 到 8 之间)。

然后我检查第一个字母是否是 a、c、e 或 g 并且数字是偶数,或者第一个字母是 b、d、f 或 h 并且数字是奇数,返回 true。否则返回 false。

def check_color(coords: str) -> bool:    if not re.search('^[a-h][1-8]$', coords):        raise valueerror('not a valid chess coordinate!')    if coords[0] in ('a', 'c', 'e', 'g') and int(coords[1]) % 2 == 0:        return true    if coords[0] in ('b', 'd', 'f', 'h') and int(coords[1]) % 2 == 1:        return true    return false

示例

$ ./ch-1.py d3true$ ./ch-1.py g5false$ ./ch-1.py e6true

任务2:骑士的行动

任务

国际象棋中的马可以从当前位置移动到两行或两列加一列或一行之外的任意方格。所以在下图中,如果它以s开头,它可以移动到任何标记为e的方块。

关于棋盘的一个

编写一个脚本,以起始位置和结束位置为基础,并计算所需的最少移动次数。

我的解决方案

这个更详细。我从以下变量开始:

deltas 是一个列表元组(perl 中的数组数组),其中包含骑士从当前位置移动的八种方式。target 是我们想要到达的单元格。为此,我将第一个字母转换为从 1 到 8 的数字。它存储为元组,第一个值是列,第二个值是行。moves 是移动的次数,从 1 开始。see 是我们已经访问过的单元格列表。coords 是骑士当前位置的列表。它从起始坐标开始。

def knights_move(start_coord: str, end_coord: str) -> int:    for coord in (start_coord, end_coord):        if not re.search('^[a-h][1-8]$', coord):            raise valueerror(                f'the position {coord} is not a valid chess coordinate!')    deltas = ([2, 1], [2, -1], [-2, 1], [-2, -1],              [1, 2], [1, -2], [-1, 2], [-1, -2])    coords = [convert_coord_to_list(start_coord)]    target = convert_coord_to_list(end_coord)    moves = 1    seen = []

然后我有一个当前坐标列表和增量列表的双循环。设置一个变量 new_pos 代表骑士的新坐标。如果这导致了棋盘之外的位置或我们已经去过的坐标,我会跳过它。如果它落在目标上,我将返回移动值。

循环结束后,我将坐标列表重置为通过迭代收集的坐标,并将移动值加一。这一直持续到我们到达目标坐标。

    while true:        new_coords = []        for coord in coords:            for delta in deltas:                new_pos = (coord[0] + delta[0], coord[1] + delta[1])                if not 0 < new_pos[0] < 9 or not 0 < new_pos[1] < 9 or new_pos in seen:                    continue                if new_pos == target:                    return moves                new_coords.append(new_pos)                seen.append(new_pos)        coords = new_coords        moves += 1

示例

$ ./ch-2.py g2 a84$ ./ch-2.py g2 h23

以上就是关于棋盘的一个的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1348883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 12:24:56
下一篇 2025年12月12日 11:44:08

相关推荐

  • 利用 AI 促进内容创作:引入 AI 博客文章生成器

    在当今快节奏的数字世界中,内容为王。无论您是博主、营销人员还是企业主,创建高质量、引人入胜的内容对于增加流量和扩大在线影响力至关重要。但让我们面对现实吧,写作可能既耗时又具有挑战性,尤其是当您同时处理多项任务时。这就是人工智能博客文章生成器的用武之地! ? 什么是人工智能博客文章生成器? AI 博客…

    2025年12月13日 好文分享
    000
  • 人口统计数据集分析

    你好, 由于我最近沉浸在 Python 数据分析中,今天我成功地使用了我的第一个 Jupyter 笔记本。它的灵感来自于 freeCodeCamp 的练习。 ? 它看起来像什么? 笔记本本身怎么样? 基于简单的方法,该笔记本具有练习目的,专为想要掌握 Python 数据分析的初学者而设计。 我邀请大…

    2025年12月13日
    000
  • 如何为初学者使用 Python 创建“猜数字”游戏

    什么是“猜数字”游戏? 在这个游戏中,计算机随机选择一个数字,你必须猜测它是什么。每次猜测后,计算机都会告诉您您的猜测是否太高、太低或恰到好处。当您猜对数字时游戏结束,并且它还会告诉您尝试了多少次。 让我们开始吧! 第1步:导入随机模块首先,我们需要导入随机模块。该模块帮助我们生成一个随机数,您将尝…

    2025年12月13日
    000
  • 使用 pytest-mask-secrets 保护测试机密

    保持敏感数据的安全和私密是软件开发的首要任务。应用程序日志是常见的泄漏媒介之一,受到仔细保护,以防止出现秘密。同样的担忧和风险也适用于测试日志,它可能会泄露密码或访问令牌。运行 ci 工作流程的工具通常提供一种机制,可以轻松屏蔽日志中的敏感数据。虽然这非常方便、高效且易于使用,但在某些情况下,这可能…

    2025年12月13日
    000
  • BiRefNet 最先进的最新最好的背景批量删除应用程序

    birefnet 最先进的最新最好的背景批量删除应用程序。 birefnet 是最新发布的最先进的背景去除开源模型。它比我们所知道的最好的 bria mbg v1.4 好得多。 官方仓库:https://github.com/ZhengPeng7/BiRefNet 从以下网址下载APP和安装程序:h…

    2025年12月13日
    000
  • MyPy简介

    介绍 mypyc++0b24f9d990aea8bfc2101d73a0>1 是 python 的静态类型检查器。与 c++ 或 java 等静态类型语言不同,python 是动态类型的。这意味着在 python 中,您不必显式声明变量的类型;它是在运行时推断的。例如: python(动态类型…

    2025年12月13日
    000
  • 不可变数据类型的真正含义是什么?

    为什么数据类型要么是可变的,要么是不可变的?让我们以 python 为例, Python中的数据类型基本上都是对象或类,int是类,浮点数,列表等 因此,写入 x=6 会创建一个值为 6 的新整数对象,并将一个名为 x 的引用指向该对象。 现在我们需要研究类,类基本上将数据和函数组合在一起,这些函数…

    2025年12月13日
    000
  • 什么是Python?

    Python 是一种流行的编程语言。它由 Guido van Rossum 创建,并于 1991 年发布。 Guido van Rossum(荷兰语:Guido van Rossum)是一位荷兰计算机程序员,最著名的是 Python 编程语言的作者。 Python 是一种功能强大、用途广泛且简单的编…

    2025年12月13日
    000
  • AutoDocument – 开源邮件合并替代方案

    AutoDocument – 开源邮件合并替代方案 您好,这篇文章将介绍 AutoDocument,这是一个免费的开源文档生成 Web 应用程序,可将电子表格、数据库和用户表单连接到 Microsoft Word 和 PDF 等文档中。它基于出色的开源库,例如 python-docx-t…

    2025年12月13日
    000
  • timeitrepeat – 通过重复来理解模式

    1.问题 在您的软件工程职业生涯中,您可能会遇到一段性能不佳的代码,花费的时间超出了可接受的范围。更糟糕的是,多次执行时性能不一致且变化很大。 此时,您必须接受这样的事实:在软件性能方面,存在很多不确定性。数据可以分布在一个窗口内,有时遵循正态分布。其他时候,它可能会不稳定,没有明显的模式。 2. …

    2025年12月13日
    000
  • 为什么 Python 开发人员失业?服务技巧

    科技世界是动态的,工作保障不再是理所当然的,即使对于像 Python 开发这样的急需技能来说也是如此。虽然 Python 仍然是一种流行的语言,但最近的经济衰退和行业转变引发了人们对 Python 开发人员工作稳定性的担忧。让我们找出这些挑战背后的原因,并探索让您的职业生涯面向未来的策略。 Pyth…

    2025年12月13日
    000
  • Pygame开发游戏实用指南—Pygame简介

    在本文中,我们将学习如何下载和安装游戏开发库 pygame,并且我们将运行一个简单的示例项目来熟悉 pygame。 项目代码下载链接:https://github.com/la-vie-est-belle/pygame_codes 安装 pygame 在 windows 上安装 pygame打开命令…

    2025年12月13日 好文分享
    000
  • 使用 Scrapy 和 Playwright 无限滚动抓取页面

    使用 scrapy 抓取网站时,您很快就会遇到各种需要发挥创意或与要抓取的页面进行交互的场景。其中一种场景是当您需要抓取无限滚动页面时。当您向下滚动页面时,这种类型的网站页面会加载更多内容,就像社交媒体源一样。 抓取这些类型的页面的方法肯定不止一种。我最近解决这个问题的一种方法是继续滚动,直到页面长…

    2025年12月13日
    000
  • 测试自动化

    初始设置 下载PythonPython 是一种编程语言。可以从https://www.python.org/downloads/下载。 1.1 激活虚拟环境在您选择类型的目录中python -m venv venv并激活它venv/Scrpts/Activate.ps1 下载机器人框架在终端中输入 …

    2025年12月13日
    000
  • 我的 HNG 之旅第六阶段:利用 Python 公开 DORA 指标

    介绍 对于第 6 阶段,我们的任务是公开 dora(devops 研究),我最近开始了一个使用 python 公开 dora(devops 研究和评估)指标的项目。这次经历教会了我关于 devops 实践以及与合作的复杂性的宝贵经验。在本文中,我将引导您完成整个过程,解释每个指标的含义,并强调一些需…

    2025年12月13日
    000
  • Udemy 上的最佳 Python 课程

    Udemy 上的最佳 Python 课程 Python 是当今世界上最流行的编程语言之一,学习 Python 可以打开各种职业机会的大门。无论您对 Web 开发、数据科学、人工智能还是自动化感兴趣,掌握 Python 都是必不可少的。 Udemy 提供大量 Python 课程,适合从初学者到高级程序…

    2025年12月13日
    000
  • 了解您的数据:探索性数据分析的要点

    探索性数据分析是一种流行的分析数据集并直观地呈现您的发现的方法。它有助于提供对数据集和结构的最大程度的洞察。这将探索性数据分析视为一种理解数据各个方面的技术。为了更好地理解数据,必须确保数据干净、没有冗余、没有缺失值,甚至没有 null 值。 探索性数据分析的类型 主要分为三种:单变量:这是您在任意…

    2025年12月13日 好文分享
    000
  • 简介:Python 游戏第 1 周

    第 1 周:python 和游戏开发基础知识简介 第 1 课:python 基础知识和 pygame 设置 主题:python 语法和基本编程概念(变量、数据类型、循环、函数)。安装和设置 pygame。游戏循环和基本游戏机制介绍。迷你项目:简单绘图应用程序:创建一个允许用户用鼠标在屏幕上绘图的基本…

    2025年12月13日
    000
  • 估计编码任务:可能会出现什么问题?

    以下是“向现有 dataframe 添加哈希值”的任务如何从花费几天时间到消耗几乎整个冲刺的过程。 2022 年第二季度,我开始开发一个数据管道,该管道从 rest 服务获取市场数据并将其存储在 bigquery 表中。这是管道的高级解释。有趣的部分是如何查询数据,将其转换为 dataframe,然…

    2025年12月13日
    000
  • 推荐课程:Pandas 快速入门

    您是否想深入数据分析世界并熟练掌握最强大的数据操作工具之一 pandas?别再犹豫了! labex 提供的 pandas 快速入门课程对于任何有兴趣掌握使用 python 进行数据分析的人来说是一个很好的起点。 释放熊猫的力量 Pandas 是数据科学领域广泛使用的开源库,提供了一套强大的数据操作、…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信