介绍
圣诞老人的名字太多了,需要您的帮助!他需要你写一个程序或功能,它输出nice
,naughty
,very naughty
或very very naughty
。为了确定某人的好坏或顽皮,圣诞老人开发了一种算法:
首先,通过将所有字母加起来(忽略空格)从名称中获得一个数字。例如:
Doorknob =
D = 4
o = 15
o = 15
r = 18
k = 11
n = 14
o = 15
b = 2
4 + 15 + 15 + 18 + 11 + 14 + 15 + 2 = 94
如果除数等于名字的长度,则认为该人nice
。这意味着您的程序应该输出[name] has been nice
。在这里,除数为94
:
Divisors of 94: 1, 2, 47, 94
有4
除数,但名称有长度8
(包括空格)。结论,Doorknob
不是很好。因此,我们继续我们的旅程:
圣诞老人开发了一个新的序列,即圣诞节编号。首先,我们将看以下圣诞树:
n = 1 n = 2 n = 3 n = 4
*
***
*****
*******
*********
_ * ***
| *** *****
| ***** *******
* | ******* *********
* *** | *** ***
*** ***** n*n | ***** *****
* *** | ******* *******
***** | *** *********
* | ***** ***
|_******* *****
* *******
|_____| *********
2n+1 *
5 18 47 98
星号的数量确定圣诞节的数字。顺序如下:5, 18, 47, 98, 177, ...
。
从这里,我们可以得出结论,这94
不是圣诞节数字。这意味着这Doorknob
不仅仅是顽皮的。
很顽皮(字符串):
为此,我们需要找出是否Doorknob
是一个上升梯子串。这是由字母的名称确定A = 1
,B = 2
,C = 3
,等:
首先,我们将看第一个字母D
。这具有价值4
。这是我们的出发点。下一封信是o
。该值15
大于我们先前的值,因此我们在阶梯上走得更高。下一个值也是o
。一样,所以我们什么也没做。如果下一个值高于当前值,我们将走更高的一步。如果下一个值低于当前值,我们将降低ster。如果相同,我们将保持相同的步骤。这种可视化的Doorknob
,Martin Buttner
和Alex A
:
O
/ \
R N B
/ \ /
O-O K T N U L X
/ / \ / \ / \ / \ / \
D M R I B T-T A E A
\ / \
A N R
\ /
E
您可以看到Doorknob
结束位置高于起始位置。这样Doorknob has been very naughty
。Martin Buttner
并Alex A
没有高于起点。所以他们都是very very naughty
。
测试用例
Input: Doorknob
Output: Doorknob has been very naughty
Input: Martin Buttner
Output: Martin Buttner has been very very naughty
Input: Jakube
Output: Jakube has been nice
Input: B
Output: B has been very very naughty
规则
- 您需要提供一个接受输入(至少包含一个字母)的程序或函数。
- 输入将包含大写字母,小写字母和空格。在该过程中,除了输入的长度外,空格都将被忽略。
- 这是代码高尔夫球,因此以最少的字节提交为准!
n^3 + 2n^2 + 2
btw 生成。
ZZZ...Z = 26 * 99 = 2574
,这意味着您只需要检查圣诞节数字即可n=13
。(对其他高尔夫球手有用的信息。)
Santa has been very very naughty
。等一下
Santa Claus has been very naughty
。还应该尝试圣尼克,圣尼古拉斯,圣尼克,圣尼古拉斯,克里斯·克林格,圣诞节父亲,佩雷·诺埃尔(Pere Noel)以及他所有其他的别名-也许其中一个会起作用吗?尽管为什么一个“好”的家伙应该需要这么多别名已经很让人怀疑了……