메뉴 바로 가기
일반적으로 사용자 메뉴는와 같은 키보드 단축키로 액세스 Alt + (a letter)
하거나 모든 텍스트 상자의 초점이 맞지 않을 때 문자를 누르기 만하면됩니다 ( gmail 스타일).
당신의 작업
메뉴 항목을 입력으로 지정하면 각 메뉴 항목에 적절한 단축키를 부여해야합니다.
메뉴 항목 (문자열 배열 또는 해당 언어의 언어로 된 단어)을 수용하고 단일 문자에서 메뉴 항목으로 사전 또는 해시 맵을 리턴하는 함수 또는 프로그램을 작성하십시오.
매개 변수를 사용하고 값을 리턴하거나 STDIN을 사용하여 결과를 STDOUT에 출력 할 수 있습니다. 전역 / 범위 변수가 이미 입력으로 채워져 있다고 가정 할 수 없습니다 .
적절한 글자를 결정하는 알고리즘
- 기본적으로 단어의 첫 번째 사용 가능한 문자입니다. 아래의 가정과 예를 참조하십시오.
- 모든 항목의 문자를 사용할 수없는 경우 바로 가기는입니다
(a letter) + (a number)
. 항목에서 선택하는 문자는 임의적입니다. 숫자는 0에서 시작하여 1 씩 증가해야합니다. 모든 단축키는 고유합니다. 아래의 세 번째 예를 참조하십시오.
가정
- 입력은 세트가 될 것입니다. 즉, 반복이 없습니다. 모든 엔트리는 고유합니다.
- 입력 길이는 음이 아닌 정수 (언어의 최대 MAX_INT) 일 수 있습니다.
- 대소 문자 구분 : 입력은 대소 문자를 구분하지만 대소 문자를 무시할 때 고유하게 유지됩니다. 결과는 원래 케이스와 함께 원래 항목을 포함해야합니다. 그러나 출력 바로 가기 문자는 대소 문자를 구분하지 않습니다.
- 모든 입력 단어는 숫자로 끝나지 않습니다.
- "악한 입력"은 테스트되지 않습니다. "악한 입력"은 특정 문자의 카운터를 10 배 이상 증가시켜야합니다.
예
아래 예제는 JSON이지만 배열 및 사전에 해당 언어를 사용하거나 STD I / O를 사용하는 경우 입력 및 출력에 읽을 수있는 형식 (예 : csv 또는 공백)을 사용할 수 있습니다. 구분 된 값).
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'}
삼.
Input: ['a', 'b', 'aa', 'bb', 'bbq', 'bbb', 'ba']
Output: {a:'a', b:'b', a0:'aa', b0:'bb', q:'bbq', b1:'bbb', b2:'ba'}
승리 조건
가장 짧은 코드가 승리합니다. ASCII 만 허용됩니다.
['ab', 'a']
제공 해야합니까 ? {a:'ab', a0:'a'}
{b:'ab', a:'a'}