Một bình luận tôi đã thực hiện trong cuộc trò chuyện và cuộc trò chuyện tiếp theo đã truyền cảm hứng cho tôi để thực hiện thử thách này.
Tôi có phải là người duy nhất được nhắc đến bởi tên viết tắt quanh đây không? Chúng tôi là tất cả về những thứ golf xuống. Chúng ta có thể có MB và D-nob và ... O.
Nếu tôi được gọi là "CH" thì tôi nghĩ mọi người khác cũng nên có biệt danh dựa trên ban đầu.
Dưới đây là danh sách 100 người dùng lập trình Câu đố & Code Golf hàng đầu theo danh tiếng để chơi với:
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
Thử thách
Viết chương trình hoặc hàm nhận danh sách các chuỗi và đưa ra danh sách các chuỗi khác có biệt danh dựa trên ban đầu, duy nhất, tối thiểu của chúng, ưu tiên cho các chuỗi gần hơn với đầu danh sách.
Áp dụng phương pháp này cho từng chuỗi S trong danh sách theo thứ tự được đưa ra để tạo biệt hiệu:
- Tách S thành các từ cách nhau bởi khoảng trắng, loại bỏ tất cả khoảng trắng trong quy trình.
- Liệt kê các tiền tố không trống của chuỗi các chữ cái đầu tiên của các từ trong S, từ ngắn nhất đến dài nhất.
ví dụJust Some Name
→J
,JS
,JSN
- Chọn mục đầu tiên trong danh sách này không trùng với biệt hiệu đã được chọn làm biệt hiệu cho S. Dừng nếu chọn biệt hiệu, tiếp tục bước 4 nếu không.
ví dụ: nếuJust Some Name
là chuỗi đầu tiên thìJ
được đảm bảo là biệt danh. - Liệt kê lại các tiền tố một lần nữa, nhưng lần này bao gồm chữ cái thứ hai của từ đầu tiên ở vị trí tự nhiên.
ví dụJust Some Name
→Ju
,JuS
,JuSN
- Thực hiện tương tự như trong bước 3 cho danh sách này, dừng lại nếu tìm thấy một biệt danh duy nhất.
- Lặp lại quy trình này với các chữ cái còn lại của từ đầu tiên, cuối cùng chèn các chữ cái vào từ thứ hai, sau đó là từ thứ ba, v.v., cho đến khi tìm thấy một biệt danh duy nhất.
ví dụ Chuỗi độc đáo đầu tiên được liệt kê ở đây sẽ là nickname:
Jus
,JusS
,JusSN
Just
,JustS
,JustSN
Just
,JustSo
,JustSoN
(lưu ý rằngo
không được thêm vào sauJust
)
Just
,JustSom
,JustSomN
Just
,JustSome
,JustSomeN
Just
,JustSome
,JustSomeNa
Just
,JustSome
,JustSomeNam
Just
,JustSome
,JustSomeName
Cuối cùng, tất cả các chuỗi đầu vào sẽ có một biệt danh duy nhất (có khả năng giống hệt với chuỗi). Bạn có thể cho rằng không có chuỗi đầu vào nào sẽ ánh xạ tới cùng một tên hiệu bằng phương thức này.
Thí dụ
Cập nhật để sửa lỗi của tôi!
Đối với đầu vào
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
biệt danh sẽ là
M
D
P
H
m
De
Di
DC
MB
Ma
MaB
Mar
MarB
Mars
MarsB
Chi tiết
- Đầu vào có thể từ một tệp (một tên trên mỗi dòng) hoặc một tên tại một thời điểm thông qua stdin / dòng lệnh hoặc dưới dạng đối số chức năng của danh sách các chuỗi hoặc dưới dạng hàm đối số của một chuỗi có dòng mới giữa các tên.
- Đầu ra phải được in ra thiết bị xuất chuẩn (một biệt danh trên mỗi dòng) hoặc được hàm trả về dưới dạng danh sách các chuỗi hoặc dưới dạng một chuỗi có dòng mới giữa các biệt danh.
- Các chương trình lý tưởng sẽ hoạt động cho các tên có chứa bất kỳ ký tự nào ngoại trừ các đầu cuối dòng . Tuy nhiên, bạn có thể cho rằng tất cả các tên chỉ chứa ASCII có thể in được . (Tên PPCG không.)
- Chỉ có ký tự không gian thông thường được tính là một dấu tách từ. Không gian hàng đầu và dấu có thể được bỏ qua.
Chấm điểm
Đệ trình ngắn nhất tính bằng byte thắng. Tiebreaker đi đến câu trả lời được đăng sớm nhất.