एक १, दो १, एक २ एक १


16

चुनौती:

एक प्रोग्राम बनाएं जो एक सकारात्मक गैर-शून्य पूर्णांक का इनपुट लेता है और नीचे वर्णित अनुक्रम में 4 अगले संख्याओं को आउटपुट करता है।

ध्यान दें: यदि इनपुट वास्तव में एक सकारात्मक गैर-शून्य पूर्णांक है, तो यह जांचना आवश्यक नहीं है

अनुक्रम:

इस क्रम में प्रत्येक संख्या (पहले के अलावा, जो इनपुट है) n अंकों से बना होगा, जहां n एक सम संख्या है। यदि हम संख्या को n / 2 जोड़े में विभाजित करते हैं, तो प्रत्येक जोड़ी के लिए, पहला अंक पिछली संख्या में दूसरे अंक के दिखाई देने की मात्रा का होना चाहिए।

दृश्य स्पष्टीकरण :
इस उदाहरण पर विचार करें "अनुक्रम स्टार्टर" या इनपुट 6577
अनुक्रम में अगला नंबर इस तरह दिखना चाहिए 161527
क्योंकि इनपुट में 1 "6", 1 "5" और 2 "7" है।

यदि इनपुट में बहुत से अंक हैं (एक एकल अंक के 9 से अधिक) तो आप एक सही आउटपुट प्राप्त करने में सक्षम नहीं होंगे
उदाहरण: 111111111111(12 1) के
क्रम में अगला नंबर 12 1 का वर्णन करना है। इस प्रकार हमने इसे ९ १ और ३ १ के योग में विभाजित किया (राशि ९ + ३ = १२)
अगली संख्या:9131

आपको इनपुट के लिए 4 बार पुनरावृति करनी चाहिए, और इसे आउटपुट करना चाहिए (या तो 4 पूर्णांक की एक सूची / सरणी लौटाएं, या उन्हें एक स्थान के साथ अलग करके आउटपुट करें, नए अंक भी स्वीकार्य हैं)

"संख्या को बहुत तरीकों से लिखा जा सकता है, मैं इसे कैसे लिखूं?" :
यदि आप इसके बारे में सोचते हैं, तो उदाहरण इनपुट 6577को 271516 (दो 7, एक 5, एक छह) के रूप में भी लिखा जा सकता है। हालाँकि यह गैर-वैध आउटपुट है। आपको बाईं से दाईं ओर संख्या दर्ज करना चाहिए। इस प्रकार 161527. यदि 7657आप 7 की राशि को पुनरावृत्त करते हैं, तो 6 की तत्कालीन राशि 5 की राशि है, इस प्रकार अधिकतम उत्पादन होगा271615

उदाहरण I / O:

इनपुट: 75
आउटपुट:1715 211715 12311715 4112131715

इनपुट: 1
आउटपुट:11 21 1211 3112

इनपुट: 111111111111(१ १ १)
आउटपुट:9131 192113 31191213 23411912


यह "कहो, जो तुम देखते हो" प्रश्न के विपरीत है, क्योंकि अनुक्रम अलग हैं: https://oeis.org/A005150 <- यह एक इस तरह से नंबर देता है:
इनपुट: 1211 आउटपुट: 111221
अनुक्रम के लिए मैं पूछ रहा हूं
इनपुट करेगा : 1211 आउटपुट: 3112

दो क्रम अलग हैं और अलग-अलग एल्गोरिदम की आवश्यकता है।
मेरा अनुक्रम पूछा: https://oeis.org/A063850
"संभावित डुप्लिकेट" अनुक्रम: https://oeis.org/A005150


महत्वपूर्ण विनिर्देश:

चूँकि यह उन लोगों के लिए पर्याप्त रूप से स्पष्ट नहीं था, जिन्होंने इस प्रश्न का उत्तर देने का प्रयास किया, k वर्णों के लिए सही आउटपुट जहाँ k> 9 "kc" (जहाँ c char है) लेकिन 9c (k-9) c आदि इस प्रकार से सही आउटपुट है 12 1 का 121(12 1) नहीं है, लेकिन 9131(9 1 का, (12-9) 1 का और इसी तरह)

यदि संदेह है, तो आपका कोड गलत है यदि यह कभी भी अंकों की एक विषम मात्रा (जैसे 121) के साथ आउटपुट करता है, तो अनुक्रम की प्रकृति के कारण इसमें अंकों की संख्या का आउटपुट भी होना चाहिए।


यह इस प्रकार कम से कम बाइट्स जीतता है।


प्रस्तावित 1111111111111111111
टेस्टकेस

अधिक निकटता से संबंधित (हालांकि अभी भी धोखा नहीं है)।
ETHproductions

क्या हम पूर्णांक की अल्पविराम से अलग सूची के रूप में आउटपुट कर सकते हैं? क्या आउटपुट इनपुट पूर्णांक से शुरू हो सकता है (और इस प्रकार लंबाई 5 है)?
ग्रेग मार्टिन

आपके अंतिम परीक्षण के मामले में, क्या अंतिम संख्या 23411912इसके बजाय नहीं होनी चाहिए 23411219?
ग्रेग मार्टिन

@GregMartin वास्तव में। इशारा करने के लिए धन्यवाद। लेकिन नहीं, आपको न्यूक्लियर या स्पेस के अलावा किसी भी चीज़ से अलग किए गए पूर्णांक या आउटपुट पूर्णांक की सूची वापस करने की अनुमति नहीं है। और नहीं, आपको इनपुट नहीं करना चाहिए
P. Ktinos

जवाबों:


6

पावरशेल , 111 104 बाइट्स

$z=$args;1..4|%{($z=-join($z-split'\B'|group|%{for($c,$n=$_.Count,$_.Name;$c-gt9;$c-=9){"9$n"}"$c$n"}))}

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


चूँकि आप $iअपने लूप में उपयोग नहीं करते हैं , सिर्फ लूप ही क्यों पसंद करते हैं$z=$args;0..3|%{...
AdmBorkBork

@AdmBorkBork मैंने इसके बारे में सोचा था, लेकिन यह महसूस किया कि इसे असाइन करने के बाद अधिक समय होगा $args(और मैंने मूल रूप से सोचा था कि मैं इसका उपयोग करूंगा $i)। मैं इसे मापने जा रहा था लेकिन फिर सवाल बंद हो गया।
14

@AdmBorkBork ... आआअंद संपादित (धन्यवाद)
ब्रितानी

5

पायथन 2 , 116 बाइट्स

x=input()
exec"x=''.join(x.count(n)/9*(`9`+n)+`x.count(n)%9`+n for i,n in enumerate(x)if n not in x[:i]);print x;"*4

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


19 लोगों के लिए आउटपुट 1111111111111111111गलत है। होना चाहिए 919111लेकिन देता है919121
CSharpie

कई मूल्यों के लिए गलत आउटपुट। उदाहरण: image.prntscr.com/image/ed4c523b105b41169e8aa8c46a95f963.png , इनपुट 11आउटपुट के साथ होना चाहिए 21 1211 3112 132112, मुझे समझ में नहीं आता कि यह 111पहली पुनरावृत्ति के रूप में क्यों आउटपुट करता है, जिससे पूरी श्रृंखला बुरी तरह से खराब हो जाती है
पी। केटिनो

@ P.Ktinos इनपुट प्रारूप गलत था, इसे एक स्ट्रिंग होने की आवश्यकता है (यह उन परीक्षणों के बचे हुए होना चाहिए जो मैं कर रहा था)। लिंक को निश्चित करें
Rod

4

05AB1E , 30 23 21 बाइट्स

4F©Ùv9y«®y¢9‰`U×XyJ}=

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

व्याख्या

4F                     # 4 times do:
  ©                    # store a copy of the current number in register
   Ùv                  # for each unique digit y in the number
     9y«               # concatenate 9 with y
        ®y¢            # count occurrences of y in current number
           9‰          # divmod by 9
             `U        # store the result of modulus in X
               ×       # repeat the number "9y" result_of_div times
                X      # push result of modulus
                 y     # push y
                  J    # join everything to one number
                   }   # end inner loop
                    =  # print the current number without popping

@MagicOctopusUrn: यह संख्या के 9 अंकों के साथ काम नहीं करेगा, उदाहरण के लिए मेरे TIO लिंक में उदाहरण की तरह।
एमिगा जूल

ओह्ह… मुझे अब लग गया।
मैजिक ऑक्टोपस Urn

1

मैथेमेटिका, 117 बाइट्स

Grid@{Rest@NestList[FromDigits[Join@@(Reverse/@Tally@IntegerDigits@#//.{a_,b_}/;a>9->{9,b}~Sequence~{a-9,b})]&,#,4]}&

ऐसा लगता है कि यह इस लंबे होने की आवश्यकता नहीं होनी चाहिए।


1

सी # 246 बाइट्स

namespace System{using Linq;using f=String;class p{static void Main(f[] s){f p=s[0];for(int i=0,n;i++<4;Console.Write(p+" "))p=f.Concat(p.GroupBy(c=>c).SelectMany(g=>new int[(n=g.Count())/9].Select(_ =>"9"+g.Key).Concat(new[]{n%9+""+g.Key})));}}}

Ungolfed:

namespace System
{
    using Linq;
    using f = String;
    class p
    {
        static void Main(f[] s)
        {
            f p = s[0];
            for (int i = 0, n; i++ < 4; Console.Write(p + " "))

                p = f.Concat(p.GroupBy(c => c).SelectMany(g =>
                    new int[(n = g.Count()) / 9].Select(_ => "9" + g.Key).Concat(new[] { n % 9 + "" + g.Key }
                )));
            Console.ReadKey();
        }
    }
}

इसे यहाँ आज़माएँ (टाइप इनपुट नीचे फ्रेम में एक बार इसके संकलित करें और एंटर करें)


0

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

L,Ḣ
D©®i$ÞŒgs9$€Ç€€FḌµ4µÐ¡Ḋ

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

क्रमिक n को नेस्टेड नहीं किया जा सकता क्योंकि चेन को नेस्टेड नहीं किया जा सकता है।

अलग लिंक के साथ घोंसला बनाना: 27 बाइट्स।

संचयन के बजाय प्रिंट करें: 27 बाइट्स।

व्याख्या

L,Ḣ                     - helper function, does the look-and-say. Input is a list of digits
 ,                      - return 2-tuple of:
L                       -   length of input
  Ḣ                     -   first element of input

D©®i$ÞŒgs9$€Ç€€FḌµ4µÐ¡Ḋ - main link, takes input as integer
                 µ4µÐ¡  - repeat 4 times, saving the results of each iteration:
D                       -   convert integer to list of digits
 ©                      -   save into register, for later use
  ®i$Þ                  -   sort list's elements by first occurrence in list
      Œg                -   group runs of equal elements
        s9$€            -   split each run into sets which are at most 9 elements long
            Ç€€         -   do the look-and-say with helper function
               FḌ       -   flatten and convert back into integer for next iteration
                      Ḋ - remove the first element from the list since it includes the
                           initial element

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.