Комментарий , который я сделал в чате и последующий разговор вдохновил меня , чтобы сделать этот вызов.
Я единственный, кого здесь называют инициалы? Мы все о гольфе. У нас могут быть MB и D-nob и ... O.
Если я известен как «CH», то я думаю, что все остальные также должны иметь псевдоним, основанный на начальной букве.
Вот список из 100 лучших программистов и пользователей Code Golf, по репутации которых можно поиграть:
Martin Büttner
Doorknob
Peter Taylor
Howard
marinus
Dennis
DigitalTrauma
David Carraher
primo
squeamish ossifrage
Keith Randall
Ilmari Karonen
Quincunx
Optimizer
grc
Calvin's Hobbies
ugoren
Mig
gnibbler
Sp3000
aditsu
histocrat
Ventero
xnor
mniip
Geobits
J B
Joe Z.
Gareth
Jan Dvorak
isaacg
edc65
Victor
steveverrill
feersum
ace
Danko Durbić
xfix
PhiNotPi
user23013
manatwork
es1024
Joey
daniero
boothby
nneonneo
Joey Adams
Timwi
FireFly
dansalmo
grovesNL
breadbox
Timtech
Flonk
algorithmshark
Johannes Kuhn
Yimin Rong
copy
belisarius
professorfish
Ypnypn
trichoplax
Darren Stone
Riot
ProgramFOX
TheDoctor
swish
minitech
Jason C
Tobia
Falko
PleaseStand
VisioN
leftaroundabout
alephalpha
FUZxxl
Peter Olson
Eelvex
marcog
MichaelT
w0lf
Ell
Kyle Kanos
qwr
flawr
James_pic
MtnViewMark
cjfaure
hammar
bitpwner
Heiko Oberdiek
proud haskeller
dan04
plannapus
Mr Lister
randomra
AShelly
ɐɔıʇǝɥʇuʎs
Alexandru
user unknown
( вот как я понял )
Вызов
Напишите программу или функцию, которая берет список строк и выводит другой список строк с их минимальными уникальными псевдонимами, основанными на начальных значениях, отдавая предпочтение тем из них, которые ближе к началу списка.
Примените этот метод к каждой строке S в списке в порядке, заданном для создания псевдонимов:
- Разделите S на слова, разделенные пробелами, удалив все пробелы в процессе.
- Перечислите непустые префиксы строки из первых букв слов в S, от самых коротких до самых длинных.
например ,Just Some Name
→J
,JS
,JSN
- Выберите первый элемент в этом списке, который не идентичен уже выбранному псевдониму, в качестве псевдонима для S. Остановите, если был выбран псевдоним, в противном случае перейдите к шагу 4.
Например, еслиJust Some Name
первая строка, тоJ
гарантированно будет псевдоним. - Перечислите префиксы еще раз, но на этот раз включите вторую букву первого слова в ее естественном месте.
например ,Just Some Name
→Ju
,JuS
,JuSN
- Сделайте то же самое как в шаге 3 для этого списка, останавливаясь, если уникальный псевдоним найден.
- Повторите этот процесс с оставшимися буквами первого слова, в конце концов вставляя буквы во второе слово, затем в третье и т. Д., Пока не будет найден уникальный псевдоним.
например, первая уникальная строка , перечисленные здесь будет имя:
Jus
,JusS
,JusSN
Just
,JustS
,JustSN
Just
,JustSo
,JustSoN
(заметим , чтоo
не был добавлен послеJust
)
Just
,JustSom
,JustSomN
Just
,JustSome
,JustSomeN
Just
,JustSome
,JustSomeNa
Just
,JustSome
,JustSomeNam
Just
,JustSome
,JustSomeName
В конце все входные строки должны заканчиваться уникальным псевдонимом (потенциально идентичным строке). Вы можете предположить, что ни одна из входных строк не будет отображаться с тем же псевдонимом, используя этот метод.
пример
Обновлено, чтобы исправить мою ошибку!
Для ввода
Martin Buttner
Doorknob
Peter Taylor
Howard
marinus
Dennis
DigitalTrauma
David Carraher
Martin Bitter
Martin Butter
Martin Battle
Martini Beer
Mart Beer
Mars Bar
Mars Barn
прозвища будут
M
D
P
H
m
De
Di
DC
MB
Ma
MaB
Mar
MarB
Mars
MarsB
Детали
- Входные данные могут быть из файла (одно имя на строку) или по одному имени за раз через стандартный ввод / командную строку, либо в качестве аргумента функции списка строк, либо в виде аргумента функции из одной строки с символами новой строки между именами.
- Вывод должен быть напечатан на стандартный вывод (один псевдоним на строку) или возвращен функцией в виде списка строк или в виде одной строки с символами новой строки между псевдонимами.
- В идеале программы будут работать с именами, содержащими любые символы, кроме разделителей строк . Однако вы можете предположить, что все имена содержат только печатный ASCII . (Названия PPCG нет.)
- Только обычный символ пробела считается разделителем слов. Начальные и конечные пробелы можно игнорировать.
счет
Победит самая короткая подача в байтах . Tiebreaker отправляется на ответ, отправленный раньше всего.