【Python CheckiO 题解】Pawn Brotherhood


CheckiO 是面向初学者和高级程序员的编码游戏,使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务,从而提高你的编码技能,本博客主要记录自己用 Python 在闯关时的做题思路和实现代码,同时也学习学习其他大神写的代码。

CheckiO 官网:https://checkio.org/

我的 CheckiO 主页:https://py.checkio.org/user/TRHX/

CheckiO 题解系列专栏:https://itrhx.blog.csdn.net/category_9536424.html

CheckiO 所有题解源代码:https://github.com/TRHX/Python-CheckiO-Exercise


题目描述

【Pawn Brotherhood】:这次的题目只有英文的,而且有点长,用百度翻译翻译了一下,然而一团糟,只知道是关于国际象棋的,其他不知道说的啥,为了搞懂题目意思,我甚至还百度了一下国际象棋怎么下,然而并没有什么用,于是我用我那小学六年级水平的英语,配合翻译软件和给的示例图,搞了半天才弄清楚题目啥意思,简单来说,题目会给一个字典,字典中的值就是一枚棋子的坐标,我们要统计安全的棋子的个数,怎么判断棋子是否安全呢?如果棋子的左下角或者右下角有其他棋子,那么这枚棋子就是安全的,以左图的 b4 位置的棋子为例,a3 位置没有棋子,但是 c3 位置有棋子,所以 b4 位置的棋子就是安全的,对于 d2 位置的棋子,因为 c1e1 位置都没棋子,所以就不安全。
在这里插入图片描述

【链接】:https://py.checkio.org/mission/pawn-brotherhood/

【输入】:由棋子坐标组成的字典(字典)

【输出】:处于安全位置的棋子的个数(整数)

【前提】:0 < pawns ≤ 8

【范例】

safe_pawns ({ “ b4” ,“ d4” ,“ f4” ,“ c3” ,“ e3” ,“ g5” ,“ d2” }== 6
safe_pawns ({ “ b4” ,“ c4” ,“ d4” ,“ e4” ,“ f4” ,“ g4” ,“ e5” }== 1

解题思路

个人感觉这题还是比较简单的,但是官网定的难度是中等,直接将字典中每一个值转换成列表,列表的元素分别是横向坐标和纵向坐标,对于其左下角的坐标,可以将其横向坐标和纵向坐标都减一,右下角的坐标类似,因为横向坐标是 a b c 的形式,我们可以先用 ord() 方法将其转换成 ASCII 码,做减法完成后再用 chr() 方法将其转换成 chr 类型,然后判断这个坐标是否在字典里就行了

代码实现

def safe_pawns(pawns: set) -> int:num = 0for i in pawns:left_pawns = chr(ord(list(i)[0])-1) + chr(ord(list(i)[1])-1)right_pawns = chr(ord(list(i)[0])+1) + chr(ord(list(i)[1])-1)if left_pawns in pawns or right_pawns in pawns:num += 1return numif __name__ == '__main__':# These "asserts" using only for self-checking and not necessary for auto-testingassert safe_pawns({"b4", "d4", "f4", "c3", "e3", "g5", "d2"}) == 6assert safe_pawns({"b4", "c4", "d4", "e4", "f4", "g4", "e5"}) == 1print("Coding complete? Click 'Check' to review your tests and earn cool rewards!")

大神解答

大神解答 NO.1

def safe_pawns(pawns):answer = 0for pawn in pawns :if chr(ord(pawn[0])-1)+str(int(pawn[1])-1) in pawns or chr(ord(pawn[0])+1)+str(int(pawn[1])-1) in pawns : answer +=1return answer

大神解答 NO.2

def getdiags(pawn):c, r = map(ord, pawn)return chr(c - 1) + chr(r - 1), chr(c + 1) + chr(r - 1)def safe_pawns(pawns):return len([p for p in pawns if any(d in pawns for d in getdiags(p))])

大神解答 NO.3

def safe_pawns(pawns):def is_safe(p):file, rank = ord(p[0]), int(p[-1])return (chr(file-1)+str(rank-1) in pawns or chr(file+1)+str(rank-1) in pawns)return sum(is_safe(p) for p in pawns)

大神解答 NO.4

def safe_pawns(pawns):safe = lambda s: {chr(ord(s[0]) - 1) + str(int(s[1]) - 1),chr(ord(s[0]) + 1) + str(int(s[1]) - 1)}return sum([bool(set(pawns).intersection(safe(p))) for p in pawns ])

大神解答 NO.5

# migrated from python 2.7
def get_defenders(pawn):x, y = list(map(ord, pawn))return '%c%c' % (x - 1, y - 1), '%c%c' % (x + 1, y - 1)def safe_pawns(pawns):return sum(not pawns.isdisjoint(get_defenders(x)) for x in pawns)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437869.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python CheckiO 题解】Xs and Os Referee

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

c#多线程总结(纯干货)

线程基础 创建线程 static void Main(string[] args) {Thread t new Thread(PrintNumbers);t.Start();//线程开始执行PrintNumbers();Console.ReadKey(); }static void PrintNumbers() {Console.WriteLine("Starting...");for (int i 1; i < 10; i){Console.Wr…

Hexo 博客优化之实用功能添加系列(持续更新)

2022-01-25 更新&#xff1a;博客新地址&#xff1a;https://www.itbob.cn/&#xff0c;文章距上次编辑时间较远&#xff0c;部分内容可能已经过时&#xff01; 本文将讲述一些 Hexo 博客实用功能的添加&#xff0c;本文以作者 luuman 的 spfk 主题和作者 xaoxuu 的 Material X…

SharePoint关于publish page, WiKi page, Web part page区别

并非所有页面类型都相似 让我们来重新理解一下关于这三种页面的问题&#xff0c;自己找了很多文章并没有找到很好的介绍。 尽可能简单&#xff0c;SharePoint页面是您的用户内容显示的地方。您可以将其比喻成SharePoint站点的“脸和身体”。因此&#xff0c;当你访问SharePoi…

【Python CheckiO 题解】The Warriors

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

【Python CheckiO 题解】Multiply (Intro)

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

SQL Server定时执行SQL语句

企业管理器 --管理 --SQL Server代理 --右键作业 --新建作业 --"常规"项中输入作业名称 --"步骤"项 --新建 --"步骤名"中输入步骤名 --"类型"中选择"Transact-SQL 脚本(TSQL)&…

关于DateTime的一点记录 ToString(yyyy-MM-dd HH:mm:ss)

DateTime dt DateTime.Now; string z dt.ToString("yyyy-MM-dd HH:mm:ss");//你知道这个是“年月日时分秒”的格式吧? string a dt.ToString("yyyy-MM-dd HH:mm:ss ms");//这个你认为一定是 毫秒的格式? string b dt.ToString("yyyy-MM-dd HH:…

【Python CheckiO 题解】Say Hi

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

C#语言之“string格式的日期时间字符串转为DateTime类型”的方法

方法一&#xff1a;Convert.ToDateTime(string) string格式有要求&#xff0c;必须是yyyy-MM-dd hh:mm:ss 方法二&#xff1a;Convert.ToDateTime(string, IFormatProvider) DateTime dt; DateTimeFormatInfo dtFormat new System.GlobalizationDateTimeFormatInfo(); dtF…

【Python CheckiO 题解】Easy Unpack

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

SharePoint List item数量超过5000的解决办法

SharePoint一个list里面的item数量超过5000会提示“视图无法显示&#xff0c;因为超过管理员限制设定的列表视图阈值” 在CSDN里面有比较好的解决方案&#xff0c;在这里先记录下来&#xff0c;以后有用 方案一&#xff0c;定期自动归档 不用写TimerJOb&#xff0c; 可以用cont…

【Python CheckiO 题解】Index Power

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

什么是SharePoint?

在聊SharePoint开发之前&#xff0c;有必要说下什么是SharePoint. 在我工作的过程中&#xff0c;经常遇到客户对SharePoint不太了解的情况。有客户说&#xff0c;SharePoint太烂了&#xff0c;DropBox能做到的什么什么功能&#xff0c;SharePoint竟然做不到&#xff0c;很明显…

【Python CheckiO 题解】Digits Multiplication

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

【Python CheckiO 题解】Secret Message

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

【Python CheckiO 题解】Fizz Buzz

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

SharePoint 2013的REST编程基础

1. SharePoint 2013对REST编程的支持 自从SharePoint2013开始&#xff0c; SharePoint开始了对REST 编程的支持&#xff0c;这样除了.NET , Silverlight&#xff0c; Powershell之外&#xff0c; 又多了一种可以和SharePoint Server进行CSOM编程的方式。那么&#xff0c;问题来…

【Python CheckiO 题解】Even the Last

CheckiO 是面向初学者和高级程序员的编码游戏&#xff0c;使用 Python 和 JavaScript 解决棘手的挑战和有趣的任务&#xff0c;从而提高你的编码技能&#xff0c;本博客主要记录自己用 Python 在闯关时的做题思路和实现代码&#xff0c;同时也学习学习其他大神写的代码。 Chec…

Office Web App2013 在线查看PDF文件

经常会有客户问&#xff0c;在SharePoint中&#xff0c;如何在浏览器中查看与编辑文档&#xff0c;通常给出的解决方案是集成Office Web App。 而在实际应用过程中&#xff0c;客户通常会要求实现PDF文件在线查看&#xff0c;对于PDF文件&#xff0c;office web App微软一直没…