स्व-निहित संख्याओं का क्रम


22

आइए स्व-निहित संख्या को एक सकारात्मक पूर्णांक के रूप में परिभाषित करें , जिसके अंक केवल स्वयं के बराबर लंबाई के रन में दिखाई देते हैं। दूसरे शब्दों में, कोई भी दशमलव अंक d ( 0 को छोड़कर ) केवल d के लंबाई के रन में होता है ।

कार्य

आप नीचे सूचीबद्ध तीन तरीकों में से कोई भी चुन सकते हैं:

  • पूर्णांक n को देखते हुए , n th (या तो 0 या 1-अनुक्रमित) स्व-समाहित संख्या को आउटपुट करता है ।
  • पूर्णांक n को देखते हुए , पहले n स्व-सम्‍मिलित संख्‍याओं को आउटपुट करता है ।
  • अनुक्रम को अनिश्चित काल के लिए प्रिंट करें।

उदाहरण

  • 133,322 क्योंकि एक आत्म निहित नंबर 3 तीन में से एक समय में प्रकट होता है 3 के, 1 एकल और 2 दोनों में से एक रन में होता है 2 की।

  • दूसरी ओर, 35553355 नहीं है, क्योंकि, 5 और 3 क्रमशः पांच और तीन बार होते हैं, वे आसन्न अंकों के रन नहीं बनाते हैं।

  • 44422 स्व-निहित नहीं है, क्योंकि 4 केवल तीन बार होता है।

  • 12222333 या तो नहीं है, क्योंकि 2 चार 2 के रन में दिखाई देता है , और इसे दो 2 के दो अलग-अलग रन के रूप में नहीं माना जा सकता है ।

आश्चर्य की बात नहीं, यह OEIS A140057 है , और इसकी पहली कुछ शर्तें हैं:

1, 22, 122, 221, 333, 1221, 1333, 3331, 4444, 13331, 14444, 22122, 22333, 33322, 44441, 55555, 122122, 122333, 133322, 144441, 155555

आप इनपुट ले सकते हैं और मानक तरीकों में से किसी भी प्रोग्रामिंग भाषा के माध्यम से आउटपुट प्रदान कर सकते हैं , जबकि यह देखते हुए कि इन खामियों को डिफ़ॉल्ट रूप से मना किया गया है। यह कोड गोल्फ है, इसलिए बाइट्स में (हर भाषा में) सबसे छोटा कोड जीतता है।

जवाबों:


8

पायथन 2 , 104 94 83 बाइट्स

-10 बाइट्स का धन्यवाद मिस्टर एक्सकोडर
-11 बाइट्स का धन्यवाद जोनाथन एलन को

i=0
while 1:
 if`i`==''.join(d*int(d)for c,d in zip(`-i`,`i`)if d!=c):print i
 i+=1

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


... वास्तव में यह स्वीकार्य है, क्योंकि यह एक बार iलंबे समय तक गिर जाएगा ? यह उपयोगstr करने के लिए आवश्यक हो सकता है (हालांकि मैं इन चीजों के बारे में वास्तव में निश्चित नहीं हूं)।
जोनाथन एलन

1
@JonathanAllan यह एक दिलचस्प सवाल है। आम तौर पर हमें यह मानने की अनुमति है कि यह मानक पूर्णांक प्रकार के भीतर है , लंबे समय तक नहीं , लेकिन पायथन इस अंतर को बहुत स्पष्ट नहीं करता है ...
FlipTack

6

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

अनुक्रम को अनिश्चित काल तक प्रिंट करता है

Do[##&&Print@t&@@(#==Tr[1^{##}]&@@@Split@IntegerDigits@t),{t,∞}]

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

TIO में आपको परिणाम देखने के लिए निष्पादन को समाप्त करना होगा लेकिन Mathematica ठीक काम करता है।

मार्टिन एंडर से -12 बाइट्स


6

05AB1E , 9 बाइट्स

अनुक्रम के एनटी शब्द को लौटाता है, 1-अनुक्रमित।

µNÔNγ€gJQ

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

व्याख्या

µ           # loop over increasing N until counter equals input
 NÔ         # push N with consecutive equal elements deduplicated
   Nγ       # push N grouped into runs of consecutive equal elements
     €g     # get the length of each run
       J    # join to a number
        Q   # check for equality
            # if true, implicitly increment counter

मेरे 10-बाइट दृष्टिकोण से प्रेरणा का एक संभावित स्रोत:µNγD€gs€ÙQ
श्री एक्सकोडर

6

जावास्क्रिप्ट (ईएस 6), 76 71 68 बाइट्स

अनुक्रम के n-वें शब्द को लौटाता है , 0-अनुक्रमित।

f=(n,k)=>+(k+'').replace(/(.)\1*/g,s=>s.length^s[0])||n--?f(n,-~k):k

NB : हमेशा की तरह पुनरावर्ती कार्यों के साथ, इनपुट रेंज टेल कॉल ऑप्टिमाइज़ेशन समर्थन और आपके इंजन के स्टैक आकार पर निर्भर करती है।

डेमो


ऑल्ट। संस्करण, 65 बाइट्स

कोई इनपुट नहीं लेता है और alert()एक बार में एक के साथ परिणाम प्रिंट करता है।

f=k=>f(-~k,+(k+'').replace(/(.)\1*/g,s=>s.length^s[0])||alert(k))

इसे ऑनलाइन आज़माएं! (अधिकतम स्टैक आकार पार होते ही रुक जाता है।)



2

CJam , 20 बाइट्स

1{_Abe`::=:*{_p}&)}h

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

स्पष्टीकरण:

1                       push 1
 {                }h    while TOS is truthy (i.e. forever):            example iteration: 14444
  _                       duplicate                                                       14444 14444       
   Ab                     convert to base 10 (get decimal digits)                         14444 [1 4 4 4 4]
     e`                   run-length encode (array of two-element arrays)                 14444 [[1 1] [4 4]]
       :                  map over the array:
        :                   fold between the two array elements with:
         =                    equality                                                    14444 [1 1]
          :               fold between the array elements with:
           *                multiplication (a.k.a. logical AND for 1 or 0)                14444 1
            {  }&         if this yields a result of 1:
             _              duplicate the number and                                      14444 14444
              p             print it                                                      14444 (output 14444)
                 )        increment the number                                            14445


2

ब्रेकीलॉग , 10 बाइट्स

≜ℕẹḅ⟨l=h⟩ᵐ

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

मूल रूप से अपने इनपुट चर के माध्यम से अनुक्रम के तत्वों को उत्पन्न करता है। (यदि यह वास्तव में मुद्रण स्वयं करना है, तो संलग्न करें &ẉ⊥।) यह अनिवार्य रूप से सबसे छोटे समाधानों को पहले से मजबूर करने के लिए एक पूर्व निर्धारित के साथ इसी को हल करने के लिए कोड है :

        ᵐ    For every
  ḅ          run of
 ẹ           digits in
             the input variable
ℕ            (which is a non-negative integer),
   ⟨l  ⟩     its length
   ⟨  h⟩     and its first element
   ⟨ = ⟩     are equal.

मुझे उम्मीद थी कि यह केवल 9 बाइट्स लेगा, लेकिन एक संख्या के अंकों को रनों में अलग करने के लिए एक स्पष्ट आवश्यकता की आवश्यकता है


1

जावास्क्रिप्ट 4, 83 80 बाइट्स

for(i=0;;)+(++i+'').replace(/(.)\1*/g,function(x,y){return y^x.length})||alert(i)

for(i=0;i<1000;)+(++i+'').replace(/(.)\1*/g,function(x,y){return y^x.length})||alert(i)


"जावास्क्रिप्ट 1"? क्या ऐसा कोई भाषा नाम है?
user202729

मेरा मतलब है कि यह जावास्क्रिप्ट के बाद से काम करता है, निश्चित नहीं है कि क्या नाम correwct है
l4m2

खेद है कि यह js1 में काम नहीं कर रहा है। मैंने पढ़ा और कोई जगह नहीं मिली
l4m2


1

आर , 56 बाइट्स

function(n)all((r=rle(el(strsplit(c(n,''),''))))$l==r$v)

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

विभाजन संख्या पर रन लंबाई एन्कोडिंग का उपयोग करता है। यदि सभी लंबाई मानों के बराबर है, तो सही है।

नोट: मैंने काम methodsपाने के elलिए TIO में लाइब्रेरी लोड की है ।


1

स्टैक्स , 10 बाइट्स

Ç≡∟Öz≈¢αV¢

इसे चलाएं और डीबग करें

यह प्रोग्राम एक फिल्टर के साथ सभी सकारात्मक पूर्णांक फ़िल्टर करता है। अंक रन-लेंथ एन्कोडेड हैं। प्रत्येक रन के लिए, अंक को रन लंबाई के बराबर होना चाहिए।




0

जावा 10, 121 बाइट्स

से एक लैम्ब्डा intके लिए int। फ़ंक्शन एक इंडेक्स n लेता है और n th (1-अनुक्रमित) अनुक्रम मान लौटाता है ।

n->{int x=0,m=1;for(;n>0;n-=m,m=1)for(var p:(++x+"").split("(?<=(.))(?!\\1)"))m=p.length()==p.charAt(0)-48?m:0;return x;}

यह ऑनलाइन की कोशिश करो

Ungolfed

n -> {
    int x = 0, m = 1;
    for (; n > 0; n -= m, m = 1)
        for (var p : (++x + "").split("(?<=(.))(?!\\1)"))
            m = p.length() == p.charAt(0) - 48 ? m : 0;
    return x;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.