【问题标题】:Solving a Chain Link Python Puzzle:解决链式 Python 拼图:
【发布时间】:2023-04-07 00:17:01
【问题描述】:

我不确定从以下 python 谜题开始。

“你持有一个链的链接。实现一个方法longerSide来查找链的哪一侧有更多的链接,相对于你持有的链接。如果左侧有更多的链接返回Side.left。如果右侧有更多链接,则返回Side.right,如果两边的链接数量相等,或者如果链是闭环,则返回Side.none
例如,下面的代码应该输出True

left = ChainLink() 
middle = ChainLink() 
right = ChainLink() 
left.append(middle) 
middle.append(right) 
print(left.longerSide() == Side.right)

我真的不知道如何处理这个问题。我想展示我迄今为止所做的一些事情,但我还没有创造出任何实质性的东西。到目前为止,我只定义了以下枚举

from enum import Enum
class Side(Enum):
    NONE = 0
    LEFT = 1
    RIGHT = 2

如果有人有任何可以帮助我的建议或资源,我将不胜感激。

谢谢

【问题讨论】:

  • 如果你能数出两边的链接数,那就很简单了。那你怎么能这样呢?至少,每个链接都需要记录其最左侧的链接(如果有)和最右侧的链接(如果有)——什么是合适的数据结构?
  • 谢谢,在这种情况下,双向链表是合适的数据结构吗?
  • 是的,这是一个不错的选择。现在,如何计算当前链接右侧的链接数量?
  • 我会这样做:如果heldLink.next != None counter += 1 这是在正确的轨道上吗?
  • 当然,这是您需要的循环的一部分。

标签:
python
algorithm
puzzle
chain