이것은 가장 낮은 점수를 얻는 사용자 정의 점수 시스템으로 코드 도전 입니다 .
소개
많은 스마트 폰 에서 2D 가상 키보드를 손가락 으로 스 와이프 하여 텍스트를 입력 할 수 있습니다. 이 기술은 일반적으로 가장 가능성이 높거나 가장 낮은 것으로 정렬 된 추측 단어 목록을 출력하는 예측 알고리즘과 결합됩니다.
이 도전에서 :
- 26 자 중 일부로 제한된 1 차원 키보드 를 쓸어 넘기겠습니다 .
- 예측 알고리즘 은 없습니다 . 각 단어를 '스 와이프 시퀀스'로 고유하게 식별하기를 원합니다.
- 주어진 단어 목록에 대한 총 이동 수가 최소화 되도록 키보드를 최적화하고자합니다 .
한 차원으로 스 와이프
아래는 모든 문자를 포함하는 사전 순으로 정렬 된 1D 키보드입니다.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
주의 : 모바일에서 탐색하는 경우 여러 행에 표시 될 수 있습니다. 그것을 한 줄로 생각하십시오.
그러한 키보드에서 ' 골프 ' 라는 단어를 입력하려면 다음을 수행하십시오 .
- ~에서 시작하다 G
- 오른쪽으로 스 와이프 O
- 왼쪽으로 스 와이프 F
때문에 L사이에 위치 O하고 F, 우리는 단지 거기에 멈추지 않고 강타 이동합니다.
따라서이 키보드에서 ' GOLF ' 의 스 와이프 시퀀스 는 GOF입니다.
더 일반적으로:
- 첫 글자와 마지막 글자가 항상 포함됩니다.
- 다른 문자는 바로 뒤에 방향 변경이 필요한 경우에만 포함됩니다.
반복되는 글자는 한 글자와 같은 방식으로 취급해야합니다. 예를 들어 위 키보드에서 :
- ' LOOP '은 다음 LP과 같이 인코딩됩니다 (중지되지 않음 O).
- ' GOOFY '는 다음과 같이 인코딩됩니다 GOFY( O두 배가 아니라 방향 변경이 있기 때문에 포함됩니다)
키보드 최적화
[ ' PROGRAMMING ', ' PUZZLES ', ' AND ', ' CODE ', ' GOLF '] 단어 목록을 고려해 봅시다 .
이 단어를 입력하려면 16 개의 고유 한 문자가 필요하므로 16 자 키보드 만 있으면됩니다. 다음은 사전 식으로 정렬됩니다.
ACDEFGILMNOPRSUZ
이 키보드를 사용하면 단어가 다음과 같이 인코딩됩니다.
- 프로그래밍 : PRGRAMING(9 움직임)
- 퍼즐 : PZES(4 이동)
- AND : AND(3 이동)
- 코드 : CODE(4 이동)
- 골프 : GOF(3 이동)
그것은 모든 단어에 대해 총 23 개의 동작 입니다.
그러나 우리는이 키보드로 훨씬 더 잘할 수 있습니다 :
CGODSELZNUIFRPAM
다음을 제공합니다.
- 프로그래밍 : PGMG(4 이동)
- 퍼즐 : PS(2 움직임)
- AND : AD(2 이동)
- 코드 : CE(2 이동)
- 골프 : GF(2 움직임)
총 12 번만 움직 입니다.
키보드 채점
낮을수록 좋습니다.
도전
- 단어 목록이 제공되면 코드 에서이 목록에 유효한 키보드를 출력해야 합니다. 각 단어가 고유 한 스 와이프 시퀀스를 생성하면 키보드가 유효한 것으로 간주됩니다.
11 개의 독립적 인 단어 목록이 제공됩니다. 당신의 점수는 다음과 같습니다 :
당신은 할 수 점수를 확인하려면이 스크립트를 사용 . 이
score()
함수는 코드 길이를 첫 번째 매개 변수로, 11 개의 키보드 문자열 배열을 두 번째 매개 변수로 예상합니다 (사건은 중요하지 않음).가장 낮은 점수를받은 제출이 승리합니다. 동점 인 경우 제출 된 제출물이 먼저 이깁니다.
추가 규칙
- 코드는 결정적 이어야합니다 (즉, 주어진 입력에 대해 항상 동일한 출력을 반환해야 함).
- A) 시간 제한이없는 테스트 링크 (예 : TIO)를 제공하거나 B) 답변 본문에 생성 된 키보드를 포함해야합니다.
- 대문자 또는 소문자로 단어를 사용할 수 있습니다. 혼합 사례는 금지되어 있습니다.
- 입력 값에는 하나 이상의 솔루션이 보장됩니다.
- 모든 단어는 최소한 2 개의 별개의 문자로 구성됩니다.
- 유효한 입력을 위해서는 코드가 작동해야합니다. 공개되지 않은 단어 목록으로 테스트하여 하드 코딩 된 결과에 의존하지 않는지 확인합니다.
- 제출물이 초기 테스트 사례에 맞게 최적화되지 않도록 언제든지 테스트 스위트의 크기를 늘릴 권리가 있습니다.
단어 목록
1) Sanity check #1 (only 4 valid solutions: HES, SEH, ESH or HSE)
SEE, SHE
2) Sanity check #2 (16 valid solutions, of which 4 are optimal: COLD, DOLC, DLOC or CLOD)
COLD, CLOD
3) Sanity check #3
ACCENTS, ACCESS
4) Warm-up
RATIO, NATION, NITRO, RIOT, IOTA, AIR, ART, RAT, TRIO, TRAIN
5) Pangram
THE, QUICK, BROWN, FOX, JUMPS, OVER, LAZY, DOG
6) Common prepositions
TO, OF, IN, FOR, ON, WITH, AT, BY, FROM, UP, ABOUT, INTO, OVER, AFTER
7) Common verbs
BE, HAVE, DO, SAY, GET, MAKE, GO, KNOW, TAKE, SEE, COME, THINK, LOOK, WANT, GIVE, USE, FIND, TELL, ASK, WORK, SEEM, FEEL, TRY, LEAVE, CALL
8) Common adjectives
GOOD, NEW, FIRST, LAST, LONG, GREAT, LITTLE, OWN, OTHER, OLD, RIGHT, BIG, HIGH, DIFFERENT, SMALL, LARGE, NEXT, EARLY, YOUNG, IMPORTANT, FEW, PUBLIC, BAD, SAME, ABLE
9) Common nouns
TIME, PERSON, YEAR, WAY, DAY, THING, MAN, WORLD, LIFE, HAND, PART, CHILD, EYE, WOMAN, PLACE, WORK, WEEK, CASE, POINT, GOVERNMENT, COMPANY, NUMBER, GROUP, PROBLEM, FACT
10) POTUS
ADAMS, ARTHUR, BUCHANAN, BUREN, BUSH, CARTER, CLEVELAND, CLINTON, COOLIDGE, EISENHOWER, FILLMORE, FORD, GARFIELD, GRANT, HARDING, HARRISON, HAYES, HOOVER, JACKSON, JEFFERSON, JOHNSON, KENNEDY, LINCOLN, MADISON, MCKINLEY, MONROE, NIXON, OBAMA, PIERCE, POLK, REAGAN, ROOSEVELT, TAFT, TAYLOR, TRUMAN, TRUMP, TYLER, WASHINGTON, WILSON
11) Transition metals
SCANDIUM, TITANIUM, VANADIUM, CHROMIUM, MANGANESE, IRON, COBALT, NICKEL, COPPER, ZINC, YTTRIUM, ZIRCONIUM, PLATINUM, GOLD, MERCURY, RUTHERFORDIUM, DUBNIUM, SEABORGIUM, BOHRIUM, HASSIUM, MEITNERIUM, UNUNBIUM, NIOBIUM, IRIDIUM, MOLYBDENUM, TECHNETIUM, RUTHENIUM, RHODIUM, PALLADIUM, SILVER, CADMIUM, HAFNIUM, TANTALUM, TUNGSTEN, RHENIUM, OSMIUM