Este desafío fue publicado en el subreddit DailyProgrammer, y pensé que sería un gran candidato para un desafío de golf de código. Determinar si una carta se equilibra se basa en su distancia desde el punto de equilibrio y el valor de la letra. El valor de una letra se puede determinar tomando su posición indexada en el alfabeto o restando 64 de su valor ASCII. Además, el valor de una letra se multiplica por su distancia desde el punto de equilibrio. Veamos un ejemplo 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.
Sin embargo, debe tenerse en cuenta que no todas las palabras se equilibran. Por ejemplo, la palabra WRONG
no se equilibra en ninguna configuración. Además, las palabras deben equilibrarse en una letra, no entre dos letras. Por ejemplo, SAAS
se equilibraría si hubiera una letra en el medio de las dos A
s, pero como no hay ninguna, no se equilibra.
La tarea
Debe crear un programa o función que tome una palabra en mayúscula como argumentos de entrada o función , y luego produzca una de dos salidas:
Si la palabra se equilibra, la palabra debe imprimirse con el lado izquierdo, un espacio, la letra de anclaje, otro espacio y el lado derecho.
function (STEAD) -> S T EAD
Si la palabra no se equilibra, debe imprimirla, seguida de
DOES NOT BALANCE
function (WRONG) -> WRONG DOES NOT BALANCE
Puede suponer que todas las entradas serán mayúsculas y solo habrá caracteres alfabéticos.
Ejemplo de E / S
function (CONSUBSTANTIATION) -> CONSUBST A NTIATION
function (WRONGHEADED) -> WRO N GHEADED
function (UNINTELLIGIBILITY) -> UNINTELL I GIBILITY
function (SUPERGLUE) -> SUPERGLUE DOES NOT BALANCE
Este es el código de golf , por lo que gana la respuesta más corta en bytes.
BALANCE DOES NOT BALANCE
function (A)
-> enA
lugar de -> `A`?