Giới thiệu
Santa có quá nhiều tên để xử lý, và cần sự giúp đỡ của bạn! Anh ta cần bạn để viết một chương trình hoặc một chức năng, trong đó kết quả đầu ra nice
, naughty
, very naughty
hoặc very very naughty
. Để xác định ai đó tốt bụng hay nghịch ngợm, Santa đã phát triển một thuật toán:
Trước hết, chúng tôi có được một số từ tên bằng cách thêm tất cả các chữ cái lên ( khoảng trắng bị bỏ qua ). Ví dụ:
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
Nếu số lượng ước tính bằng độ dài của tên, người đó được xem xét nice
. Điều này có nghĩa là chương trình của bạn sẽ xuất ra [name] has been nice
. Ở đây, các ước của 94
là:
Divisors of 94: 1, 2, 47, 94
Có 4
ước số, nhưng tên có độ dài 8
( bao gồm khoảng trắng ). Kết luận, Doorknob
đã không được tốt đẹp. Vì vậy, chúng tôi tiếp tục cuộc hành trình của chúng tôi:
Nghịch ngợm ( trình tự , toán học ):
Santa đã phát triển một chuỗi mới, số Giáng sinh . Đầu tiên, chúng ta sẽ xem xét các cây Giáng sinh sau:
n = 1 n = 2 n = 3 n = 4
*
***
*****
*******
*********
_ * ***
| *** *****
| ***** *******
* | ******* *********
* *** | *** ***
*** ***** n*n | ***** *****
* *** | ******* *******
***** | *** *********
* | ***** ***
|_******* *****
* *******
|_____| *********
2n+1 *
5 18 47 98
Số lượng dấu hoa thị xác định số Giáng sinh. Trình tự diễn ra như sau : 5, 18, 47, 98, 177, ...
.
Từ đây, chúng ta có thể kết luận rằng đó 94
không phải là một số Giáng sinh. Điều đó có nghĩa là Doorknob
không chỉ nghịch ngợm.
Rất nghịch ngợm ( chuỗi ):
Đối với điều này, chúng ta cần tìm hiểu nếu Doorknob
là một chuỗi thang nâng . Đây được xác định bởi các ký tự trong tên với A = 1
, B = 2
, C = 3
, v.v .:
Đầu tiên chúng ta sẽ xem xét chữ cái đầu tiên , D
. Điều này có giá trị 4
. Đây là điểm khởi đầu của chúng tôi. Bức thư tiếp theo là o
. Giá trị 15
này cao hơn giá trị trước đó của chúng tôi, vì vậy chúng tôi sẽ tiến lên một bước cao hơn trên thang. Giá trị tiếp theo cũng là một o
. Điều này là giống nhau, vì vậy chúng tôi không làm gì cả. Nếu giá trị tiếp theo cao hơn giá trị hiện tại, chúng tôi sẽ tiến lên một bước cao hơn. Nếu giá trị tiếp theo thấp hơn giá trị hiện tại, chúng tôi sẽ hạ giá trị thấp hơn. Nếu nó giống nhau, chúng ta sẽ ở cùng một bước. Điều này được hình dung cho Doorknob
, Martin Buttner
và 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
Bạn có thể thấy rằng Doorknob
kết thúc cao hơn vị trí bắt đầu. Vì vậy Doorknob has been very naughty
. Martin Buttner
và Alex A
không được cao hơn điểm xuất phát. Vì vậy, họ là cả hai very very naughty
.
Các trường hợp thử nghiệm
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
Quy tắc
- Bạn cần cung cấp một chương trình hoặc một chức năng nhận đầu vào (bao gồm ít nhất một chữ cái).
- Đầu vào sẽ bao gồm chữ hoa , chữ thường và dấu cách . Không gian được bỏ qua trong quá trình, ngoại trừ chiều dài của đầu vào.
- Đây là môn đánh gôn , vì vậy bài nộp có số byte ít nhất sẽ thắng!
n^3 + 2n^2 + 2
, btw.
ZZZ...Z = 26 * 99 = 2574
, có nghĩa là bạn chỉ cần kiểm tra số Giáng sinh tối đa và bao gồm n=13
. (Thông tin hữu ích cho những người chơi golf khác.)
Santa has been very very naughty
. Đợi đã, cái gì?
Santa Claus has been very naughty
. Cũng nên thử Saint Nick, Saint Nicholas, St. Nick, St. Nicholas, Kris Kringle, Father Christmas, Pere Noel, và tất cả các bí danh khác của anh ấy - có lẽ một trong số họ sẽ hoạt động? Mặc dù tại sao một anh chàng "tốt bụng" lại cần nhiều bí danh như vậy nhưng lại rất đáng nghi ngờ ...