Einführung
Der Weihnachtsmann hat zu viele Namen, um sie zu verarbeiten, und braucht Ihre Hilfe! Er braucht Sie ein Programm oder eine Funktion zu schreiben , die ausgibt nice
, naughty
, very naughty
oder very very naughty
. Um festzustellen, wie nett oder frech jemand ist, hatte der Weihnachtsmann einen Algorithmus entwickelt:
Zunächst erhalten wir aus dem Namen eine Zahl, indem wir alle Buchstaben addieren ( Leerzeichen werden ignoriert ). Beispielsweise:
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
Wenn die Anzahl der Teiler der Länge des Namens entspricht, wird die Person berücksichtigt nice
. Dies bedeutet, dass Ihr Programm ausgeben sollte [name] has been nice
. Hier sind die Teiler von 94
:
Divisors of 94: 1, 2, 47, 94
Es gibt 4
Teiler, aber der Name hat Länge 8
( einschließlich Leerzeichen ). Fazit, Doorknob
war nicht nett. Also setzen wir unsere Reise fort:
Der Weihnachtsmann hat eine neue Sequenz entwickelt, die Weihnachtsnummer . Zuerst schauen wir uns die folgenden Weihnachtsbäume an:
n = 1 n = 2 n = 3 n = 4
*
***
*****
*******
*********
_ * ***
| *** *****
| ***** *******
* | ******* *********
* *** | *** ***
*** ***** n*n | ***** *****
* *** | ******* *******
***** | *** *********
* | ***** ***
|_******* *****
* *******
|_____| *********
2n+1 *
5 18 47 98
Die Anzahl der Sterne bestimmt die Weihnachtszahl. Die Sequenz geht wie folgt: 5, 18, 47, 98, 177, ...
.
Hieraus können wir schließen, dass 94
es sich nicht um eine Weihnachtszahl handelt. Das heißt, das Doorknob
war nicht nur ungezogen.
Sehr frech ( String ):
Dazu müssen wir herausfinden, ob Doorknob
es sich um eine Raise-Ladder-Saite handelt . Dies wird durch die Buchstaben im Namen bestimmt mit A = 1
, B = 2
, C = 3
, etc .:
Zuerst schauen wir uns den ersten Buchstaben an, den D
. Das hat Wert 4
. Dies ist unser Ausgangspunkt. Der nächste Buchstabe ist o
. Dies hat den Wert 15
, der höher ist als unser vorheriger Wert, also gehen wir einen Schritt höher auf der Leiter. Der nächste Wert ist ebenfalls ein o
. Das ist das gleiche, also tun wir nichts. Ist der nächste Wert höher als der aktuelle Wert, gehen wir einen Schritt höher. Wenn der nächste Wert niedriger als der aktuelle Wert ist, werden wir einen Ster niedriger gehen. Wenn es dasselbe ist, bleiben wir auf dem gleichen Schritt. Diese visualisiert für Doorknob
, Martin Buttner
und 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
Sie können sehen, dass Doorknob
das höher als die Startposition endete. Also Doorknob has been very naughty
. Martin Buttner
und Alex A
nicht höher als der Ausgangspunkt. Sie sind also beide very very naughty
.
Testfälle
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
Regeln
- Sie müssen ein Programm oder eine Funktion bereitstellen, die Eingaben akzeptiert (die aus mindestens einem Buchstaben bestehen).
- Die Eingabe besteht aus Großbuchstaben , Kleinbuchstaben und Leerzeichen . Leerzeichen werden während des Vorgangs mit Ausnahme der Länge der Eingabe ignoriert.
- Das ist Code-Golf , also gewinnt die Einsendung mit der geringsten Anzahl von Bytes!
n^3 + 2n^2 + 2
übrigens von generiert.
ZZZ...Z = 26 * 99 = 2574
, was bedeutet, dass Sie nur Weihnachtsnummern bis einschließlich überprüfen müssen n=13
. (Nützliche Informationen für andere Golfer.)
Santa has been very very naughty
. Warte was?
Santa Claus has been very naughty
. Sollten Sie auch den Heiligen Nick, den Heiligen Nikolaus, den Heiligen Nick, den Heiligen Nikolaus, Kris Kringle, den Weihnachtsmann, Pere Noel und all seine anderen Pseudonyme probieren - vielleicht funktioniert einer von ihnen? Obwohl, warum ein "netter" Kerl so viele Aliase brauchen sollte, ist schon ziemlich verdächtig ...