(Це моє перше кодове питання про гольф)
Коли я був дитиною, ми з татом винайшли гру, де номерний знак, який ми бачимо на автомобілях, може давати певні бали на основі деяких досить простих правил:
X кількість тієї самої літери чи цифри дає X-1 бали, приклади:
22 = 1 point
aa = 1 point
5555 = 3 points
Цифри повинні бути поруч з іншими, тому 3353дає лише 1 бал, оскільки 5 порушує послідовність 3.
Послідовність X чисел у порядку зростання або спадання, як мінімум, 3, наводять X балів, приклади:
123 = 3 points
9753 = 4 points
147 = 3 points
Система точок працює лише для одноцифрових чисел, тому 1919не дає очок, а 14710лише 3, (147).
Послідовності можна комбінувати, щоб зробити більше точок, прикладів:
1135 = 4 points (1 point for 11 and 3 points for 135)
34543 = 6 points (3 points for 345 and 3 points for 543)
Однак вам заборонено розбивати більшу послідовність на 2 менші послідовності для додаткових точок: 1234 = 123, 234 (6 points)заборонено.
Ваше завдання, задавши послідовність, визначити кількість балів, які дає номерний знак.
У Данії ліцензійні знаки структуровані так: CC II III, де C є символом, а я цілим числом, і, таким чином, мої приклади вкладу відображають цю структуру. Якщо ви хочете, ви можете зробити послідовність відповідно до вашої власної структури, або, якщо ви відчуваєте, що це справді авантюризм, дозвольте програмі проаналізувати структуру номерних знаків і таким чином дозволити їй працювати на будь-якому типі номерних знаків у всьому світі. Явно вказуйте структуру, яку ви вирішили використовувати у своїй відповіді.
Ви можете взяти вклад будь-яким способом, будь ласка, або рядок або масив, здається, мають для мене найбільш сенс.
Тестовий вхід | вихід:
AA 11 111 | 5
AB 15 436 | 3
OJ 82 645 | 0
UI 65 456 | 6
HH 45 670 | 5
YH 00 244 | 5
AJ 00 754 | 1
Зважаючи на характер вибору власної структури або навіть покриття всіх структур, я не обов'язково бачу, як можна чітко визначити переможця. Я думаю, що переможець буде найкоротшим байтом структури, яку вирішив. (І не приймайте такі дані, як CICIC, просто щоб зробити це легше для себе)
Редагувати:
Через запитання коментарів, я маю поділитися кількома додатковими відомостями: Послідовність висхідних чи низхідних чисел відноситься до арифметичної послідовності, тому X +/- a * 0, X +/- a * 1, ... X +/- a * n тощо. Отже, 3-5-7, наприклад, є 3 + 2 * 0, 3 + 2 * 1, 3 + 2 * 2. Послідовність, однак, не повинна починатися з 0 і не закінчуватися в 0.
БІЛЬШЕ редагування:
Ви можете ввести будь-який вподобаний вам спосіб, вам не потрібно вводити пробіли, тире чи будь-яку іншу річ, яка робить номерний знак більш читабельним. Якщо ви можете зберегти байти, приймаючи лише великі літери або щось подібне, ви можете зробити це також. Єдина вимога - ваша програма може приймати рядок / масив / все, що містить і символи, і цифри, і виводити правильну кількість балів відповідно до зазначених правил.
XX 87 654. Я придумав те, що було правильним для всіх ваших тестових випадків, але якимось чином невірним для цього. Працюю над його виправленням.
CCIIIII, немає пробілів), інакше в цій проблемі відсутній об'єктивний критерій виграшу, який нам тут потрібен. Як є, "(І не сприймайте такі дані, як CICIC, лише щоб полегшити для себе)" дуже суб'єктивно. Що таке, а чи не допустима структура?
IA99999(містить зменшується послідовність кодових точок, але не цифр).