Цей виклик був розміщений на subreddit DailyProgrammer, і я подумав, що це буде чудовим кандидатом на виклик з кодовим гольфом. Визначення того, чи буква врівноважується, базується на його відстані від точки балансу та значенні букви. Значення букви можна визначити або зайнявши її одноіндексовану позицію в алфавіті, або віднявши 64 від її значення ASCII. Крім того, значення листа множиться на відстань від точки балансу. Давайте розглянемо приклад STEAD
:
STEAD -> 19, 20, 5, 1, 4 ASCII values
This balances at T, and I'll show you why!
S T EAD -> 1*19 = 1*5 + 2*1 + 3*4
Each set of letters on either side sums to the same value, so
T is the anchor.
Однак слід зазначити, що не всі слова врівноважуються. Наприклад, слово WRONG
не врівноважує жодну конфігурацію. Також слова повинні врівноважуватися на букві, а не між двома літерами. Наприклад, SAAS
було б врівноважено, якби в середині двох A
s був лист , але оскільки немає жодного, він не врівноважує.
Завдання
Вам слід створити програму або функцію, яка бере велике слово як аргументи вводу або функції , а потім виробляє один з двох виходів:
Якщо слово врівноважує, то слово слід друкувати лівою стороною, пробілом, буквою якоря, іншим пробілом та правою стороною.
function (STEAD) -> S T EAD
Якщо слово не врівноважує, слід роздрукувати слово, за яким слід
DOES NOT BALANCE
function (WRONG) -> WRONG DOES NOT BALANCE
Ви можете припустити, що весь вхід буде великим і в ньому будуть лише альфа-символи.
Приклад вводу / виводу
function (CONSUBSTANTIATION) -> CONSUBST A NTIATION
function (WRONGHEADED) -> WRO N GHEADED
function (UNINTELLIGIBILITY) -> UNINTELL I GIBILITY
function (SUPERGLUE) -> SUPERGLUE DOES NOT BALANCE
Це код-гольф , тому найкоротша відповідь у байтах виграє.
BALANCE DOES NOT BALANCE
function (A)
->A
замість -> `A`?