这项挑战已发布在DailyProgrammer subreddit上,我认为这将是进行代码高尔夫挑战的最佳人选。确定字母是否平衡是基于其到平衡点的距离以及字母的值。字母的值可以通过采用字母的一个索引位置或从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
在任何配置中都不平衡。同样,单词必须在一个字母上保持平衡,而不是两个字母之间。例如,SAAS
如果两个字母中间有一个字母,则将保持平衡A
,但是由于没有字母,它将不平衡。
任务
您应该创建一个程序或函数,该程序或函数以大写字母作为输入或函数参数,然后生成两个输出之一:
如果单词平衡,则单词的左侧,空格,锚字母,另一个空格和右侧应打印出来。
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
这是代码高尔夫球,因此最短的答案以字节为单位。
BALANCE DOES NOT BALANCE
function (A)
->A
代替->`A`?