鱼C论坛

 找回密码
 立即注册
查看: 956|回复: 4

[已解决]Codewars——Take a Ten Minutes Walk问题

[复制链接]
发表于 2023-7-18 22:27:06 | 显示全部楼层 |阅读模式
10鱼币
https://www.codewars.com/kata/54 ... 000228/train/python

题目:

You live in the city of Cartesia where all roads are laid out in a perfect grid. You arrived ten minutes too early to an appointment, so you decided to take the opportunity to go for a short walk. The city provides its citizens with a Walk Generating App on their phones -- everytime you press the button it sends you an array of one-letter strings representing directions to walk (eg. ['n', 's', 'w', 'e']). You always walk only a single block for each letter (direction) and you know it takes you one minute to traverse one city block, so create a function that will return true if the walk the app gives you will take you exactly ten minutes (you don't want to be early or late!) and will, of course, return you to your starting point. Return false otherwise.

Note: you will always receive a valid array containing a random assortment of direction letters ('n', 's', 'e', or 'w' only). It will never give you an empty array (that's not a walk, that's standing still!).


翻译:

你住在笛卡尔市,那里的所有道路都以完美的网格布局。你比约定的时间早到了十分钟,所以你决定趁这个机会去散散步。该市在其手机上为市民提供了步行生成应用程序 - 每次您按下按钮时,它都会向您发送一系列代表步行方向的单字母字符串(例如 ['n', 's', 'w', 'e'])。您总是为每个字母(方向)仅步行一个街区,并且您知道穿过一个城市街区需要一分钟,因此创建一个函数,如果应用程序为您提供的步行将花费您整整十分钟(您不想早或晚!)并且当然会带您回到起点。否则返回 false。

注意:您将始终收到一个包含随机组合的方向字母(仅“n”、“s”、“e”或“w”)的有效数组。它永远不会给你一个空数组(这不是散步,而是静止不动!)。


My Code:
def is_valid_walk(walk):
    return len(walk) == 5

根据题意,

...exactly ten minutes (you don't want to be early or late!)...
...and will, of course, return you to your starting point...


一个街区 1 分钟,那么要 10 分钟并且来回就是 5 个街区,我用 len() 取长度没错啊

可却没通过一个点

Snipaste_2023-07-18_22-26-39.png
最佳答案
2023-7-18 22:27:07
本帖最后由 isdkz 于 2023-7-18 22:30 编辑

你的理解有一些误解。题目的意思是,你需要在10分钟内走完完整的一圈,然后返回到起点。换句话说,你需要在10分钟内走10个街区,而不是5个。你的方向必须要平衡,也就是说,向北走的次数要和向南走的次数相同,向西走的次数要和向东走的次数相同,这样你才能回到起点。

这是一个可能的解决方案:
def is_valid_walk(walk):
    if len(walk) != 10:
        return False
    return walk.count('n') == walk.count('s') and walk.count('e') == walk.count('w')

首先,我们检查  walk  的长度是否为10,如果不是,则直接返回  False 。然后,我们检查向北走的次数和向南走的次数是否相等,向东走的次数和向西走的次数是否相等,只有当这两个条件都满足时,我们才能返回到起点,函数才返回  True 。否则,返回  False 。

这个解决方案的核心思路是,我们需要确保  walk  的长度恰好为10,这样我们才能在10分钟内完成行走。而且我们需要确保我们向每个方向走的次数相等,这样我们才能回到起点。

最佳答案

查看完整内容

你的理解有一些误解。题目的意思是,你需要在10分钟内走完完整的一圈,然后返回到起点。换句话说,你需要在10分钟内走10个街区,而不是5个。你的方向必须要平衡,也就是说,向北走的次数要和向南走的次数相同,向西走的次数要和向东走的次数相同,这样你才能回到起点。 这是一个可能的解决方案: 首先,我们检查 walk 的长度是否为10,如果不是,则直接返回 False 。然后,我们检查向北走的次数和向南走的次数是否相 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 22:27:07 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2023-7-18 22:30 编辑

你的理解有一些误解。题目的意思是,你需要在10分钟内走完完整的一圈,然后返回到起点。换句话说,你需要在10分钟内走10个街区,而不是5个。你的方向必须要平衡,也就是说,向北走的次数要和向南走的次数相同,向西走的次数要和向东走的次数相同,这样你才能回到起点。

这是一个可能的解决方案:
def is_valid_walk(walk):
    if len(walk) != 10:
        return False
    return walk.count('n') == walk.count('s') and walk.count('e') == walk.count('w')

首先,我们检查  walk  的长度是否为10,如果不是,则直接返回  False 。然后,我们检查向北走的次数和向南走的次数是否相等,向东走的次数和向西走的次数是否相等,只有当这两个条件都满足时,我们才能返回到起点,函数才返回  True 。否则,返回  False 。

这个解决方案的核心思路是,我们需要确保  walk  的长度恰好为10,这样我们才能在10分钟内完成行走。而且我们需要确保我们向每个方向走的次数相等,这样我们才能回到起点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-18 22:30:38 | 显示全部楼层
isdkz 发表于 2023-7-18 22:27
你的理解有一些误解。题目的意思是,你需要在10分钟内走完完整的一圈,然后返回到起点。换句话说,你需要在 ...


def is_valid_walk(walk):
    c = walk.count
    return len(walk) == 10 and (c('n')==c('s')) and (c('w')==c('e'))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 23:06:31 | 显示全部楼层
真.抵制AI
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-7-18 23:20:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-14 18:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表