Ваше завдання - задавши квадратну сітку цифр ( 0-9
), виведіть один із способів згрупування цифр таким чином:
- Кожна цифра є частиною рівно однієї групи
- Усі групи мають однакову кількість цифр
- Усі групи обмежені однією формою, що нагадує багатокутник (це означає, що кожна цифра в групі знаходиться поряд із [ліворуч, праворуч, вгору, вниз] принаймні однією іншою цифрою тієї ж групи, якщо кожна група не має 1 елемента).
- Усі групи мають однакову суму
Сітка вводу завжди буде квадратною: ви можете вибрати будь-який спосіб введення, який вам хотів (включаючи подачу аргументів функції чи методу). Крім того, вхід подасть кількість груп, до яких ваша програма повинна згрупувати цифри.
Приклад введення:
Припустимо, ваш формат введення є stringOfDigits numberOfGroups
.
Прикладом даних може бути:
156790809 3
що перекладається на (сітку sqrt(9) * sqrt(9)
)
1 5 6
7 9 0
8 0 9
яку вам доведеться розділити на 3 групи, кожна з яких повинна мати 9 / 3 = 3
елементи з однаковою сумою.
Вихідні дані: Вихідні дані повинні бути рядком цифр, з необов'язковими пробілами та новими рядками для форматування, з кожною цифрою, за якою буква a-z
вказує його групу. У numberOfTotalDigits / numberOfGroups
кожній групі повинні бути саме елементи. Вам ніколи не доведеться щось ділити на більш ніж 26 груп.
Приклад виводу:
1a 5a 6b
7c 9a 0b
8c 0c 9b
Зауважте, що заміна всіх a
s на b
s і b
s на a
s однаково справедлива. Поки кожну групу позначають окремою літерою, результат є дійсним.
Окрім того, я очікую, що більшість програм щось виводить у такий спосіб, оскільки нові рядки / пробіли необов’язкові:
1a5a6b7c9a0b8c0c9b
У цьому випадку додавання всіх цифр групи a
, b
або c
складає 15. Крім того, всі групи пов'язані деяким багатокутником.
Недійсні результати:
1a 5a 6b
7c 9a 0c
8c 0b 9b
тому що групи не утворюють багатокутників (конкретно, 6b
ізоляція і 0c
також самотня).
1a 5a 6b
7c 9a 0b
8c 0b 9b
тому що група b
має 4 елементи, тоді як c
лише 2.
І т.д.
Якщо немає правильного рішення, ваша програма може зробити що завгодно (наприклад, зупинити, вийти з ладу, запустити назавжди), але якщо ваша програма друкує, None
коли немає правильного рішення, -15
до вашого рахунку.
Якщо рішення більше, ніж одне, вам потрібно роздрукувати лише одне, але -20
якщо ваша програма роздруковує всі, розділені деяким роздільником.
Це код гольфу, тому найкоротший код (з бонусами) виграє!
156790889 3
здається, так і має бути156790809 3
6b
ізоляцію, а не то0b
.