Напишите функцию или программу, которая при получении списка имен выводит или возвращает список, в котором дубликаты имен имеют уникальную сокращенную версию своей фамилии.
Входные данные:
Список имен, где имя определяется данным именем, а фамилия отделена пробелом. Имена - это непустые строки, содержащие только заглавные и строчные буквы. Список может быть массивом строк или имен, разделенных постоянным не-альфа, непробельным символом, но выходные данные должны быть в том же формате, что и входные.
Выход:
Список введенных имен в том же порядке и формате, что и входные данные, которые были изменены этими правилами:
- Для уникальных имен выведите только имя
- Для имен с одинаковым именем:
- Помимо имени, добавьте самую короткую уникальную версию своей фамилии, которая не принадлежит другому имени, а затем точку. Например:
John Clancy, John Smith
становитсяJohn C.,John S.
иJames Brown, James Bratte
становитсяJames Bro.,James Bra.
- Если одна фамилия является подмножеством другой, например
Julian King,Julian Kingsley
, вернуть полную фамилию меньшей без точки. Пример станетJulian King,Julian King.
- Помимо имени, добавьте самую короткую уникальную версию своей фамилии, которая не принадлежит другому имени, а затем точку. Например:
- В основном точка представляет регулярное выражение
.+
, где ему должно соответствовать только одно имя. - Вы можете предположить, что никто не будет иметь одинаковое имя и фамилию
- Имена чувствительны к регистру
Тестовые случаи:
John Clancy,Julie Walker,John Walker,Julie Clancy
->John C.,Julie W.,John W.,Julie C.
Julian King,Jack Johnson,Julian Kingsley
>Julian King,Jack,Julian King.
Jack Brown,Jack Black,Jack Blue
>Jack Br.,Jack Bla.,Jack Blu.
John Storm,Jon Snow,Johnny Storm
>John,Jon,Johnny
Jill DeSoma,Jill Desmond
>Jill DeS.,Jill Des.
XxXnO sCOppeXxX,XxXNO MERCYXxX
>XxXnO,XxXNO
Это код-гольф , поэтому выигрывает наименьшее количество байтов для каждого языка.
Angela C.
тестовый пример?Julie
ой, спасибо. ИсправленоОтветы:
Желе ,
34 33 3230 байтМонадическая ссылка, содержащая список списков символов (то есть список «строк») и возвращающая сокращения в том же формате и в относительном порядке.
Попробуйте онлайн! (полный набор тестов программы)
Как?
источник
Python 2 , 130 байт
Попробуйте онлайн!
Сначала генерирует все псевдонимы, как показано ниже:
Затем выбирает первый * по одному из каждого списка , который является не менее частым в
sum(n,[])
. Это всегда будет первый уникальный ник.Обратите внимание, что это
n
включает в себя ошибочные псевдонимы'John .'
и т. Д., Но они никогда не будут выбраны.(В
min
любом случае * CPython 2.7 делает это. Этот код может быть не переносимым !)источник
Рубин
165 162 161160 байтВключает 1 пробел, если возвращается только данное имя, например.
"John "
Попробуйте онлайн!
163 байта, если вы не хотите завершать пробел
Попробуйте онлайн!
источник