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 WRONG
nã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, SAAS
seria equilibrado se houvesse uma letra no meio dos dois A
s, 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 EAD
Se a palavra não se equilibrar, você deve imprimi-la, seguida de
DOES NOT BALANCE
function (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)
- - emA
vez de -> `A`?