স্ব-সংযুক্ত সংখ্যার ক্রম


22

আসুন একটি স্ব-সংযুক্ত নম্বরকে ধনাত্মক পূর্ণসংখ্যা হিসাবে সংজ্ঞায়িত করি , যার সংখ্যাগুলি কেবল তাদের সমান দৈর্ঘ্যের রানগুলিতে প্রদর্শিত হয়। অন্য কথায়, কোন দশমিক অঙ্ক (ব্যতীত 0 ) ঘটে শুধুমাত্র দৈর্ঘ্যের রানে ঠিক

কার্য

আপনি নীচে তালিকাভুক্ত তিনটি পদ্ধতির যে কোনওটি চয়ন করতে পারেন:

  • একটি পূর্ণসংখ্যা n দেওয়া , n তম আউটপুট করুন (হয় 0 বা 1-সূচীকৃত) স্ব-অন্তর্ভুক্ত নম্বর।
  • একটি পূর্ণসংখ্যা n দেওয়া হয়েছে , প্রথম এন স্ব-অন্তর্ভুক্ত সংখ্যাগুলি আউটপুট করুন ।
  • ক্রমটি অনির্দিষ্টকালের জন্য মুদ্রণ করুন।

উদাহরণ

  • 133322 কারণ একটি স্বয়ংসম্পূর্ণ সংখ্যা 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
@ জোনাথান অ্যালান এটি একটি আকর্ষণীয় প্রশ্ন। সাধারণত আমাদের ধরে নিতে দেওয়া হয় এটি স্ট্যান্ডার্ড পূর্ণসংখ্যার ধরণের, দীর্ঘ নয় , তবে পাইথন এই পার্থক্যটি খুব পরিষ্কার করে না ...
ফ্লিপট্যাক

6

গণিত, 66 বাইট

ক্রমটি অনির্দিষ্টকালের জন্য মুদ্রণ করে

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

এটি অনলাইন চেষ্টা করুন!

টিআইওতে আপনাকে ফলাফলটি দেখতে এক্সিকিউশনটি শেষ করতে হবে তবে ম্যাথমেটিকায় ভাল কাজ করে।

মার্টিন ইন্ডার থেকে -12 বাইট


6

05 এ বি 1 ই , 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

জাভাস্ক্রিপ্ট (ES6), 76 71 68 বাইট

রিটার্নস n- তম ক্রম শব্দ, 0-ইন্ডেক্স।

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

নোট : সর্বদা পুনরাবৃত্ত ফাংশনগুলির সাথে, ইনপুট পরিসীমাটি টেল কল অপটিমাইজেশন সমর্থন এবং আপনার ইঞ্জিনের স্ট্যাক আকারের উপর নির্ভর করে।

ডেমো


অল্টার। সংস্করণ, 65 বাইট

কোনও ইনপুট নেয় না এবং alert()একবারে ফলাফলের সাথে মুদ্রণ করে ।

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

এটি অনলাইন চেষ্টা করুন! (সর্বাধিক স্ট্যাকের আকার ছাড়িয়ে গেলে থামবে ops)



2

সিজেম , 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"? এরকম ভাষার নাম আছে?
ব্যবহারকারী 202729

আমার অর্থ জাভাস্ক্রিপ্ট প্রদর্শিত হওয়ার পরে এটি কাজ করে, নামটি খাঁটি
l4m2

দুঃখিত এটি js1 এ কাজ করে না বলে মনে হচ্ছে। আমি পড়েছি এবং কোনও প্রতিস্থাপন খুঁজে পাইনি
l4m2


1

আর , 56 বাইট

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

এটি অনলাইন চেষ্টা করুন!

বিভাজন নম্বরে রান দৈর্ঘ্যের এনকোডিং ব্যবহার করে। সমস্ত দৈর্ঘ্য মানগুলির সমান হলে সত্যটি ফেরত দেয়।

দ্রষ্টব্য: আমি কাজ methodsপেতে টিআইও-তে লাইব্রেরিটি লোড করেছি el


1

স্ট্যাক্স , 10 বাইট

Ç≡∟Öz≈¢αV¢

এটি চালান এবং এটি ডিবাগ করুন

এই প্রোগ্রামটি একটি ফিল্টার সহ সমস্ত ধনাত্মক পূর্ণসংখ্যার ফিল্টার করে। অঙ্কগুলি রান-দৈর্ঘ্যের এনকোডযুক্ত। প্রতিটি রানের জন্য, অঙ্কটি অবশ্যই রান দৈর্ঘ্যের সমান হবে।




0

জাভা 10, 121 বাইট

থেকে একটি ল্যামডা intকরতে int। ফাংশনটি সূচক n নেয় এবং n তম (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;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.