Đối với thử thách này, bạn phải triển khai Abbrevmô-đun của Ruby với càng ít mã càng tốt.
Thử thách
Đầu vào sẽ là bất cứ thứ gì ngôn ngữ của bạn có dưới dạng một mảng (mảng, danh sách, chuỗi, v.v.) của chuỗi. Bạn có thể viết một hàm hoặc bạn có thể chấp nhận các từ được phân tách bằng dấu phẩy trên STDIN.
Sau đó, bạn phải tính toán tập hợp các tiền tố rõ ràng cho các chuỗi đó. Điều này có nghĩa là bạn phải trả lại một hàm băm (hoặc bản đồ, đối tượng, v.v.) cho các chuỗi gốc của chúng.
"Tiền tố" là một chuỗi con của chuỗi gốc bắt đầu từ đầu chuỗi. Ví dụ: "pref" là tiền tố của từ "tiền tố."
Một tiền tố rõ ràng là một tiền tố chỉ có thể có nghĩa là một từ. Ví dụ: nếu đầu vào của bạn là
car,cat, thì đócakhông phải là tiền tố rõ ràng bởi vì nó có thể có nghĩa là "xe hơi" hoặc "con mèo".Ngoại lệ cho quy tắc này là một từ luôn luôn là tiền tố của chính nó. Ví dụ: nếu bạn có đầu vào như
car,carpet,car:carphải nằm trong đầu ra của bạn.
Sau đó, bạn có thể trả về hàm băm / bản đồ / đối tượng / v.v. từ chức năng của bạn (hoặc thực hiện tương đương trong ngôn ngữ của bạn) hoặc in nó ra STDOUT
key:valuetheo cặp dưới dạngf:foo,fo:foo,.... (Các cặp khóa-giá trị cũng có thể được phân tách bằng khoảng trắng nếu nó làm cho mã của bạn ngắn hơn.)
Các trường hợp thử nghiệm
Input code,golf,going
Output c:code,co:code,cod:code,code:code,gol:golf,golf:golf,goi:going,goin:going,going:going
Input pie
Output p:pie,pi:pie,pie:pie
Input pie,pier,pierre
Output pie:pie,pier:pier,pierr:pierre,pierre:pierre
Input a,dog
Output a:a,d:dog,do:dog,dog:dog
Quy tắc
Đầu vào sẽ không chứa các yếu tố trùng lặp.
Đầu ra của bạn có thể theo thứ tự bất kỳ; bạn không phải sắp xếp nó
Bạn không được sử dụng
Abbrevmô-đun / chức năng / thứ tích hợp như của Ruby.Đây là mã golf , vì vậy mã ngắn nhất tính bằng byte sẽ giành chiến thắng!
key:value\nkey:value\nkey:value...?