Ce défi a été publié sur le sous-programme DailyProgrammer, et j’ai pensé que ce serait un excellent candidat pour un défi de golf. Déterminer si une lettre est en équilibre est basé sur sa distance par rapport au point d'équilibre et la valeur de la lettre. La valeur d'une lettre peut être déterminée en prenant sa position indexée dans l'alphabet ou en soustrayant 64 de sa valeur ASCII. De plus, la valeur d'une lettre est multipliée par sa distance au point de la balance. Regardons un exemple 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.
Cependant, il convient de noter que tous les mots ne sont pas en équilibre. Par exemple, le mot WRONG
ne s'équilibre dans aucune configuration. De plus, les mots doivent être en équilibre sur une lettre et non entre deux lettres. Par exemple, SAAS
équilibrerait s’il y avait une lettre au milieu des deux lettres A
, mais comme il n’y en a pas, il n’y a pas d’équilibre.
La tâche
Vous devez créer un programme ou une fonction qui prend un mot majuscule en tant qu'argument d'entrée ou argument de fonction , puis génère l'un des deux résultats suivants:
Si le mot est équilibré, alors le mot doit être imprimé avec le côté gauche, un espace, la lettre d'ancrage, un autre espace et le côté droit.
function (STEAD) -> S T EAD
Si le mot n’équilibre pas, vous devez l’imprimer, suivi de
DOES NOT BALANCE
function (WRONG) -> WRONG DOES NOT BALANCE
Vous pouvez supposer que toutes les entrées seront majuscules et qu'il n'y aura que des caractères alphabétiques.
Exemple I / O
function (CONSUBSTANTIATION) -> CONSUBST A NTIATION
function (WRONGHEADED) -> WRO N GHEADED
function (UNINTELLIGIBILITY) -> UNINTELL I GIBILITY
function (SUPERGLUE) -> SUPERGLUE DOES NOT BALANCE
C'est du code-golf , donc la réponse la plus courte en octets est gagnante.
BALANCE DOES NOT BALANCE
function (A)
->A
au lieu de -> `A`?