บทนำ
ซานต้ามีชื่อมากเกินไปที่จะดำเนินการและต้องการความช่วยเหลือของคุณ! เขาต้องการให้คุณเขียนโปรแกรมหรือฟังก์ชั่นที่เอาท์พุท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
ยังไม่ดี ดังนั้นเราจึงเดินทางต่อไป:
Naughty ( ลำดับ , คณิตศาสตร์ ):
ซานตาได้มีการพัฒนาลำดับใหม่จำนวนคริสต์มาส อันดับแรกเราจะดูต้นคริสต์มาสต่อไปนี้:
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
คุณไม่ได้รับชื่อเต็มของเขา: ควรลอง Saint Nick, Saint Nicholas, St. Nick, St. Nicholas, Kris Kringle, พ่อคริสต์มาส, Pere Noel และนามแฝงอื่น ๆ ของเขาทั้งหมด - บางทีหนึ่งในนั้นจะทำงานหรือไม่ แม้ว่าทำไมผู้ชาย "ดี" ควรมีชื่อแทนจำนวนมากจึงน่าสงสัยอยู่แล้ว ...