Giriş
Noel Baba'nın işlemek için çok fazla adı var ve yardımınıza ihtiyacı var! O bir program veya çıktılar bir işlev yazmak gerekir nice
, naughty
, very naughty
veya very very naughty
. Birinin ne kadar güzel ya da yaramaz olduğunu belirlemek için, Santa bir algoritma geliştirmişti:
Her şeyden önce, tüm harfleri ekleyerek ( boşluklar yok sayılır ) adından bir numara alırız . Örneğin:
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
Bölenlerin sayısı ismin uzunluğuna eşitse, kişi kabul edilir nice
. Bu, programınızın çıktı vermesi gerektiği anlamına gelir [name] has been nice
. İşte, bölenler 94
:
Divisors of 94: 1, 2, 47, 94
Orada 4
bölenler, ancak ad uzunluğu 8
( boşluklar dahil ). Sonuç, Doorknob
iyi olmamıştır. Bu yüzden yolculuğumuza devam ediyoruz:
Noel Baba yeni bir dizi, Noel numarası geliştirdi . İlk olarak, aşağıdaki Noel ağaçlarına bakacağız:
n = 1 n = 2 n = 3 n = 4
*
***
*****
*******
*********
_ * ***
| *** *****
| ***** *******
* | ******* *********
* *** | *** ***
*** ***** n*n | ***** *****
* *** | ******* *******
***** | *** *********
* | ***** ***
|_******* *****
* *******
|_____| *********
2n+1 *
5 18 47 98
Yıldız sayısı Noel sayısını belirler. Dizisi aşağıdaki gibi gider: 5, 18, 47, 98, 177, ...
.
Buradan 94
, bunun bir Noel numarası olmadığı sonucuna varabiliriz . Bunun anlamı Doorknob
sadece yaramaz olmadı.
Çok yaramaz ( string ):
Bunun için biz olmadığını öğrenmek gerek Doorknob
bir olan yetiştirme merdiven dizesi . Bu İsimlendirmedeki harflerle tarafından belirlenir A = 1
, B = 2
, C = 3
vb .:
İlk önce ilk harfe bakacağız D
. Bunun değeri var 4
. Bu bizim başlangıç noktamız. Bir sonraki harf o
. Bu, önceki değerimizden 15
daha yüksek olan bir değere sahiptir, bu yüzden merdivenden bir adım daha yükseğe çıkıyoruz. Bir sonraki değer de bir o
. Bu aynı, biz hiçbir şey yapmıyoruz. Bir sonraki değer geçerli değerden yüksekse, bir adım daha yükseğe çıkacağız. Bir sonraki değer geçerli değerden düşükse, sterlin daha düşük bir değere gideceğiz. Aynı ise, aynı adımda kalacağız. Bu için görsel Doorknob
, Martin Buttner
ve 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
Bunun Doorknob
başlangıç konumundan daha yüksek olduğunu görebilirsiniz . Yani Doorknob has been very naughty
. Martin Buttner
ve Alex A
başlangıç noktasından daha yüksek olmadı. Yani ikisi de very very naughty
.
Test durumları
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
kurallar
- En az bir harften oluşan, giriş yapan bir program veya işlev sağlamalısınız.
- Giriş, büyük harflerden , küçük harflerden ve boşluklardan oluşacaktır . Girdi uzunluğu dışında, işlem sırasında boşluklar yoksayılır.
- Bu kod-golf , bu yüzden en az sayıda bayt olan gönderim kazanıyor!
n^3 + 2n^2 + 2
btw tarafından üretilir .
ZZZ...Z = 26 * 99 = 2574
, yani sadece dahil olmak üzere Noel numaralarını kontrol etmeniz gereken anlamına gelir n=13
. (Diğer golfçüler için faydalı bilgiler.)
Santa has been very very naughty
. Bir dakika ne?
Santa Claus has been very naughty
. Aziz Nick, Aziz Nicholas, Aziz Nick, Aziz Nicholas, Kris Kringle, Noel Baba, Pere Noel ve diğer tüm takma adlarını da denemeli - belki bunlardan biri işe yarayacak mı? "Güzel" bir adamın bu kadar çok takma adı olması gerektiğine rağmen zaten şüpheli ...