История изменений
Исправление balsoft, (текущая версия) :
Тред не читал
portmanteau a b = take n a ++ b
where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
main = getContents >>= mapM_ (putStrLn . (\[a, b] -> portmanteau a b) . words) . lines
Если хотим склеивать таким образом все слова в строке, а не только 2, то
portmanteau a b = take n a ++ b
where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
portmanteauMany = foldl portmanteau ""
main = getContents >>= mapM_ (putStrLn . portmanteauMany . words) . lines
Исправление balsoft, :
Тред не читал
portmanteau a b = take n a ++ b
where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
main = getContents >>= mapM_ (putStrLn . uncurry portmanteau . (\[a, b] -> (a, b)) . words) . lines
Если хотим склеивать таким образом все слова в строке, а не только 2, то
portmanteau a b = take n a ++ b
where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
portmanteauMany = foldl portmanteau ""
main = getContents >>= mapM_ (putStrLn . portmanteauMany . words) . lines
Исправление balsoft, :
Тред не читал
portmanteau a b = take n a ++ b
where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
main = getContents >>= mapM_ (putStrLn . uncurry portmanteau . (\[a, b] -> (a, b)) . words) . lines
Если хотим склеивать таким образом все слова в строке, а не только 2, то
portmanteau a b = take n a ++ b
where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
portmanteauMany = foldl portmanteau []
main = getContents >>= mapM_ (putStrLn . portmanteauMany . words) . lines
Исходная версия balsoft, :
Тред не читал
portmanteau a b = take n a ++ b
where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
main = getContents >>= mapM_ (putStrLn . curry portmanteau . (\[a, b] -> (a, b)) . words) . lines
Если хотим склеивать таким образом все слова в строке, а не только 2, то
portmanteau a b = take n a ++ b
where n = head [ x | x <- [0..length a], drop x a == take (length a - x) b ]
portmanteauMany = foldl portmanteau []
main = getContents >>= mapM_ (putStrLn . portmanteauMany . words) . lines