परिचय
सांता के पास प्रक्रिया करने के लिए बहुत सारे नाम हैं, और आपकी मदद की जरूरत है! उन्होंने कहा कि आप एक प्रोग्राम या एक समारोह है, जो आउटपुट लिखने के लिए की जरूरत है 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
divisors, लेकिन नाम की लंबाई है 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
। यह वही है, इसलिए हम कुछ नहीं कर रहे हैं। यदि अगला मान वर्तमान मूल्य से अधिक है, तो हम एक कदम और ऊपर जाएंगे। यदि अगला मान वर्तमान मूल्य से कम है, तो हम एक निम्न स्तर पर जाएंगे। यदि यह समान है, तो हम उसी चरण पर बने रहेंगे। इसके लिए कल्पना की 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
:। संत निक, सेंट निकोलस, सेंट निक, सेंट निकोलस, क्रिस क्रिंगल, फादर क्रिसमस, पेरे नोएल और उनके सभी अन्य उपनामों को भी आज़माना चाहिए - शायद उनमें से एक काम करेगा? हालांकि एक "अच्छे" आदमी को इतने सारे उपनामों की आवश्यकता क्यों है, यह पहले से ही काफी संदिग्ध है ...