से पूर्णांक मूल्यों का क्रमपरिवर्तन पर विचार 1
करने के लिए N
। उदाहरण के लिए यह उदाहरण N = 4
:
[1, 3, 4, 2]
हम इस सूची को चक्रीय मानते हैं, जैसे कि 1
और 2
इसे आसन्न माना जाता है। इस तरह की सूची के लिए हम एक मात्रा की गणना कर सकते हैं, आसन्न मूल्यों का कुल चुकता अंतर है:
(1-3)² + (3-4)² + (4-2)² + (2-1)² = 10
आपका कार्य एक क्रमांकन ढूंढना है जो एक सकारात्मक पूर्णांक को देखते हुए, इस मात्रा को अधिकतम करता है N
। N = 4
उपरोक्त उदाहरण के मामले में इष्टतम नहीं है (वास्तव में, यह न्यूनतम है)। हम 18
निम्नलिखित क्रमचय (और साथ ही कई अन्य) के साथ कुल चुकता अंतर प्राप्त कर सकते हैं :
[1, 4, 2, 3]
आपका एल्गोरिथ्म बहुपद समय ( N
) में चलना चाहिए । विशेष रूप से, आप बस सभी क्रमपरिवर्तन के कुल चुकता अंतर की गणना नहीं कर सकते।
आप STDIN (या निकटतम विकल्प), कमांड-लाइन तर्क या फ़ंक्शन तर्क के माध्यम से इनपुट लेने और STDOUT (या निकटतम वैकल्पिक), फ़ंक्शन रिटर्न मान या फ़ंक्शन (आउट) पैरामीटर के माध्यम से परिणाम आउटपुट कर सकते हैं, एक प्रोग्राम या फ़ंक्शन लिख सकते हैं।
आउटपुट किसी भी सुविधाजनक, अस्पष्ट, फ्लैट सूची या स्ट्रिंग प्रारूप में हो सकता है। आप से मूल्यों के साथ एक सूची वापस जाने के लिए चुन सकते हैं 0
करने के लिए N-1
के बजाय 1
करने के लिए N
।
मानक कोड-गोल्फ नियम लागू होते हैं।
परीक्षण डेटा
इस समस्या के लिए एक अच्छा विश्लेषणात्मक समाधान है। उदाहरण के लिए सभी मान्य समाधान N = 10
निम्न सूची (चक्रीय पारियों और उत्क्रमण तक) के बराबर हैं:
[7, 5, 6, 4, 8, 2, 10, 1, 9, 3]
मैं उससे बहुत अधिक प्रकट नहीं करना चाहता (हालांकि यह संभवतः पैटर्न का पता लगाने के लिए पर्याप्त है), इसलिए किसी भी अधिक उदाहरण देने के बजाय, आप जांच सकते हैं कि आपके परिणामों में दिए गए कुल चुकता अंतर हैं N
:
N Total squared difference
1 0
2 2
3 6
4 18
5 36
6 66
7 106
8 162
9 232
10 322
33 11936
100 333202
333 12308236
1000 333332002
यह OEIS प्रविष्टि A064842 है (जिसमें आप फंस गए हैं तो इस चुनौती के समाधान के साथ एक पेपर का संदर्भ भी है)।
(i<n/2||n%2)^i%2?i+1:n-i
।