小编Tri*_*ten的帖子

如何找到将项目移动到堆栈中某个位置的最小移动次数?

堆栈

给定一组 NXP 堆栈,其中 N 是堆栈数,P 是堆栈容量,如何计算从位置 A 的某个节点移动到某个任意位置 B 所需的最小交换次数?我正在设计一个游戏,最终目标是对所有堆栈进行排序,使它们都具有相同的颜色。

# Let "-" represent blank spaces, and assume the stacks are
stacks = [
           ['R', 'R', 'R', 'R'], 
           ['Y', 'Y', 'Y', 'Y'], 
           ['G', 'G', 'G', 'G'], 
           ['-', '-', '-', 'B'], 
           ['-', 'B', 'B', 'B']
         ]
Run Code Online (Sandbox Code Playgroud)

如果我想在stacks[1][1]这样的stacks[1] = ["-", "B", "Y", "Y"]. 我如何确定这样做所需的最小移动次数?

我一直在研究多种方法,我尝试过从一个状态生成所有可能的移动的遗传算法,对它们进行评分,然后继续沿着最佳评分路径,我还尝试运行 Djikstra 的算法来寻找问题的路径. 这看起来简单得令人沮丧,但我想不出办法让它在指数时间内运行。是否有我遗漏的适用于此的算法?

编辑

我编写了这个函数来计算所需的最小移动次数: stacks: List of Characters List of Characters 代表堆栈中的碎片,stacks[0][0] 是 stack[0] 的顶部 stack_ind:将被添加到堆栈的碎片needs_piece:应该被添加到堆栈的碎片needs_index:碎片应该位于的索引

def calculate_min_moves(stacks, stack_ind, needs_piece, needs_index):
    # …
Run Code Online (Sandbox Code Playgroud)

python sorting algorithm stack dynamic-programming

12
推荐指数
1
解决办法
1195
查看次数

当使用使用夏令时的 Python 时区时,应该传递什么 tzinfo?

我正在尝试将日期字符串转换为日期时间,但找不到任何涉及哪些时区代码映射到哪些时区的可靠文档,特别是我正在处理利用夏令时的时区。

我有 4 个潜在的时区代码,我正在尝试确定将哪些内容传递给 tz.gettz 作为夏令时代码。

import dateutil.parser as p
import dateutil.tz as tz

tzinfos = {"CST": tz.gettz("America/Chicago"),
           "CDT": tz.gettz("?"),                # HERE
           "EST": tz.gettz("America/Eastern"),
           "EDT": tz.gettz("?")                 # HERE
           }

date_strings = ["Wed Mar 03 09:44:59 CST 2021",
                "Wed Mar 03 09:44:59 CDT 2021",
                "Wed Mar 03 09:44:59 EST 2021",
                "Wed Mar 03 09:44:59 EDT 2021"]

for s in date_strings:
    print(p.parse(s, tzinfos=tzinfos))
Run Code Online (Sandbox Code Playgroud)

日期字符串是通过我所在州交通部提供的 API 传入的,该 API 从州高速公路内置的传感器获取数据,最终目标是将它们全部转换为 UTC 时间,但我无法知道它们是什么UTC 时间应该是这样,所以我不能只是猜测时区然后验证它们。

我一直在浏览这个维基百科的时区页面 ,看起来好像与CDT相同CST,但tz.gettz("America/Chicago")我正在处理的应用程序将用于派遣急救人员应对交通事故,因此时间至关重要转换处理正确。我希望找到有关应传递给函数的内容的文档 …

python datetime dst timezone-offset

2
推荐指数
1
解决办法
916
查看次数