【发布时间】:2012-04-02 15:47:05
【问题描述】:
我正在解决Project Euler Problem 11。我已将问题中的表格复制粘贴到名为“input.txt”的文件中。输入文件的每一行包含一行 20x20 矩阵,列之间用空格分隔。
我想要的是一个读取这个文件并将它作为一个 IO 数组返回的函数。我在这样做时遇到了很大的麻烦。
到目前为止,我已经这样做了:
import System.IO
import Control.Monad
main = readFile "input.txt"
这当然只给了我输入文件的 IO 字符串表示,但我尝试的一切似乎都失败了。我应该如何进行?我知道我应该做类似的事情
array ((1,1),(20,20)) [ the numbers tupled with their indices ]
但是对我来说转换数字是完全不可能的,很可能是因为我还没有完全理解单子。
我相信这实际上很容易,一旦你理解了它。
有没有人有什么建议?
【问题讨论】:
-
input.txt的格式是什么? -
什么意思?这是一个 txt 文件,我只是将矩阵复制粘贴到其中。
-
@Undreren:告诉人们“input.txt”的格式是什么很重要。我的意思是,它可能是莎士比亚的全集,它可能在每条奇数行上有一个浮点数,在每条偶数行上有一只猫的名字,或者像你的情况一样,它可能包含 20 行和 20每个以空格分隔的整数。我只是在阅读您要解决的问题时才发现这一点——这应该是问题所在。
-
好的,我只是认为链接到矩阵更整洁,因为它占用了太多空间。
-
有点离题:可能要考虑使用优秀的
vector包