처음에는 테스트 케이스의 수를 나타내는 정수 (t)가 있습니다. 그러면 2 * t 줄이옵니다. 각 줄에는 정수가 있습니다. 우리는 두 숫자의 합을 출력해야합니다.haskell을 사용한 정수 추가 프로그램
시료 입력 :
3
1
2
3
4
5
6
샘플 출력 :
3
7
11
처음에는 테스트 케이스의 수를 나타내는 정수 (t)가 있습니다. 그러면 2 * t 줄이옵니다. 각 줄에는 정수가 있습니다. 우리는 두 숫자의 합을 출력해야합니다.haskell을 사용한 정수 추가 프로그램
시료 입력 :
3
1
2
3
4
5
6
샘플 출력 :
3
7
11
import Control.Monad (replicateM)
main :: IO()
main = mapM_ print . map (uncurry (+)) =<< flip replicateM readIntPair =<< readLn
readIntPair :: IO (Integer, Integer)
readIntPair = do
x <- readLn
y <- readLn
return (x, y)
replicateM
다른 기능은 Prelude에서 자동으로 가져, Control.Monad에서이다.
표기법을 설명하는 자습서의 일부를 읽고 싶을 수도 있습니다. 표기법은 명령형 목록과 동일하지만 미묘하게 다릅니다.
오! 알았다. 그런데 haskell에는 정수 사용에 대한 제한이 없습니다 (C/C++에서는 64 비트로 제한됨). 어떻게이 코드를 실행하여 수정할 수 있습니까? BigInteger – john
@john 코드를 편집했습니다. 대부분 정수형으로'Int'를'Integer'로 대체했습니다. 복잡성은'replicateM'이'Int'를 취하여 액션을 수행 할 횟수를 지정하므로'Int'로 남아 있어야하고'Integer'로 변경할 수 없다는 것입니다. – dave4420
간결하지만, 나는 이것이 가장 교육적인 코드라고 확신하지 못했습니다! –
이 숙제가 있습니까? 숙제 태그를 추가해야합니다. 당신이 * haskell에서 이것을 달성하기 위해 시도한 것은 무엇입니까? 너는 어디에서 stymied입니까? – rampion
번호. 나는 C, C++ 및 java 만 알고 있습니다. 나는 Haskell에 익숙해지고 싶다. – john
루프를 실행하여 'n'개의 숫자를 다른 행에 인쇄하는 프로세스는 무엇입니까? – john