ECCA 1
De Informática de 1º de Matemáticas [Curso 2019-20, Grupo 4]
Sumario
1 1º concurso con Kattis (6-nov-19)
La relación se encuentra aquí.
2 Ejercicios
2.1 A different problem
Su enunciado está aquí.
main :: IO ()
main = interact resolucion
-- λ> resolucion <$> readFile "sample.in" >>= putStr
-- 2
-- 71293781685339
-- 12345677654320
resolucion :: String -> String
resolucion = escribeSalida . solucion . leeEntrada
-- λ> leeEntrada <$> readFile "sample.in"
-- [10,12,71293781758123,72784,1,12345677654321]
leeEntrada :: String -> [Integer]
leeEntrada = map read . words
-- λ> solucion [10,12,71293781758123,72784,1,12345677654321]
-- [2,71293781685339,12345677654320]
-- melgonaco
solucion :: [Integer] -> [Integer]
solucion (x:y:zs) = abs (x - y) : solucion zs
solucion _ = []
-- λ> escribeSalida [2,71293781685339,12345677654320]
-- "2\n71293781685339\n12345677654320\n"
escribeSalida :: [Integer] -> String
escribeSalida = unlines . map show
2.2 R2
Su enunciado está aquí.
main :: IO ()
main = interact resolucion
-- λ> resolucion <$> readFile "1.in" >>= putStr
-- 19
-- λ> resolucion <$> readFile "2.in" >>= putStr
-- 2
resolucion :: String -> String
resolucion = escribeSalida . solucion . leeEntrada
-- λ> leeEntrada <$> readFile "1.in"
-- [11,15]
leeEntrada :: String -> [Int]
leeEntrada = map read . words
-- λ> solucion [11,15]
-- 19
-- melgonaco
solucion :: [Int] -> Int
solucion [r1, s] = 2*s - r1
-- λ> escribeSalida 19
-- "19\n"
escribeSalida :: Int -> String
escribeSalida x = show x ++ "\n"
2.3 Cold-puter Science
Su enunciado está aquí
main :: IO ()
main = interact resolucion
-- λ> resolucion <$> readFile "cold-001.in" >>= putStr
-- 1
-- λ> resolucion <$> readFile "cold-002.in" >>= putStr
-- 5
resolucion :: String -> String
resolucion = escribeSalida . solucion . leeEntrada
-- λ> leeEntrada <$> readFile "cold-001.in"
-- [5,-10,15]
leeEntrada :: String -> [Int]
leeEntrada = map read . tail . words
-- λ> solucion [5,-10,15]
-- 1
-- melgonaco
solucion :: [Int] -> Int
solucion xs = length [n | n <- xs, n < 0]
-- λ> escribeSalida 1
-- "1\n"
escribeSalida :: Int -> String
escribeSalida x = show x ++ "\n"