[haskell]Хвостик списка
хороший видать язык, если выпускник мехмата, такие вопросы задает
rstrip [x] = if x == ' ' then "" else [x]
rstrip (x:xs) = let xss = rstrip xs in
if null xss then rstrip [x] else x:xss
Да, язык не для php-хуяторов.
(isDbl "Abraka Abraka " => True, isDbl "Abrakadabra" => False)?
Бывают прикольней.
Двух одинаковых подстрок, разделенных пробелом ? Вроде несложно, отсчитай до середины, распили и сравни.
В общем, м-да...
Печально все это. Больно уж строгие правила для образцов.
Жесть! А функция возвращающая True, если строка состоит из двух одинаковых подстрок, и False иначеТакое надо писать на APL: v\y=(py%2)Фy:x,' '
Как-то так. Наверное, можно еще элегантнее, но пока ничего в голову не приходит.Лучше все-таки переворачивать. Для небольших списков реверс быстрый.
rsstrip = reverse . strip_ws . reverse
where strip_ws ' ':t = strip_ws t
strip_ws str = str
Достаточно
rstrip = reverse . (dropWhile (== ' ' . reverse
IMHO так гораздо понятнее, что функция делает.
Я еще придумал cut s | ' ' <- last s = cut (init s) , хотя с точки зрения перформанса...
Оставить комментарий
apl13
Кто-нибудь может рассказать, как на хаскеле написать функцию, обрубающую, скажем, пробелы, которыми кончается строка?Чтобы