Це виклик з кодом зі спеціальною системою балів, де виграє найнижчий бал.
Вступ
Багато смартфонів дозволяють вводити текст, проводячи пальцем по 2D віртуальній клавіатурі. Ця технологія зазвичай поєднується з алгоритмом прогнозування, який виводить список відгаданих слів, відсортованих від найімовірніших до найменш вірогідних.
У цьому виклику:
- Ми переходимо по одновимірній клавіатурі, обмеженій підмножиною з 26 літер.
- Не буде алгоритму прогнозування : ми хочемо, щоб кожне слово було однозначно ідентифіковане за його "проведенню послідовності".
- Ми хочемо, щоб клавіатура була оптимізована таким чином, щоб загальна кількість рухів для заданого списку слів була мінімізована.
Проведення в одному вимірі
Нижче наведена лексикографічно впорядкована 1D клавіатура з усіма літерами:
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Примітка. Це може відображатися в декількох рядках, якщо ви переглядаєте з мобільного телефону. Будь ласка, думайте про це як про один ряд.
Щоб ввести слово " GOLF " на такій клавіатурі, ми:
- почати о G
- проведіть пальцем праворуч до O
- проведіть пальцем ліворуч до F
Тому що Lрозташований між Oі F, ми просто продовжуємо прокручуватися, не зупиняючись там.
Таким чином, проведіть послідовністю " GOLF " на цій клавіатурі GOF.
Більш загально:
- Перший і останній листи завжди включаються.
- Інші літери включаються лише тоді, коли після них потрібно змінити напрямок.
Повторні букви повинні трактуватися так само, як і окремі букви. Наприклад, на наведеній вище клавіатурі:
- ' LOOP ' кодується як LP(без зупинки O)
- " GOOFY " буде кодовано як GOFY( Oвключений, тому що там є зміна напрямку - не тому, що воно подвоєне)
Оптимізація клавіатури
Розглянемо наступний перелік слів: [' ПРОГРАММУВАННЯ ', ' PUZZLES ', ' І ', ' КОД ', ' GOLF '].
Для введення цих слів нам потрібно 16 різних літер, тому нам просто потрібна клавіатура з 16 літер. Наступне - знову - лексикографічно відсортовано:
ACDEFGILMNOPRSUZ
За допомогою цієї клавіатури слова будуть закодовані таким чином:
- ПРОГРАММУВАННЯ : PRGRAMING(9 ходів)
- PUZZLES : PZES(4 ходи)
- І : AND(3 ходи)
- КОД : CODE(4 ходи)
- GOLF : GOF(3 ходи)
Це всього 23 ходи на всі слова.
Але ми можемо зробити набагато краще за допомогою цієї клавіатури:
CGODSELZNUIFRPAM
Що дає:
- ПРОГРАММУВАННЯ : PGMG(4 ходи)
- PUZZLES : PS(2 ходи)
- І : AD(2 ходи)
- КОД : CE(2 ходи)
- GOLF : GF(2 ходи)
загалом лише 12 ходів .
Оцінка клавіатури
-го слова.
Чим нижче, тим краще.
Змагання
- Враховуючи список слів, ваш код повинен вивести дійсну клавіатуру для цього списку. Клавіатура вважається дійсною, якщо кожне слово генерує унікальну послідовність пальців.
Вам дадуть 11 незалежних списків слів. Ваш рахунок буде дорівнює:
Ти можеш використовувати цей сценарій, щоб перевірити свій рахунок .
score()
Функція очікує вашу довжину коду в якості першого параметра і масив 11 клавішних рядків в якості другого параметра (в разі не має значення).Виграє подання з найменшим балом. У разі вирівнювання матчу подання, яке було подано першим, виграє.
Додаткові правила
- Ваш код повинен бути детермінованим (тобто він повинен завжди повертати один і той же вихід для заданого вводу).
- Ви повинні або A) надати тестове посилання (наприклад, на TIO), яке не вичерпується, або B) включати створені клавіатури в тілі вашої відповіді.
- Ви можете взяти слова в повному регістрі або в повному регістрі. Змішані справи заборонені.
- Вхід гарантовано мати хоча б одне рішення.
- Усі слова складаються щонайменше з двох відмінних літер.
- Ваш код повинен працювати для будь-якого дійсного введення. Він буде перевірений нерозкритим списком слів, щоб переконатися, що він не покладається на жорстко кодовані результати.
- Я залишаю за собою право збільшити розмір тестового набору в будь-який час, щоб переконатися, що матеріали не оптимізовані для початкових тестових випадків.
Списки слів
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