Вдохновленный этой замечательной (основанной на количестве просмотров и голосов) проблемой, на которую, по моему скромному мнению, слишком мало ответов.
Учитывая (любым способом) список строк, возвращайте (любыми средствами) набор букв, который при удалении из заданных строк оставляет как можно меньшую общую длину (что осталось от) строк, сохраняя при этом каждый уникальная строка длиной не менее одного символа
Примеры:
Даны «День» и «День»; верните «ay», потому что заданные строки будут «D» и «d», когда символы «ay» удалены.
Даны "Hello World!", "Hello world." И "Hello world"; return «Helo Wrd» возвращает, потому что строки будут «!», «w.» и «w», когда символы «Helo Wrd» (с пробелом) удалены.
Даны "век", "десятилетие", "год", "месяц", "неделя", "день", "час", "минута" и "секунда"; вернуть "centurdowi", потому что заданные слова будут "y", "a", "ya", "mh", "k", "ay", "h", "m", "s", когда символы "centurdowi" "удалены.
Порядок и формат возвращаемого набора не важны.
Ответы:
Haskell,
138130 байтПример использования:
f ["century", "decade", "year", "month", "week", "day", "hour", "minute", "second"]
->"centurdoki"
.Это подход грубой силы.
Редактировать: @Seeq помог мне сэкономить 8 байтов. Благодарность!
источник
map(#s)
, чтобы тебе не нужно было переворачиватьnotElem
? РЕДАКТИРОВАТЬ: Или вы не могли просто вставить это?map(#s)
,(#)
должен быть определен какflip (filter . flip notElem)
. Но, конечно, встраивание гораздо короче. Благодарность!Пиф, 34
Принимает ввод в формате
["century", "decade", "year", "month", "week", "day", "hour", "minute", "second"]
. Советы по гольфу приветствуются, как всегда.источник
Pyth, 24 байта
Попробуйте онлайн. Тестирование.
Обратите внимание, что последний контрольный пример займет некоторое время для запуска.
Принимает ввод в виде массива, как
["Day", "day"]
.Еще один интересный, который я нашел и улучшил isaacg (также 24 байта):
источник
-J{sQhlDsM.A#f{ITm-RdQyJ
здесь