Diese Herausforderung wurde auf dem DailyProgrammer-Subreddit veröffentlicht, und ich dachte, es wäre ein großartiger Kandidat für eine Code-Golf-Herausforderung. Das Bestimmen, ob ein Buchstabe ausgeglichen ist, basiert auf seiner Entfernung vom Gleichgewichtspunkt und dem Wert des Buchstabens. Der Wert eines Buchstabens kann bestimmt werden, indem entweder seine Position im Alphabet mit einem Index angegeben wird oder indem 64 von seinem ASCII-Wert subtrahiert wird. Darüber hinaus wird der Wert eines Buchstabens mit seinem Abstand vom Gleichgewichtspunkt multipliziert. Schauen wir uns ein Beispiel an 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.
Es ist jedoch zu beachten, dass nicht alle Wörter ausgewogen sind. Beispielsweise WRONG
stimmt das Wort in keiner Konfiguration überein. Wörter müssen sich auch in einem Buchstaben befinden, nicht in zwei Buchstaben. Zum Beispiel SAAS
würde balancieren, wenn es einen Buchstaben in der Mitte der beiden A
s gäbe, aber da es keinen gibt, wird es nicht balanciert.
Die Aufgabe
Sie sollten ein Programm oder eine Funktion erstellen , die ein Wort in Großbuchstaben als Eingabe- oder Funktionsargumente verwendet und anschließend eine von zwei Ausgaben erzeugt:
Wenn das Wort ausgeglichen ist, sollte das Wort mit der linken Seite, einem Leerzeichen, dem Ankerbuchstaben, einem weiteren Leerzeichen und der rechten Seite gedruckt werden.
function (STEAD) -> S T EAD
Wenn das Wort nicht ausgeglichen ist, sollten Sie das Wort ausdrucken, gefolgt von
DOES NOT BALANCE
function (WRONG) -> WRONG DOES NOT BALANCE
Sie können davon ausgehen, dass alle Eingaben in Großbuchstaben erfolgen und es nur Buchstaben gibt.
Beispiel I / O
function (CONSUBSTANTIATION) -> CONSUBST A NTIATION
function (WRONGHEADED) -> WRO N GHEADED
function (UNINTELLIGIBILITY) -> UNINTELL I GIBILITY
function (SUPERGLUE) -> SUPERGLUE DOES NOT BALANCE
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
BALANCE DOES NOT BALANCE
function (A)
->A
statt -> `A`?