Этот вызов был опубликован в подразделе 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
с, но так как нет ни одного, это не балансирует.
Задание
Вы должны создать программу или функцию , которая принимает в качестве заглавного слова в качестве входных или функциональных аргументов , а затем производит один из двух выходов:
Если слово балансирует, то слово должно быть напечатано с левой стороны, пробелом, буквой привязки, другим пробелом и правой стороной.
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`?