To wyzwanie zostało opublikowane na subreddicie DailyProgrammer i pomyślałem, że będzie to świetny kandydat do wyzwania golfowego. Ustalenie, czy saldo litery odbywa się na podstawie odległości od punktu równowagi i wartości litery. Wartość litery można ustalić, przyjmując jej jedną indeksowaną pozycję w alfabecie, lub odejmując 64 od jej wartości ASCII. Ponadto wartość litery mnoży się przez jej odległość od punktu równowagi. Spójrzmy na przykład 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.
Należy jednak zauważyć, że nie wszystkie słowa równoważą się. Na przykład słowo WRONG
nie balansuje w żadnej konfiguracji. Ponadto słowa muszą znajdować się na literze, a nie między dwiema literami. Na przykład SAAS
zrównoważyłby się, gdyby w środku dwóch liter była litera A
, ale ponieważ nie ma żadnej litery , nie jest ona równoważona.
Zadanie
Powinieneś utworzyć program lub funkcję, która przyjmuje wielkie litery jako argumenty wejściowe lub funkcyjne , a następnie tworzy jedno z dwóch wyników:
Jeśli słowo się równoważy, należy je wydrukować z lewą stroną, spacją, literą kotwicy, inną spacją i prawą stroną.
function (STEAD) -> S T EAD
Jeśli słowo się nie równoważy, wydrukuj je, a następnie
DOES NOT BALANCE
function (WRONG) -> WRONG DOES NOT BALANCE
Możesz założyć, że wszystkie dane wejściowe będą pisane wielkimi literami i będą tylko znaki alfabetu.
Przykład I / O
function (CONSUBSTANTIATION) -> CONSUBST A NTIATION
function (WRONGHEADED) -> WRO N GHEADED
function (UNINTELLIGIBILITY) -> UNINTELL I GIBILITY
function (SUPERGLUE) -> SUPERGLUE DOES NOT BALANCE
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w bajtach.
BALANCE DOES NOT BALANCE
function (A)
->A
zamiast -> `A`?