제가 채팅에서 언급 한 내용 과 그에 따른 대화는이 도전에 대한 영감을주었습니다.
내가 이니셜로 언급 한 유일한 사람입니까? 우리는 모두 골프를 치는 일에 관한 것입니다. 우리는 MB와 D 노브를 가질 수 있고 ... O.
내가 "CH"로 알려진 경우 다른 모든 사람도 초기 기반 별명을 가져야한다고 생각합니다.
평판이 좋은 100 대 프로그래밍 퍼즐 및 코드 골프 사용자 목록은 다음과 같습니다.
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
세부
- 입력은 파일 (한 줄에 하나의 이름) 또는 stdin / 명령 줄을 통해 한 번에 하나의 이름 또는 문자열 목록의 함수 인수 또는 이름 사이에 줄 바꿈이있는 단일 문자열의 함수 인수로 입력 할 수 있습니다.
- 출력은 stdout (행당 하나의 별명)으로 인쇄되거나 함수에 의해 문자열 목록 또는 별명 사이에 줄 바꿈이있는 하나의 문자열로 리턴되어야합니다.
- 프로그램은 줄 종결 자를 제외한 모든 문자가 포함 된 이름에 적합합니다 . 그러나 모든 이름에는 인쇄 가능한 ASCII 만 포함되어 있다고 가정 할 수 있습니다 . (PPCG 이름은 그렇지 않습니다.)
- 일반 공백 문자 만 단어 구분 기호로 계산합니다. 선행 및 후행 공백은 무시할 수 있습니다.