我的表格中有一个文件:
3
1 2
3 4
5 7
第一行是行数
我知道:
getInt :: IO Int
getInt = readLn
main = do num <- getInt
print (num)
读取第一行。
接下来,我试过了:
readInts :: IO [Int]
readInts = fmap (map read.words) getLine
读取一行并获得一个列表:[a,b]。
我尝试在递归循环中使用上述内容
loop :: Int -> IO()
loop n = if 1 == n then do num <- readInts
print(num)
else loop (n-1)
我只获得了第一行:
[5,3]
但是我需要阅读剩余的行,给定N
答案 0 :(得分:2)
输入文件的格式与编程竞赛中使用的格式非常相似。这是我编程竞赛的标准设置:
import Control.Monad
import Text.Printf
main :: IO ()
main = do
n <- readLn
forM_ [1 .. n] $ \i -> do
printf "Case %d: " (i :: Int)
solve
solve
的示例可能是:
solve :: IO ()
solve = do
nums <- map read . words <$> getLine
print (sum nums)
答案 1 :(得分:0)
您是否查看了lines
函数?它接受一个字符串并返回与\n
分隔的列表相同的字符串。使用此功能,您甚至不必拥有行数。