Phím tắt
Theo truyền thống, các menu người dùng có thể truy cập bằng các phím tắt, chẳng hạn như Alt + (a letter)
, hoặc thậm chí chỉ cần nhấn chữ cái khi tất cả các hộp văn bản không được tập trung ( kiểu gmail ).
Nhiệm vụ của bạn
Đưa ra các mục menu làm đầu vào, nhiệm vụ của bạn là cấp cho mỗi mục menu một chữ cái tắt thích hợp.
Viết một hàm hoặc một chương trình chấp nhận một tập hợp các từ - các mục trong menu (dưới dạng một chuỗi các chuỗi hoặc tương đương với ngôn ngữ của bạn) và trả về một từ điển hoặc một hashmap, từ một chữ cái cho một mục menu.
Bạn có thể sử dụng một tham số và trả về một giá trị hoặc sử dụng STDIN và xuất kết quả của bạn thành STDOUT. Bạn không được phép giả sử biến toàn cục / phạm vi đã được điền với đầu vào.
Thuật toán để xác định chữ cái thích hợp
- Về cơ bản nó là chữ cái đầu tiên có sẵn của từ này. Xem các giả định và ví dụ dưới đây.
- Trong trường hợp tất cả các chữ cái của mục nhập không có sẵn, các phím tắt sẽ có
(a letter) + (a number)
. Những chữ cái bạn chọn từ mục nhập là tùy ý. Số phải bắt đầu từ 0 và được tăng thêm 1 - sao cho tất cả các phím tắt là duy nhất. Xem ví dụ thứ ba dưới đây.
Giả định
- Đầu vào sẽ là Tập hợp, tức là không lặp lại, mỗi mục nhập là duy nhất.
- Độ dài của đầu vào có thể là bất kỳ số nguyên không âm nào (tối đa MAX_INT ngôn ngữ của bạn).
- Phân biệt chữ hoa chữ thường: Đầu vào phân biệt chữ hoa chữ thường, (nhưng sẽ duy nhất khi bỏ qua trường hợp). Các kết quả sẽ chứa các mục gốc với vỏ ban đầu của chúng. Tuy nhiên, các chữ cái tắt đầu ra không phân biệt chữ hoa chữ thường.
- Tất cả các từ đầu vào sẽ không kết thúc bằng số.
- Không có "đầu vào xấu" sẽ được kiểm tra. "Đầu vào xấu" là như vậy mà bạn phải tăng bộ đếm của một chữ cái nhất định hơn 10 lần.
Ví dụ
Các ví dụ bên dưới có trong JSON, nhưng bạn có thể sử dụng ngôn ngữ của mình tương đương cho một mảng và Từ điển hoặc - trong trường hợp bạn đang sử dụng STD I / O - mọi định dạng có thể đọc được cho đầu vào và đầu ra của bạn (chẳng hạn như csv hoặc thậm chí là khoảng trắng- các giá trị riêng biệt).
1.
Input: ['File', 'Edit', 'View', 'Help']
Output: {f:'File', e:'Edit', v:'View', h:'Help'}
2.
Input: ['Foo', 'Bar', 'FooBar', 'FooBars']
Output: {f:'Foo', b:'Bar', o:'FooBar', a:'FooBars'}
3.
Input: ['a', 'b', 'aa', 'bb', 'bbq', 'bbb', 'ba']
Output: {a:'a', b:'b', a0:'aa', b0:'bb', q:'bbq', b1:'bbb', b2:'ba'}
Điều kiện chiến thắng
Mã ngắn nhất sẽ thắng. Chỉ cho phép ASCII.
['ab', 'a']
cho {a:'ab', a0:'a'}
hay {b:'ab', a:'a'}
?