Esse desafio foi publicado no subreddit DailyProgrammer e imaginei que seria um ótimo candidato para um desafio de golfe com código. Determinar se uma letra é equilibrada é baseada em sua distância do ponto de equilíbrio e no valor da letra. O valor de uma letra pode ser determinado assumindo sua posição de um índice no alfabeto ou subtraindo 64 de seu valor ASCII. Além disso, o valor de uma letra é multiplicado pela sua distância do ponto de equilíbrio. Vamos dar uma olhada em um exemplo 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.
No entanto, deve-se notar que nem todas as palavras se equilibram. Por exemplo, a palavra WRONGnão se equilibra em nenhuma configuração. Além disso, as palavras devem se equilibrar em uma letra, não entre duas letras. Por exemplo, SAASseria equilibrado se houvesse uma letra no meio dos dois As, mas como não há nenhuma, ela não será equilibrada.
A tarefa
Você deve criar um programa ou função que receba uma palavra em maiúscula como argumentos de entrada ou função e, em seguida, produza uma das duas saídas:
Se a palavra se equilibrar, ela deverá ser impressa com o lado esquerdo, um espaço, a letra âncora, outro espaço e o lado direito.
function (STEAD) -> S T EADSe a palavra não se equilibrar, você deve imprimi-la, seguida de
DOES NOT BALANCEfunction (WRONG) -> WRONG DOES NOT BALANCE
Você pode supor que todas as entradas serão maiúsculas e haverá apenas caracteres alfa.
Exemplo de E / S
function (CONSUBSTANTIATION) -> CONSUBST A NTIATION
function (WRONGHEADED) -> WRO N GHEADED
function (UNINTELLIGIBILITY) -> UNINTELL I GIBILITY
function (SUPERGLUE) -> SUPERGLUE DOES NOT BALANCE
Isso é código-golfe , então a resposta mais curta em bytes vence.
BALANCE DOES NOT BALANCE
function (A)- - emAvez de -> `A`?