小编Jin*_*ANG的帖子

类型 [[a]] -> ([a], [a]) 的法则

我试图从我的作业中回答这个问题:

给定任意foo :: [[a]] -> ([a], [a]),写出函数foo满足的一条定律,涉及map到列表和对。

一些背景:我是一名学习函数式编程课程的一年级本科生。虽然这门课程比较入门,但讲师在教学大纲中提到了很多东西,其中包括自由定理。因此,在尝试阅读 Wadler 的论文后,我认为concat :: [[a]] -> [a]with the lawmap f . concat = concat . map (map f)看起来与我的问题相关,因为我们必须具有foo xss = (concat xss, concat' xss)whereconcatconcat'are 类型的任何函数[[a]] -> [a]。然后foo满足bimap (map f, map g) . foo = \xss -> ((fst . foo . map (map f)) xss, (snd . foo . map (map g)) xss) …

haskell free-theorem

8
推荐指数
1
解决办法
146
查看次数

两个列表中元素之间的最小差异之和

假设我们有两个长度相同的列表,ls1ls2。例如,我们有

ls1 = [4, 6]
ls2 = [3, 5]
Run Code Online (Sandbox Code Playgroud)

并为每个元件中ls1,我们有与一个元件与一个元素配对它ls2,以这样的方式,使得总(绝对在元件之间)的差异ls1,并在元件ls2是最小的。一个元素只能匹配一次。在上面的例子中,最佳的方式是匹配4ls13ls2,并5ls16ls2,其产生的总差

(4 - 3) + (6 - 5) = 2 
Run Code Online (Sandbox Code Playgroud)

我需要一个程序来返回这两个列表中的元素之间的最小总差。列表的长度是任意的,列表中元素的值也是任意的(但它们都是正整数)。

我目前知道,使用置换暴力破解解决方案是一个选择,但是我需要的是具有最佳时间和空间复杂度的代码。我听说过动态编程的概念,但是我不知道该如何实现它。预先感谢您的答复。

附言 这是我当前使用置换的蛮力代码,在运行时或内存使用方面效率不高:

from itertools import permutations

def minimum_total_difference(ls1, ls2):
    length = len(ls1)
    possibilities = list(permuations(ls1, length))
    out = 10**10
    for possibility in possibilities:
        out_ = 0
        for _ in …
Run Code Online (Sandbox Code Playgroud)

python algorithm np

3
推荐指数
1
解决办法
1083
查看次数

欧几里德最小生成树和Delaunay三角剖分

我想根据2D平面上一组点之间的欧氏距离计算最小生成树.我当前的代码存储了所有边,然后执行Prim的算法以获得最小的生成树.但是,我知道这样做会O(n^2)占用所有边缘的空间.

在做了一些研究之后,如果我首先在这组点上计算delaunay三角剖分,然后通过在三角剖分的边缘上运行Prim或Kruskal算法来获得最小生成树,那么很明显可以优化内存和运行时.

这是编程竞赛的一部分(https://prologin.org/train/2017/qualification/taxi_des_neiges),所以我怀疑我能否使用scipy.spatial.有没有其他方法可以简单地获得Delaunay三角剖分中包含的边缘?

提前致谢.

python delaunay minimum-spanning-tree euclidean-distance

3
推荐指数
1
解决办法
695
查看次数

正则表达式匹配字符串的结尾而不使用`$`

前几天我正在进行正则表达式高尔夫,任务是在不使用的情况下匹配字符串末尾的'u' $.目标是匹配"fu","豆腐"和"snafu",但不是"futz","fusillade","functional"或"discombobulated".

我提出了fu[^tsn],它在regex101工作 ; 然而,它没有通过测试,因为它由于某种原因不匹配任何"fu","豆腐"和"snafu".我想知道为什么它不起作用,如果有一种更聪明的方法可以解决这个问题(奖励:是否有任何现实情况,不使用$会更好).

regex

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