小编Und*_*ren的帖子

一个控制鼠标的haskell程序

首先是轶事:我正在玩一个浏览器游戏,尽管它很有趣,但我发现"磨"实际上是非常好的回报.还有一个简单的鼠标点击程序可以为您完成工作的情况.然后我开始想知道如何制作一个控制鼠标的Haskell程序.唉,在谷歌搜索有点令人失望之后,我所能找到的只是人们指的是GLUT和其他一些支持鼠标输入反应而不是鼠标输出的模块.

现在的问题是:什么Haskell包支持鼠标输出,我在哪里可以了解更多?

io mouse haskell

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

矩形子阵列的最大总和

给定一组实数值A[1..n,1..n],我希望找到子数组

B = A[i..j,s..t]

1 <= i <= j <= n,1 <= s <= t <= n

使得数字的总和B最大化.是否可以使用动态编程解决这个问题?我和奥胡斯大学的一位OR教授谈过,他不知道该怎么做,并说他很难看出它如何能有最佳的子结构质量.

但它有可能吗?如果有,怎么样?如果没有,为什么?

我已经知道一种算法可以O(n^3)及时运行,通过将其减少到n(n+1)/2复杂的子问题O(n),但这看起来有点慢.我知道最佳算法会Omega(n)及时运行,但我希望动态编程能够及时运行O(n^2).

原始问题总结

我添加了这一部分,因为我觉得有些人误解了我的问题.最初的问题是:

  1. 是否可以使用动态编程及时解决上述问题O(n^2)?如果有,怎么样?如果不是,为什么不呢?

其他问题:

我在这里添加了一个新问题.稍后可能会添加更多内容:

  1. 为了使用动态编程,我需要利用解决方案来轻松解决子问题(否则重点是没有意义).问题的结构是这样的,如果我们采用子阵列B = A[1..m,1..m]A[1..n,1..n]位置m < n,那么阵列的最优解决方案B最多也是如此A,因为同样的解决方案是可行的A.因此,要使用动态编程,可以合理地问:最佳子阵列A[1..i,1..i]与最佳子阵列之间的关系是A[1..i+1,1..i+1]什么?

arrays algorithm dynamic-programming

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

在Haskell/Linear编程包中运行其他程序

我有一个叫做LPSolve解决混合整数优化问题的程序.问题是我无法在迭代期间动态添加约束,因此我会编写一个LPSolve用于解决松弛的Haskell程序,然后根据解决方案推断出一些额外的约束.利用问题结构的约束.

是否可以在Haskell中运行可执行文件并检索发送到终端的输出?

是否存在解决线性编程问题的Haskell包?

haskell linear-programming

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

Haskell中的非单片阵列

我接受了下面问题的答案,但似乎我误解了haskell中的Arrays是如何工作的.我以为他们只是加强了名单.阅读以下问题时请记住这一点.


我发现haskell中的单片阵列在将它们用于较大的阵列时效率很低.

我无法在haskell中找到非单片的数组实现.我需要的是O(1)时间查找多维数组.

是否有支持这种情况的数组实现?

编辑:我似乎误解了整体一词.问题是似乎haskell中的数组像列表一样处理数组.我可能错了.

EDIT2:低效代码的简短示例:

fibArray n = a where
  bnds = (0,n)
  a = array bnds [ (i, f i) | i <- range bnds ]
  f 0 = 0
  f 1 = 1
  f i = a!(i-1) + a!(i-2)
Run Code Online (Sandbox Code Playgroud)

这是一个长度数组,n+1其中第i个字段包含第i个斐波纳契数.但由于haskell中的数组具有O(n)时间查找,因此计算需要O(n²)时间.

arrays haskell

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

Haskell:一个函数,它接受一个列表xs和一个整数n,并返回长度为n的所有列表,其中包含xs中的元素

我之前试图解决这个问题,并且我已经搜索了一个解决方案,却找不到一个.

我需要一个函数,它接受一个列表xs和一个整数n,并返回所有长度为n的列表,其中包含xs中的元素.例如:

function [0,1] 3 = [[0,0,0],[0,0,1],[0,1,0],[0,1,1],[1,0,0],[1,0,1],[1,1,0],[1,1,1]]
Run Code Online (Sandbox Code Playgroud)

我试过这个:

list _ 0 = []
list xs n = do
    y <- xs
    ps <- list xs (n-1)
    return y : ps
Run Code Online (Sandbox Code Playgroud)

还有这个:

list _ 0 = []
list xs n = do
    y <- xs
    y : list xs (n-1)
Run Code Online (Sandbox Code Playgroud)

没有按预期工作.我想知道两件事:为什么这些不起作用?我该如何修改它们才能起作用?

haskell list

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

从haskell中的输入文件中读取

我正在解决Project Euler Problem 11.我已将问题中的表复制粘贴到名为"input.txt"的文件中.输入文件的每一行包含一行20x20矩阵,列由空格分隔.

我想要的是一个读取此文件的函数,并将其作为IO数组返回.我这样做很麻烦.

到目前为止我已经这样做了:

import System.IO
import Control.Monad

main = readFile "input.txt"
Run Code Online (Sandbox Code Playgroud)

这当然只给我输入文件的IO String表示,但我尝试的一切似乎都失败了.我该怎么办?我知道我应该做点什么

array ((1,1),(20,20)) [ the numbers tupled with their indices ]
Run Code Online (Sandbox Code Playgroud)

但转换这些数字对我来说是完全不可能的,很可能是因为我还没有完全理解monad.

一旦你理解了,我相信这实际上很容易.

有没有人有关于该做什么的建议?

arrays io haskell

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