ओलंपिक रिंग्स अनुक्रम


18

चुनौती:

एक इंडेक्स पूर्णांक को देखते हुए n, या तो nइस क्रम में 'वें आइटम को आउटपुट करते हैं, या अनुक्रम को अनुक्रम सहित और सहित आउटपुट करते हैं n:

25,25,7,28,29,20,21,22,23,14,35,26,7,28,29,20,16,29,12,15,28,21,14,17,30,13,16,29,12,15,28,21,10,6,12,18,15,11,7,13,19,17,13,9,15,21,18,14,10,16,22,19,15,11,17,23,20,16,12,18,24,21,17,13,19,25,23,19,15,21,27,24,20,16,22,28,25,21,17,23,29,16,13,9,15,21,18,14,10,16,22,20,16,12,18,24,21,17,13,19

यह क्रम कैसे काम करता है?

नोट: इस स्पष्टीकरण में, सूचकांक n1-अनुक्रमित है।
संख्याओं को लंबाई की दो पंक्तियों के 1माध्यम से रखें , जहाँ वर्तमान पुनरावृत्ति और प्रयुक्त संख्याओं की लंबाई पर निर्भर करता है, और फिर उन दो पंक्तियों के 'th / right-most-ओलिंपिक रिंग्स' के अंकों को जोड़ते हैं।xn*6 - 1xn

अनुक्रम में पहली संख्या की गणना इस प्रकार है:

The length of the lines are 5 (because 1*6 - 1 = 5):
12345
67891(0)

Then leave the digits in an Olympic Rings pattern:
1 3 5
 7 9

And sum them:
1+3+5+7+9 = 25

इसलिए में n=1परिणाम 25

अनुक्रम में दूसरी संख्या की गणना इस प्रकार है:

The length of the lines are 11 (because 2*6 - 1 = 11):
12345678910
11121314151(6)

Then leave the digits in the second/right-most Olympic Rings pattern:
      7 9 0 
       4 5

And sum them:
7+9+0+4+5 = 25

इसलिए में n=2परिणाम 25

अनुक्रम में तीसरे नंबर की गणना इस प्रकार है:

The length of the lines are 17 (because 3*6 - 1 = 17):
12345678910111213
14151617181920212(2)

Then leave the digits in the third/right-most Olympic Rings pattern:
            1 2 3
             0 1

And sum them:
1+2+3+0+1 = 7

इसलिए में n=3परिणाम 7

आदि।

चुनौती नियम:

  • जब आप nअनुक्रम में 'वें आइटम' को आउटपुट करते हैं, तो आपको इनपुट को 1-अनुक्रमित के बजाय 0-अनुक्रमित के रूप में लेने की अनुमति है, लेकिन ध्यान रखें कि n*6 - 1इच्छा की गणना तब हो जाएगी (n+1)*6 - 1या (n+1)*5 + n
  • एक से अधिक अंकों की एकल संख्याओं को पहली पंक्ति के अंत में विभाजित किया जा सकता है जब हम लंबाई तक पहुँच चुके होते हैं n*5 + n-1, इसलिए यह संभव है कि 2 या अधिक अंकों वाली संख्या आंशिक रूप से पंक्ति 1 का अनुगामी भाग है, और आंशिक रूप से पंक्ति 2 का प्रमुख भाग।

सामान्य नियम:

  • यह , इसलिए बाइट्स जीत में सबसे छोटा जवाब है।
    कोड-गोल्फ भाषाओं को गैर-कोडगॉल्फिंग भाषाओं के साथ उत्तर पोस्ट करने से हतोत्साहित न करें। 'किसी भी' प्रोग्रामिंग भाषा के लिए यथासंभव कम उत्तर के साथ आने की कोशिश करें।
  • मानक नियम आपके उत्तर के लिए लागू होते हैं , इसलिए आपको उचित पैरामीटर और रिटर्न-टाइप, पूर्ण कार्यक्रमों के साथ STDIN / STDOUT, फ़ंक्शन / विधि का उपयोग करने की अनुमति दी जाती है। तुम्हारा फोन।
  • डिफ़ॉल्ट लूपोल्स निषिद्ध हैं।
  • यदि संभव हो, तो कृपया अपने कोड के लिए एक परीक्षण के साथ एक लिंक जोड़ें।
  • इसके अलावा, यदि आवश्यक हो तो एक स्पष्टीकरण जोड़ें।

परीक्षण के मामलों:

यहां 1-1,000 परीक्षण मामलों का पेस्ट-बिन है , इसलिए उनमें से किसी को चुनने के लिए स्वतंत्र महसूस करें।

कुछ अतिरिक्त उच्च परीक्षण मामले:

1010:   24
1011:   24
2500:   19
5000:   23
7500:   8
10000:  8
100000: 25

1*5 + 1-1 = 5? यह नहीं होना चाहिए 1*5 + 5 - 1 = 9?
14

@NieDzejkob नहीं, n=1तो n*5 + n-1बन जाता है 1*5 + 1-1, जो बदले में है 5 - 0 = 5
केविन क्रूजसेन

के n * 5 + n - 1बराबर नहीं है n * 6 - 1?
ब्रायन एच।

@BrianH। आप सही हैं, यह वास्तव में है। मार्टिन के रेटिना के उत्तर को देखने के बाद भी ऐसा ही देखा गया। मैंने इस छोटे सूत्र का उपयोग करने के लिए चुनौती विवरण संपादित किया है।
केविन क्रूज़सेन

जवाबों:


4

भूसी , 16 बाइट्स

ΣĊ2ṁ↑_5↑2CṁdN←*6

इसे ऑनलाइन आज़माएं!

-3 बाइट्स H.PWiz को धन्यवाद

(पहुंचे) स्पष्टीकरण:

ΣĊ2ṁ↑_5↑2CṁdN←*6⁰
Σ                 Sum
 Ċ2                Drop every second element
   ṁ↑_5             Map "take last 5 elements", then concatenate
       ↑2            Take first 2 elements
         C            Cut x into sublists of length y
          ṁdN          [1,2,3,4,5,6,7,8,9,1,0,1,1,1,2,1,3,...] (x)
             ←         Decrement (y)
              *6        Multiply with 6
                ⁰        First argument

@ केविनक्रूजसेन वेर्ड, क्योंकि मैं सिर्फ एक जोड़ने जा रहा था। हालाँकि मैं किसी भी तरह से जवाब स्वीकार करने की सलाह नहीं देता। ;-)
आउटगोफ़र

@KevinCruijssen मैंने एक जल्दबाज़ीपूर्ण स्पष्टीकरण जोड़ा है, हालाँकि यह बहुत अच्छा एटीएम नहीं है ...
द एग्री द आउटग्राफर

मेरे लिए काफी अच्छा है, स्वीकार किया गया। और व्यक्तिगत रूप से मैं चुनौतियों को स्वीकार करना पसंद करता हूं, भले ही यह वास्तव में आवश्यक नहीं है। अगर किसी को अपने से छोटा जवाब पोस्ट करने के लिए होता है, तो मैं इसे फिर से बदल दूंगा।
केविन क्रूज़सेन

@KevinCruijssen के खिलाफ मुख्य उद्देश्य यह नहीं है कि एक छोटे से उत्तर को पोस्ट करने के बाद क्या होता है, लेकिन यह कि किसी और को एक और उत्तर पोस्ट करने के लिए हतोत्साहित किया जा सकता है। वैसे भी, आपकी कॉल।
एर्गेलफर को एरिक करें

5

रेटिना , 70 68 62 बाइट्स

.+
10**
.
$.>`
~(`.+
6*$+*
)`.(.+)
L`.{$.1}
%,-6`.

,2,9`.
*
_

इसे ऑनलाइन आज़माएं!

व्याख्या

चलो इनपुट n को कॉल करते हैं , और हम 3एक उदाहरण के रूप में उपयोग करेंगे।

.+
10**

10**छोटा है के लिए 10*$&*_जो की एक स्ट्रिंग के साथ इनपुट की जगह 10n अंडरस्कोर।

.
$.>`

अब हम प्रत्येक अंडरस्कोर को स्ट्रिंग की लंबाई के साथ और उस अंडरस्कोर को शामिल करते हैं। तो यह सिर्फ से संख्या में परिणाम है 1 से 10n परिणामस्वरूप सभी एक साथ समाप्‍त हो जाता है ( 10n हमेशा आवश्यक लंबाई की दो पंक्तियों को भरने के लिए पर्याप्त होता है)।

~(`.+
6*$+*

Eval! यह और अगला चरण एक अन्य कार्यक्रम के स्रोत कोड को उत्पन्न करेगा, जो तब संक्षिप्त स्ट्रिंग के उस स्ट्रिंग के खिलाफ चलाया जाता है।

उस कार्यक्रम को उत्पन्न करने के लिए, यह चरण पहले पूर्णांक को स्ट्रिंग की जगह देता है 6n अंडरस्कोर के ( $+प्रोग्राम के मूल इनपुट को संदर्भित करता है)।

)`.(.+)
L`.{$.1}

तब उन अंडरस्कोर की जगह के साथ L`.{…}, जहां है 6N -1 (लाइनों हम देख रहे हैं की लंबाई)। इसलिए हमने एक रेगेक्स उत्पन्न किया है, जिसका क्वांटिफायर मूल इनपुट पर निर्भर करता है।

जब यह कार्यक्रम विकसित हो जाता है, तो यह लंबाई 6n-1 के भाग से मेल खाता है , जिनमें से कम से कम दो होंगे। हमारे उदाहरण इनपुट के लिए 3, हम साथ समाप्त करते हैं:

12345678910111213
14151617181920212
22324252627282930

अब हमें केवल प्रासंगिक अंकों को निकालने की आवश्यकता है।

%,-6`.

सबसे पहले, प्रत्येक पंक्ति पर ( %) हम सभी को हटाते हैं लेकिन अंतिम पांच अंक (),-6 )। जो हमें देता है

11213
20212
82930

आखिरकार:

,2,9`.
*

हम 2पहले दस में हर दूसरे अंक ( ) का विस्तार करते हैं (9 , यह 0-आधारित है) एकात्मक में। ओलिंपिक रिंग्स पोजीशन में वो होते हैं।

_

और हम परिणामी संख्याओं की संख्या को गिनते हैं, उन्हें योग करने और परिणाम को दशमलव में बदलने के लिए।


59 बाइट्स थोड़ा गन्दा हालांकि
H.PWiz

@ H.PWiz इनपुट के लिए काम नहीं करता है 1
मार्टिन एंडर

ओह, हाँ, वह होगा-7
H.PWiz


3

जाप , 33 32 30 29 28 27 बाइट्स

ओह, यह सुंदर नहीं है!

आउटपुट एन वें पद, 1-अनुक्रमित।

*6É
*2 õ ¬òU mt5n)¬¬ë2 ¯5 x

कोशिश करो


व्याख्या

                         :Implicit input of integer U           :e.g., 3
*6É    
*6                       :Input times 6                         :18
  É                      :Subtract 1                            :17
   \n                    :Assign the above to variable U

*2 õ ¬òU mt5n)¬¬ë2 ¯5 x
*2 õ                     :[1,U*2]                               :[1,2,3,...,33,34]
     ¬                   :Join to a string                      :"123...3334"
      òU                 :Partitions of length U                :["123...13","1415...212","22324...30","31323334"]
         m               :Map
          t5n)           :  Get last 5 characters               :["11213","20212","82930","23334"]
              ¬          :Join to a string                      :"11213202128293023334"
               ¬         :Split to an array                     :["1","1","2","1","3","2","0","2","1","2","8","2","9","3","0"],["2","3","3","3","4"]]
                ë2       :Get every second element              :["1","2","3","0","1","8","9","0","3","3"]
                   ¯5    :Get first 5 elements                  :["1","2","3","0","1"]
                      x  :Reduce by addition                    :7
                         :Implicit output of result



2

05AB1E , 22 21 20 बाइट्स

6*<xLJsô2£íε5£}SāÉÏO

इसे ऑनलाइन आज़माएं!

व्याख्या

6*<                    # push input*6-1
   xL                  # leave it on the stack while pushing [1 ... 12*input-2]
     J                 # join the numbers to a single string
      sô               # split the string into pieces of size input*6-1
        2£             # take the first 2 such pieces
          í            # reverse each string
           ε5£}        # take the first 5 chars of each
               S       # split to a single list of digits
                ā      # push range [1 ... len(list)]
                 ÉÏ    # keep only the numbers in the list of digits which are odd in this
                   O   # sum

वैकल्पिक 21 बाइट दृष्टिकोण

6*<©·LJƵYS24S®-ì®-(èO

@ केविनक्रूजसेन: ज़रूर। मैं स्पष्टीकरण को जोड़ने से पहले इसे थोड़ा और आज़माने का इरादा कर रहा था, लेकिन मेरे पास वास्तव में इतना समय नहीं है कि यह यहाँ है :)
एमिग्ना

धन्यवाद! और मुझे पता है कि ज्यादातर लोग स्पष्टीकरण को जोड़ने से पहले इसे जितना संभव हो उतना पहले गोल्फ करना पसंद करते हैं, लेकिन चूंकि आपके जवाब में 15+ घंटे तक कोई अपडेट नहीं हुआ था, मुझे लगा कि मैं सिर्फ स्पष्टीकरण मांगूंगा। :) अच्छा जवाब, btw!
केविन क्रूज़सेन

2

जेली , 19 बाइट्स

×6’µḤD€Ẏsḣ2ṫ€-4Ẏm2S

इसे ऑनलाइन आज़माएं!

×6’µḤD€Ẏsḣ2ṫ€-4Ẏm2S Arguments: n (1-indexed)
×6                  Multiply by 6
  ’                 Decrement
   µ                Call that value N and start a new chain with argument N
    Ḥ               Double
      €             Create an inclusive range from 1 to 2N and call this link on it
     D               Get the decimal digits of each integer in the range
       Ẏ            Concatenate the lists of digits
        s           Split into length-N chunks
         ḣ2         Get the first two elements
            €-4     Map this link over the length-2 list with right argument -4
           ṫ         Get elements from this index onwards (supports negative indices too)
               Ẏ    Concatenate the two length-5 lists into one length-10 list
                m2  Take every second element starting from the first
                  S Sum

क्या आप एक स्पष्टीकरण जोड़ना चाहेंगे?
केविन क्रूज़सेन

@KevinCruijssen यकीन है, लेकिन मैं आमतौर पर यह अनुरोध पर करता हूं, अन्यथा मैं अन्य चुनौतियों का जवाब देने, अन्य सामान करने या सोने पर ध्यान केंद्रित करता हूं: पी
एरिक द आउटग्रोफर




1

जावा 8, 138 111 109 बाइट्स

n->{String s="";int r=0,i=1;for(n=n*6-1;i<3*n;s+=i++);for(i=5;i>0;r+=s.charAt(n+n*(i%2^1)-i--)-48);return r;}

मुझे निश्चित रूप से अपनी चुनौती का जवाब देना होगा। :)
मैंने अपना प्रारंभिक कोड खो दिया है जिसे मैंने चुनौती विवरण में परीक्षा परिणाम बनाने के लिए उपयोग किया है, इसलिए मैंने अभी शुरू किया है।

स्पष्टीकरण:

इसे ऑनलाइन आज़माएं।

n->{                               // Method with integer as both parameter and return-type
  String s="";                     //  Temp String
  int r=0,                         //  Result-sum, starting at 0
      i=1;                         //  Index integer, starting at 1
  for(n=n*6-1;                     //  Replace the input with `n*6-1`
      i<3*n;                       //  Loop from 1 up to 3*n (exclusive)
      s+=i++);                     //   And append the temp-String with `i`
  for(i=5;i>0;                     //  Loop from 5 down to 0 (exclusive)
    r+=                            //   Add to the result-sum:
       s.charAt(               )-48);
                                   //    The character at index X, converted to a number,
                n+n*(i%2^1)-i--    //    with X being `n-i` (i=odd) or `n+n-i` (i=even)
  return r;}                       //  Return the result-sum
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.