কোলাকোস্কি হ্রাস


27

সংক্ষিপ্ত বিবরণ

আপনারা কেউ কেউ কোলাকোস্কি সিকোয়েন্স ( A000002 ) সম্পর্কে অবগত হতে পারেন , একটি স্বতঃপরিচিত স্ব-রেফারেন্টিয়াল ক্রম যা নীচের সম্পত্তি রয়েছে:

কুলিও কোলাকোস্কি সম্পত্তি, আপনি।

এটি কেবল 1 এবং 2 এর সমন্বিত একটি ক্রম এবং 1 এবং 2 এর প্রতিটি গ্রুপের জন্য, আপনি যদি রানের দৈর্ঘ্য যোগ করেন তবে এটি নিজেই সমান, দৈর্ঘ্যের অর্ধেক। অন্য কথায়, কোলাকোস্কি সিকোয়েন্সটি নিজেই সিকোয়েন্সে রানগুলির দৈর্ঘ্য বর্ণনা করে। এটি একমাত্র ক্রম যা প্রাথমিক 1 টি মুছে ফেলা একই ক্রম বাদে এটি করে। (এটি কেবলমাত্র সত্য যদি আপনি নিজেকে 1s এবং 2 সেকেন্ডের ক্রমগুলিতে সীমাবদ্ধ করেন - মার্টিন ইন্ডার)


চ্যালেঞ্জ

পূর্ণসংখ্যার একটি তালিকা দেওয়া চ্যালেঞ্জটি হ'ল:

  • -1তালিকাটি কোলাকোস্কি অনুক্রমের কার্যকারী উপসর্গ না হলে আউটপুট ।
  • আউটপুট ক্রম সামনে পুনরাবৃত্তিও সংখ্যা হয়ে [2]

ওয়ার্ক আউট উদাহরণ

প্রদত্ত চিত্রটি উদাহরণ হিসাবে ব্যবহার করা:

[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1] # Iteration 0 (the input).
[1,2,2,1,1,2,1,2,2,1,2]             # Iteration 1.
[1,2,2,1,1,2,1,1]                   # Iteration 2.
[1,2,2,1,2]                         # Iteration 3.
[1,2,1,1]                           # Iteration 4.
[1,1,2]                             # Iteration 5.
[2,1]                               # Iteration 6.
[1,1]                               # Iteration 7.
[2]                                 # Iteration 8.

সুতরাং, ফলাফল নম্বর 8একটি ইনপুট জন্য [1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1]

9 আপনি যদি 1-ইনডেক্সিং হন তবে তাও ঠিক আছে।


টেস্ট স্যুট (আপনি উপ-পুনরাবৃত্তির সাথেও পরীক্ষা করতে পারেন)

------------------------------------------+---------
Truthy Scenarios                          | Output
------------------------------------------+---------
[1,1]                                     | 1 or 2
[1,2,2,1,1,2,1,2,2,1]                     | 6 or 7
[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1]       | 8 or 9
[1,2]                                     | 2 or 3
------------------------------------------+---------
Falsy Scenarios                           | Output
------------------------------------------+---------
[4,2,-2,1,0,3928,102904]                  | -1 or a unique falsy output.
[1,1,1]                                   | -1
[2,2,1,1,2,1,2] (Results in [2,3] @ i3)   | -1 (Trickiest example)
[]                                        | -1
[1]                                       | -1

আপনি যদি বিভ্রান্ত হন:

Truthy: এটা শেষ পর্যন্ত কোন মধ্যবর্তী পদক্ষেপ কোনো উপাদান ছাড়া অন্য করেও দুই পৌঁছবে 1এবং 2। -Einkorn Enchanter 20 hours ago

মিথ্যা: সমাপ্তির মান হয় না [2]। মধ্যবর্তী পদগুলিতে সেটটির কিছু বাদ দিয়ে অন্য কিছু থাকে [1,2]। আরও কয়েকটি জিনিস, উদাহরণ দেখুন।


এটি , সর্বনিম্ন বাইট-কাউন্টটি বিজয়ী হবে।


7
আমরা কি ন্যায়বিচারের পরিবর্তে কোনও মিথ্যা মান ব্যবহার করতে পারি -1?
mbomb007

1
"কোলকোস্কি সিকোয়েন্সের কাজের উপসর্গ নয়" বলতে কী বোঝ? আমি ধরে নিয়েছিলাম আপনি পরীক্ষার কেসটি [2]না দেখলে তালিকাটি শেষ পর্যন্ত পৌঁছায় না [2,2,1,1,2,1,2]
ngenisis

1
@ এনজেনিসিস এটি ছাড়াও কোনও মধ্যবর্তী পদক্ষেপ ছাড়াই দু'এ পৌঁছে যাবে 1এবং এর বাইরে অন্য কোনও উপাদান নেই 2
গম উইজার্ড

2
[1]একটি পরীক্ষার কেস হিসাবে যুক্ত করা ভাল ধারণা হতে পারে ।
এমিগানা

1
@ mbomb007 কোনও স্বতন্ত্র মান ঠিক আছে। ধনাত্মক পূর্ণসংখ্যাটি ঠিক নয়। আপনি যদি 1-ইনডেক্সিং 0 ভাল থাকেন। "মিথ্যা" ঠিক আছে। ত্রুটি ঠিক আছে। যেকোন ধনাত্মক রিটার্ন মান ভাল, এমনকি -129.42910 is
যাদু অক্টোপাস উরন

উত্তর:


8

হাস্কেল , 126 87 79 76 75 বাইট

39 বাইট সংরক্ষণ করেছেন Ørjan জোহানসেনকে ধন্যবাদ

import Data.List
f[2]=0
f y@(_:_:_)|all(`elem`[1,2])y=1+f(length<$>group y)

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

খারাপ ইনপুটটিতে এই ত্রুটি।


f(এবং ফলস্বরূপ !) অ্যাকসুলেটরগুলির পরিবর্তে অলস উত্পাদন + span/ ব্যবহার করে অনেক ছোট করা যায় lengthএটি অনলাইন চেষ্টা করুন!
janrjan জোহানসেন

1
এর জন্য একটি অসীম লুপ প্রবেশ করায় দেখে মনে হচ্ছে[1]
এমিগানা

1
@ এমিগনা ডার্ন এটি ঠিক করতে আমার 6 বাইট খরচ হয় তবে আমি এটি ঠিক করেছি।
গম উইজার্ড

@ আরজান জোহেনসেন এটি ভাল টিপের মতো মনে হচ্ছে, তবে আমি সেখানে কী চলছে তা বুঝতে হাস্কেলের যথেষ্ট দক্ষতা নেই। আপনি যদি চান তবে আপনি এটি নিজের উত্তর হিসাবে পোস্ট করতে পারেন তবে যতক্ষণ না আপনার সমাধানটি কীভাবে কাজ করে তা আমি জানি না, আমি এটি আমার উত্তরে যুক্ত করব না। :)
গম উইজার্ড

1
আমি তখন বুঝতে পারলাম এই একটি ক্ষেত্রে যেখানে একটি আমদানি আসলে খাটো (এবং সহজ বোঝার) নন: import Data.List;f l=length<$>group l। ( <$>এটার প্রতিশব্দ map) two এছাড়াও দুটি পৃথক -1ক্ষেত্রে থাকার পরিবর্তে @(_:_:_)মূল কেসটিকে কেবল দৈর্ঘ্য> = 2 তালিকার সাথে মেলে ধরতে বাধ্য করার জন্য একটি প্যাটার্ন ব্যবহার করা সংক্ষিপ্ত । এটি অনলাইন চেষ্টা করুন!
janrjan জোহানসেন

6

05 এ বি 1 ই , 22 বাইট

[Dg2‹#γ€gM2›iX]2QJiNë®

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

ব্যাখ্যা

[                        # start a loop
 D                       # duplicate current list
  g2‹#                   # break if the length is less than 2
      γ                  # group into runs of consecutive equal elements
       €g                # get length of each run
         M2›iX           # if the maximum run-length is greater than 2, push 1
              ]          # end loop
               2QJi      # if the result is a list containing only 2
                   N     # push the iteration counter from the loop
                    ë®   # else, push -1
                         # implicitly output top of stack

ব্যর্থ[1,1,2,2,1,2,1,1,2,2,1,2,2,1,1,2,1,1]
ওয়েইজুন ঝাউ

@ ওয়েজুনঝু: ধন্যবাদ, স্থির!
এমিগনা

আপনি লিঙ্কটি আপডেট করতে ভুলে গিয়ে থাকতে পারেন ...
ওয়েইজুন চাউ

1
@ ওয়েইজুনঝৌ: আসলে আমার ছিল। আবার ধন্যবাদ :)
এমিগানা

3

এসসিএএলএ, 290 (282?) অক্ষর, 290 (282?) বাইট

এটি আমাকে সুও লং নিয়েছে ... তবে শেষ পর্যন্ত আমি শেষ হয়ে গেলাম!

এই কোড সহ:

var u=t
var v=Array[Int]()
var c= -1
var b=1
if(!u.isEmpty){while(u.forall(x=>x==1|x==2)){c+=1
if(u.size>1){var p=u.size-1
for(i<-0 to p){if(b==1){var k=u(i)
v:+=(if(i==p)1 else if(u(i+1)==k){b=0
if(p-i>1&&u(i+2)==k)return-1
2}else 1)} else b=1}
u=v
v=v.take(0)}else if(u(0)==2)return c}}
c

আমি গণনা করা উচিত জানি না var u=tবাইট মধ্যে, আমি ব্যবহার করি না বিবেচনা করা tঅ্যালগরিদম সময় (কপি শুধু একটি modifyable পেতে হয় varপরিবর্তে পরামিতি tহিসেবে বিবেচিত val- ধন্যবাদ Scala )। আমার এটি গণনা করা উচিত কিনা দয়া করে আমাকে বলুন।

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

পিএস: আমি এটি পুনরাবৃত্তভাবে করার কথা ভাবছিলাম, তবে সত্যিকারের পুনরাবৃত্ত "সাবফান্শন" এর পরামিতি হিসাবে আমাকে একটি কাউন্টার পাস করতে হবে; এই সত্যটি আমাকে দুটি ক্রিয়াকলাপ ঘোষণা করে এবং এই অক্ষর / বাইটগুলি হারিয়ে যাওয়া ছাড়া কিছুই নয়।

সম্পাদনা: আমাকে পরিবর্তন করতে হয়েছিল (?) কারণ আমাদের নিশ্চিত নয় যে আমাদের গণনার [1]ক্ষেত্রে নেওয়া উচিত । সুতরাং এখানে সংশোধিত কোড:

var u=t
var v=Array[Int]()
var c= -1
var b=1
if(!u.isEmpty){try{t(1)}catch{case _=>return if(t(0)==2)0 else -1}
while(u.forall(x=>x==1|x==2)){c+=1
if(u.size>1){var p=u.size-1
for(i<-0 to p){if(b==1){var k=u(i)
v:+=(if(i==p)1 else if(u(i+1)==k){b=0
if(p-i>1&&u(i+2)==k)return-1
2}else 1)} else b=1}
u=v
v=v.take(0)}else if(u(0)==2)return c}}
c

এটি অপ্টিমাইজড নয় (একই শর্তের জন্য আমার একটি সদৃশ "আউট" আছে: যখন আমি আসব [2]এবং কখন পরমকে [2]আলাদাভাবে চিকিত্সা করা হবে)।

নতুন COST = 342 (উদ্দেশ্য অনুযায়ী আমি শিরোনামটি সংশোধন করিনি)


1
এর জন্য অসীম লুপটি প্রবেশ করানো দেখে মনে হচ্ছে[1]
এমিগিনা

হ্যাঁ, তবে ওপি বলেছে (যেমন আমি কমপক্ষে বুঝতে পেরেছি): "প্রাথমিক 1 টি মুছে ফেলা" এবং "অনুক্রমটি হওয়ার আগে পুনরাবৃত্তির সংখ্যা আউটপুট [2]"
ভি.কোর্টস

আমার বোঝার জন্য, [1]কখনও পৌঁছায় না [2]এবং এইভাবে ফিরে আসবে না -১
এমিগানা

আমি দেখি. সুতরাং আপনি কি মনে করেন আমার শুরুতে একটি লিট শর্ত করা উচিত? আপনার উপদেশের জন্য ধন্যবাদ.
ভি। কুর্তোয়া

আমি স্ক্যালাল জানি না তবে আমি ধরে নিচ্ছি তালিকার দৈর্ঘ্য ২ এর চেয়ে কম হলে আপনি থামার জন্য লুপটি পরিবর্তন করতে পারেন তবে ইতিমধ্যে আপনার উপাদানটি শেষের দিকে 2 টি আছে বলে মনে হচ্ছে।
Emigna

2

জাভাস্ক্রিপ্ট, 146 142 বাইট

কোড গল্ফিংয়ের আগে প্রথমে চেষ্টা করুন, মনে হচ্ছে বৃহত্তর ফাংশনে "রিটার্ন" বেশ ক্লান্তিকর ...

এছাড়াও, বি = 1 এবং বি = 2 পরীক্ষা করা কিছু বাইট নেয় ...

কোডটি এখানে:

f=y=>{i=t=!y[0];while(y[1]){r=[];c=j=0;y.map(b=>{t|=b-1&&b-2;if(b-c){if(j>0)r.push(j);c=b;j=0}j++});(y=r).push(j);i++}return t||y[0]-2?-1:0^i}

ব্যাখ্যা

f=y=>{/*1*/}                                        //function definition

//Inside /*1*/:
  i=t=!y[0];                                        //initialization
                                                    //if the first one is 0 or undefined, 
                                                    //set t=1 so that it will return -1   
                                                    //eventually, otherwise i=0
  while(y[1]){/*2*/}                                //if there are 2+ items, start the loop

  //Inside /*2*/:
    r=[];c=j=0;                                     //initialization
    y.map(b=>{/*3*/});                              //another function definition

    //Inside /*3*/:
      t|=b-1&&b-2;                                  //if b==1 or b==2, set t=1 so that the
                                                    //entire function returns -1
      if(b-c){if(j>0)r.push(j);c=b;j=0}             //if b!=c, and j!=0, then push the 
                                                    //count to the array and reset counter
      j++                                           //counting duplicate numbers

    (y=r).push(j);i++                               //push the remaining count to the array
                                                    //and proceed to another stage

  return t||y[0]-2?-1:0^i                           //if the remaining element is not 2, or
                                                    //t==1 (means falsy), return -1,
                                                    //otherwise return the counter i

পরীক্ষার ডেটা (প্রদত্ত পরীক্ষার ডেটা ব্যবহার করে)

l=[[1,1],[1,2,2,1,1,2,1,2,2,1],[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1],[1,2],[4,2,-2,1,0,3928,102904],[1,1,1],[2,2,1,1,2,1,2],[]];
console.log(l.map(f));
//Output: (8) [1, 6, 8, 2, -1, -1, -1, -1]

সম্পাদনা 1: 146 -> 142: বাইট হ্রাস সম্পর্কে আমার সম্পাদনাটি প্রত্যাহার করা হচ্ছে, কারণ এটি আউটপুটকে প্রভাবিত করে; এবং কিছু শেষ বিবৃতিতে সম্পাদনা


f=a=>{for(i=t=!a[0];a[1];)r=[],c=j=0,a.map(a=>{t|=a-1&&a-2;a-c&&(0<j&&r.push(j),c=a,j=0);j++}),(a=r).push(j),i++;return t||a[0]-2?-1:0^i}5 বাইট সাশ্রয় করে (কিছুক্ষণের পরিবর্তে লুপের জন্য; কমা বনাম ধনুর্বন্ধনী; && বনাম যদি)। আপনার জন্য এই অপটিমাইজেশনগুলি সম্পন্ন করতে আপনি গুগলের ক্লোজার সংকলক (ক্লোজার- কম্পায়ারআল.এসপি স্পট.কম ) ব্যবহার করতে পারেন
ওকি

2

জেলি ,26 25 22 21 20 বাইট

FQœ-2R¤
ŒgL€µÐĿṖ-LÇ?

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

এই কোডটি আসলে 20 বাইট পর্যন্ত সঠিকভাবে কাজ করছে না এবং আমি খেয়ালও করি নি; এটি [2,2]পরীক্ষার ক্ষেত্রে ব্যর্থ হয়েছিল । এখন নিখুঁতভাবে কাজ করা উচিত।


2

জাভাস্ক্রিপ্ট (ES6), 127 126 95 80 বাইট

g=(a,i,p,b=[])=>a.map(x=>3>x&0<x?(x==p?b[0]++:b=[1,...b],p=x):H)==2?i:g(b,~~i+1)

0-ইন্ডেক্স। নিক্ষেপ "ReferenceError: X is not defined"এবং "InternalError: too much recursion"খারাপ ইনপুট।

পরীক্ষার মামলা


1

Clojure, 110 বাইট

#(if-not(#{[][1]}%)(loop[c % i 0](if(every? #{1 2}c)(if(=[2]c)i(recur(map count(partition-by + c))(inc i))))))

loopপ্রান্তের ক্ষেত্রে প্রাক-চেক সহ একটি বেসিক । nilঅবৈধ ইনপুটগুলির জন্য ফেরত দেয় । আমি জানতাম না (= [2] '(2))হয় true, হে


1

পাইথন 2, 146 বাইট (কেবলমাত্র ফাংশন)

f=lambda l,i=0:i if l==[1]else 0if max(l)>2or min(l)<1else f([len(x)+1for x in"".join(`v!=l[i+1]`[0]for i,v in enumerate(l[:-1])).split("T")],i+1)

মিথ্যা ইনপুটটিতে 0 প্রদান করে (ঠিক এটি 1-সূচকযুক্ত হওয়ার পরে)। কেবল এটির মতো ব্যবহার করুন:

print(f([1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1]))

1

গণিত, 82 বাইট

FixedPointList[#/.{{2}->T,{(1|2)..}:>Length/@Split@#,_->0}&,#]~FirstPosition~T-1&

Functionযা বারবার অপরিবর্তিত {2}প্রতীক T, (এক বা একাধিক) 1এর একটি তালিকা এবং 2পরবর্তী পুনরাবৃত্তির সাথে 0একটি নির্দিষ্ট বিন্দু না পৌঁছানো পর্যন্ত অন্য কোনও কিছু দিয়ে প্রতিস্থাপন করে , তারপরে ফলাফলটি বিয়োগের মধ্যে FirstPositionপ্রতীকটির প্রত্যাবর্তন করে । আউটপুট হয় যেখানে (হয় -indexed) পৌঁছানোর প্রয়োজন পুনরাবৃত্তিও সংখ্যা truthy ক্ষেত্রে জন্য এবং falsy ক্ষেত্রে জন্য।TFixedPointList1{n}n1{2}-1+Missing["NotFound"]

যদি আউটপুট এর nপরিবর্তে হওয়া উচিত {n}তবে এর জন্য আরও তিনটি বাইট খরচ হয়:

Position[FixedPointList[#/.{{2}->T,{(1|2)..}:>Length/@Split@#,_->0}&,#],T][[1,1]]-1&

1

পাইথন 2 , 184 163 156 বাইট

  • @ ফিলিপ নারদী বাটিস্তা 21 বাইট সংরক্ষণ করেছেন !!!! অনেক ধন্যবাদ!!!!
  • হালভার্ড হুমেল বাঁচালেন by বাইট !! ধন্যবাদ

পাইথন 2 , 156 বাইট

a,c=input(),0
t=a==[]
while 1<len(a)and~-t:
 r,i=[],0
 while i<len(a):
	j=i
	while[a[j]]==a[i:i+1]:i+=1
	r+=[i-j]
 a=r;c+=1;t=any(x>2for x in a)
print~c*t+c

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

ব্যাখ্যা:

a,c=input(),0                             #input and initialize main-counter 

t=a==[]                                   #set t to 1 if list's empty. 

while len(a)>1:                           #loop until list's length is 1.

 r,i=[],0                                 #Initialize temp. list and 
                                          #list-element-pointer 

 while i<len(a):                          #loop for the element in list 

  j=0                                     #set consecutive-item-counter to 0   

  while(i+j)<len(a)and a[i]==a[i+j]:j+=1  #increase the consec.-counter

  r+=[j];i+=j                             #add the value to a list, move the 
                                          #list-element-pointer 

 a=r;c+=1;t=any(x>2for x in a)            #update the main list, increase t 
                                          #the counter, check if any number 
 if t:break;                              #exceeds 2 (if yes, exit the loop)

print[c,-1][t]                            #print -1 if t or else the 
                                          #counter's 
                                          #value 



1

পাইথন 2 , 122 বাইট

def f(s,c=2,j=0):
 w=[1]
 for i in s[1:]:w+=[1]*(i!=s[j]);w[-1]+=i==s[j];j+=1
 return(w==[2])*c-({1,2}!=set(s))or f(w,c+1)

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

পাইথন 3 , 120 বাইট

def f(s,c=2,j=0):
 w=[1]
 for i in s[1:]:w+=[1]*(i!=s[j]);w[-1]+=i==s[j];j+=1
 return(w==[2])*c-({1,2}!={*s})or f(w,c+1)

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

ব্যাখ্যা

হ্রাসের পরবর্তী পুনরাবৃত্তি সংরক্ষণ করার জন্য একটি নতুন সিকোয়েন্স (ডাব্লু) শুরু করা হয়েছে। একটি কাউন্টার (সি) পুনরাবৃত্তির সংখ্যার উপর নজর রাখতে।

মূল ক্রম (গুলি) এর প্রতিটি আইটেম পূর্ববর্তী মানের সাথে তুলনা করা হয়। যদি সেগুলি একই হয় তবে (ডাব্লু) এর শেষ আইটেমটির মান 1 দিয়ে বৃদ্ধি করা হয়েছে। যদি তারা আলাদা হয় তবে ক্রম (ডাব্লু) এর সাথে [1] প্রসারিত হয়।

যদি ডাব্লু == [2] হয় তবে কাউন্টার (সি) ফেরত দেওয়া হবে। অন্যথায়, যদি মূল অনুক্রম (গুলি) 1 এবং 2 ব্যতীত অন্যান্য আইটেম ধারণ করে তবে একটি মান -1 প্রদান করা হয়। যদি না হয় তবে ফাংশনটিকে পুনরাবৃত্তভাবে নতুন সিকোয়েন্স (ডাব্লু) হিসাবে (গুলি) বলা হয় এবং কাউন্টার (সি) 1 দ্বারা বৃদ্ধি পেয়েছিল।


বাইট সংরক্ষণ করতে, আমি প্রথম দুটি লাইন একত্রিত করার চেষ্টা করছি def f(s,c=2,j=0,w=[1]):, তবে এটি একটি আলাদা ফলাফল দেয়। কেউ কেন এটি ব্যাখ্যা করতে পারে?
জিতসে


@ জোকিং যা নিখুঁত ধারণা তৈরি করে, ধন্যবাদ!
জিতসে

0

আর, 122 বাইট

a=scan()
i=0
f=function(x)if(!all(x%in%c(1,2)))stop()
while(length(a)>1){f(a)
a=rle(a)$l
f(a)
i=i+1}
if(a==2)i else stop()

সমস্ত পরীক্ষার কেস পাস করে। অন্যথায় এক বা একাধিক ত্রুটি নিক্ষেপ করে। আমি বৈধতা চেক ঘৃণা করি; ইনপুটগুলি ভাল থাকলে এই কোডটি এত গল্ফ হতে পারে; এমনকি ইনপুটটি 1 এবং 2 এর সিকোয়েন্স হলেও সংক্ষিপ্ত হবে, অগত্যা কোলকোস্কি অনুক্রমের উপসর্গ নয়। এখানে, আমাদের প্রাথমিক ভেক্টর (অন্যথায় পরীক্ষার কেসটি [-2,1]পাস হয়েছে) এবং ফলস্বরূপ ভেক্টর (অন্যথায় উত্তীর্ণ হত) উভয়ই পরীক্ষা [1,1,1]করতে হবে।


0

রুবি , 81 77 বাইট

f=->a,i=1{a[1]&&a-[1,2]==[]?f[a.chunk{|x|x}.map{|x,y|y.size},i+1]:a==[2]?i:0}

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

সম্পাদনা: পুনরাবৃত্ত ল্যাম্বডায় রূপান্তর করে 4 বাইট সংরক্ষণ করা হয়েছে।

1-সূচকযুক্ত পুনরাবৃত্তির সংখ্যা বা 0 টি মিথ্যা হিসাবে প্রত্যাবর্তন করে।

রুবিকে গণনার শঙ্কিত পদ্ধতি ব্যবহার করে, যা আমাদের প্রয়োজন ঠিক তা করে - অভিন্ন সংখ্যার একটানা রান সংগ্রহ করে। রানগুলির দৈর্ঘ্য পরবর্তী পুনরাবৃত্তির জন্য অ্যারে গঠন করে। অ্যারেটি 1 টি মৌলের চেয়ে দীর্ঘ হয় এবং 1 এবং 2 ব্যতীত অন্য কোনও সংখ্যার মুখোমুখি হয়নি ite


0

পাইথ , 45 বাইট

L?||qb]1!lb-{b,1 2_1?q]2b1Z.V0IKy~QhMrQ8*KhbB

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

এটি সম্ভবত এখনও গল্ফযোগ্য। এটি নিশ্চিতভাবে গল্ফযোগ্য, যদি .?আমি আশা করি যেভাবে এটি কাজ করে ( বহির্মুখের elseপরিবর্তে অভ্যন্তরীণ কাঠামোর জন্য একটি হয়ে ওঠে)

L?||qb]1!lb-{b,1 2_1?q]2b1Z # A lambda function for testing an iteration of the shortening
L                           # y=lambda b:
 ?                          # if
    qb]1                    #    b == [1]
   |    !lb                 #      or !len(b)
  |         {b              #        or b.deduplicate()
           -  ,1 2          #             .difference([1,2]):
                  _1        #               return -1
                    ?q]2b1Z # else: return 1 if [2] == b else Z (=0)

.V0                         # for b in range(0,infinity):
   IKy~Q                    # if K:=y(Q :=        (applies y to old value of Q)
        hM                  #    map(_[0],
          rQ8               #               run_length_encode(Q)):
             *Khb           #    print(K*(b+1))
                 B          #    break

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.