这是haskell。该程序还可以。我需要再做一件事,但我做不到。在我的代码中,输入内容可以说17不是来自我初始化它的用户。我无法从用户输入号码。那是我的具体查询
问题是 给定一个数字列表和一个数字k,返回列表中是否有两个数字加起来等于k。例如,给定[10、15、3、7]和k为17,因为10 + 7为17,所以返回true。
以下是代码。我尝试过这样的事情
toList :: String -> [Integer]
toList input = read ("[" ++ input ++ "]")
check :: Integer -> [Integer] -> Bool
check k (x:xs) = if ((k-x) `elem` xs)
then True
else (check k xs)
check k x = False
main = do
let k = input <- getLine
putStrLn "Enter a list of numbers (separated by comma):"
input <- getLine
print $ (check k (toList input))
答案 0 :(得分:2)
只需多次使用getLine
。
main :: IO ()
main = do
putStrLn "Enter a number:"
k <- read <$> getLine
putStrLn "Enter a list of numbers (separated by comma):"
input <- toList <$> getLine
print $ check k input