Questa sfida è stata pubblicata sul subreddit DailyProgrammer e ho pensato che sarebbe stato un ottimo candidato per una sfida di golf di codice. Determinare se una lettera si bilancia si basa sulla sua distanza dal punto di equilibrio e sul valore della lettera. Il valore di una lettera può essere determinato prendendo la sua posizione a un indice nell'alfabeto o sottraendo 64 dal suo valore ASCII. Inoltre, il valore di una lettera viene moltiplicato per la sua distanza dal punto di equilibrio. Diamo un'occhiata a un esempio 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.
Tuttavia, va notato che non tutte le parole si bilanciano. Ad esempio, la parola WRONG
non è bilanciata in nessuna configurazione. Inoltre, le parole devono essere bilanciate su una lettera, non tra due lettere. Ad esempio, SAAS
sarebbe bilanciato se ci fosse una lettera nel mezzo delle due A
s, ma poiché non ce n'è nessuna, non è bilanciata.
L'obiettivo
È necessario creare un programma o una funzione che accetta una parola maiuscola come argomenti di input o di funzione e quindi produce uno dei due output:
Se la parola si bilancia, allora la parola dovrebbe essere stampata con il lato sinistro, uno spazio, la lettera di ancoraggio, un altro spazio e il lato destro.
function (STEAD) -> S T EAD
Se la parola non è in equilibrio, è necessario stampare la parola, seguita da
DOES NOT BALANCE
function (WRONG) -> WRONG DOES NOT BALANCE
Puoi presumere che tutti gli input saranno maiuscoli e che ci saranno solo caratteri alfa.
Esempio I / O
function (CONSUBSTANTIATION) -> CONSUBST A NTIATION
function (WRONGHEADED) -> WRO N GHEADED
function (UNINTELLIGIBILITY) -> UNINTELL I GIBILITY
function (SUPERGLUE) -> SUPERGLUE DOES NOT BALANCE
Questo è code-golf , quindi vince la risposta più breve in byte.
BALANCE DOES NOT BALANCE
function (A)
->A
anziché -> `A`?