このチャレンジはDailyProgrammer subredditに投稿されており、コードゴルフチャレンジの素晴らしい候補になると思いました。レターのバランスが取れているかどうかの判断は、バランス点からの距離とレターの価値に基づいています。文字の値は、アルファベットの1インデックス位置を取得するか、ASCII値から64を引くことで決定できます。さらに、文字の値には、バランスポイントからの距離が乗算されます。例を見てみましょう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.
ただし、すべての単語のバランスが取れているわけではないことに注意してください。たとえばWRONG
、どの構成でも単語のバランスが取れていません。また、単語は2つの文字の間ではなく、文字でバランスを取る必要があります。たとえばSAAS
、2つA
の中間に文字があった場合はバランスが取れますが、何もないためバランスが取れません。
タスク
入力または関数の引数として大文字の単語を取り込んで、次の2つの出力のいずれかを生成するプログラムまたは関数を作成する必要があります。
単語のバランスが取れている場合、単語は左側、スペース、アンカー文字、別のスペース、右側で印刷する必要があります。
function (STEAD) -> S T EAD
単語のバランスが取れていない場合は、単語を印刷してから、
DOES NOT BALANCE
function (WRONG) -> WRONG DOES NOT BALANCE
すべての入力が大文字で、アルファベット文字のみが存在すると想定できます。
I / Oの例
function (CONSUBSTANTIATION) -> CONSUBST A NTIATION
function (WRONGHEADED) -> WRO N GHEADED
function (UNINTELLIGIBILITY) -> UNINTELL I GIBILITY
function (SUPERGLUE) -> SUPERGLUE DOES NOT BALANCE
これはcode-golfであるため、バイト単位の最短回答が優先されます。
BALANCE DOES NOT BALANCE
function (A)
> -A
代わりに- > `A`?