0 / 0 / 1
Регистрация: 01.03.2016
Сообщений: 64
1

Заданы две строки. Убрать из более длинной строки последние символы так, чтобы длина строк стала одинаковой и склеить п

31.10.2017, 09:11. Показов 2114. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создайте функцию (функции) для обработки списков, используя встроенные функции

Haskell
1
2
 
length, !!, (:), drop, take, head, tale, last, elem, sum, product, maximum, minimum, ++, concat, reverse:
Заданы две строки. Убрать из более длинной строки последние символы так, чтобы длина строк стала одинаковой и склеить полученные строки.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2017, 09:11
Ответы с готовыми решениями:

Заданы две строки одинаковой длины. Построить новую строку, состоящую из символов как одной, так и другой
помогите пожайлуста. Заданы две строки одинаковой длины. Построить новую строку, состоящую из...

Добавить лишние «пробелы» между словами так, чтобы длина строки стала кратна 60
Текст некоторой строки вводится в режиме диалога и содержит простое предложение, в котором слова...

Необходимо изменить строку так, чтобы длина строки стала равна заданной длине
Дана строка текста, в котором нет начальных и конечных пробелов. Необходимо изменить её так, чтобы...

Необходимо изменить строку так, чтобы длина строки стала равна заданной длине
Дана строка текста, в котором нет начальных и конечных пробелов. Необходимо изменить ее так, чтобы...

5
Модератор
Эксперт функциональных языков программированияЭксперт Python
36578 / 20308 / 4218
Регистрация: 12.02.2012
Сообщений: 33,606
Записей в блоге: 13
31.10.2017, 10:06 2
Haskell
1
2
3
4
5
task :: String -> String -> String
task x y | (lx >= ly) = (take ly x) ++ y
         | otherwise  = x ++ (take lx y)
           where lx = length x
                 ly = length y
Добавлено через 8 минут
Еще вариант:

Haskell
1
2
3
4
5
6
task' :: String -> String -> String
task' x y = fst tmp ++ snd tmp
            where tmp = h x y ("","")
                  h "" _ p = p
                  h _ "" p = p
                  h (x:xs) (y:ys) (px,py) = h xs ys (px++[x],py++[y])
2
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
31.10.2017, 13:48 3
Лучший ответ Сообщение было отмечено Catstail как решение

Решение

Haskell
1
2
3
4
task x y = 
    l x y x ++ l x y y 
    where 
        l a b = take (min (length a) (length b))
4
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,802
Записей в блоге: 9
31.10.2017, 17:13 4
Ну, вот. Хорошие варианты уже разобрали.
Haskell
1
2
3
4
task :: String -> String -> String
task = go [] []
    where go s1 s2 (x:xs) (y:ys) = go (x:s1) (y:s2) xs ys
          go s1 s2 _ _ = reverse s1 ++ reverse s2
Если бы был другой набор функций, то
Haskell
1
2
task :: String -> String -> String
task s = uncurry (++) . unzip . zip s
3
Модератор
5046 / 3275 / 526
Регистрация: 01.06.2013
Сообщений: 6,802
Записей в блоге: 9
01.11.2017, 20:47 5
Кстати, решение pycture, упрощается
Haskell
1
2
task x y = l x ++ l y 
    where l = take (min (length x) (length y))
2
0 / 0 / 1
Регистрация: 01.03.2016
Сообщений: 64
04.11.2017, 23:27  [ТС] 6
Спасибо!
0
04.11.2017, 23:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2017, 23:27
Помогаю со студенческими работами здесь

Переделать функцию поиска самой длинной строки так, чтобы она правильно печатала размер произвольно длинной входной строки и воспроизводила ее
Переделать головную функцию поиска самой длинной строки так, чтобы она правильно печатала ...

Начиная с первой строки сдвинуть все строки на две вниз, а последние две перенести на место первых двух строк
Используя Procedure Swap!

Заданы две строки. Можно ли переставить буквы в одном из слов так, чтобы слова стали одинаковыми?
F. Заданы две строки А и В. Можно ли переставить буквы в одном из слов так, чтобы слова стали...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru