ลด Kolakoski


27

ภาพรวม

บางท่านอาจทราบถึงKolakoski Sequence ( A000002 ) ซึ่งเป็นลำดับการอ้างอิงตัวเองที่รู้จักกันดีซึ่งมีคุณสมบัติดังต่อไปนี้:

สถานที่ให้บริการ Kolakoski coolio, Yo

มันเป็นลำดับที่มีเพียง 1 และ 2 และสำหรับแต่ละกลุ่มของ 1 และ 2 ถ้าคุณเพิ่มความยาวของการวิ่งมันเท่ากับตัวเองเพียงครึ่งหนึ่งของความยาว กล่าวอีกนัยหนึ่งลำดับ Kolakoski อธิบายความยาวของการวิ่งในลำดับนั้น เป็นลำดับเดียวที่ทำสิ่งนี้ยกเว้นลำดับเดียวกันโดยลบ 1 ครั้งแรก (สิ่งนี้เป็นจริงเฉพาะในกรณีที่คุณ จำกัด ตัวเองในลำดับที่ประกอบด้วย 1 และ 2 - Martin Ender)


ความท้าทาย

ความท้าทายคือให้รายการของจำนวนเต็ม:

  • เอาต์พุต-1ถ้ารายการไม่ใช่ส่วนนำหน้าของลำดับ Kolakoski
  • [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

Falsy:[2]ค่าสิ้นสุดไม่ได้ [1,2]แง่ระดับกลางมีสิ่งอื่นที่ไม่ใช่บางสิ่งบางอย่างของชุด สิ่งอื่น ๆ อีกสองอย่างดูตัวอย่าง


นี่คือไบต์ต่ำสุดจะเป็นผู้ชนะ


7
เราสามารถใช้ค่าเท็จใด ๆ แทนเพียงแค่-1?
mbomb007

1
คุณหมายถึงอะไรโดย "ไม่ใช่คำนำหน้าลำดับของ Kolakoski" ฉันสันนิษฐานว่าคุณหมายถึงรายการไม่ถึงในที่สุด[2]จนกว่าฉันจะเห็น[2,2,1,1,2,1,2]กรณีทดสอบ
ngenisis

1
@ngenisis ในที่สุดมันก็จะถึงสองขั้นตอนกลางโดยไม่ต้องใด ๆ ที่มีองค์ประกอบอื่น ๆ กว่าและ1 2
ข้าวสาลีตัวช่วยสร้าง

2
อาจเป็นความคิดที่ดีที่จะเพิ่ม[1]เป็นกรณีทดสอบ
Emigna

1
@ mbomb007 มีค่าที่แตกต่างกัน จำนวนเต็มบวกไม่เป็นไร ถ้าคุณทำดัชนี 1 แล้วก็โอเค "เท็จ" ไม่เป็นไร ข้อผิดพลาดเป็นเรื่องปกติ ค่าตอบแทนที่ไม่เป็นบวกใด ๆ ก็ดีแม้ -129.42910
Magic Octopus Urn

คำตอบ:


8

Haskell , 126 87 79 76 75 ไบต์

บันทึก 39 ไบต์ขอบคุณØrjan Johansen

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

ลองออนไลน์!

ข้อผิดพลาดนี้เกี่ยวกับอินพุตที่ไม่ถูกต้อง


f(และดังนั้น!) สามารถสั้นลงได้มากโดยใช้การผลิตแบบขี้เกียจ + span/ lengthแทนการสะสม ลองออนไลน์!
Ørjan Johansen

1
ดูเหมือนจะเข้าสู่วงวนไม่สิ้นสุดสำหรับ[1]
Emigna

1
@Emigna Darn มีค่าใช้จ่ายฉัน 6 ไบต์เพื่อแก้ไข แต่ฉันได้แก้ไข
ข้าวสาลีตัวช่วยสร้าง

@ ØrjanJohansenดูเหมือนว่าจะเป็นเคล็ดลับที่ดี แต่ฉันมีความเชี่ยวชาญไม่เพียงพอใน Haskell ที่จะเข้าใจว่าเกิดอะไรขึ้นที่นั่น หากคุณต้องการคุณสามารถโพสต์มันเป็นคำตอบของคุณเอง แต่อย่างน้อยตราบใดที่ฉันไม่รู้ว่าโซลูชันของคุณทำงานอย่างไรฉันจะไม่เพิ่มคำตอบลงในคำตอบของฉัน :)
ตัวช่วยสร้างข้าวสาลี

1
จากนั้นผมก็ตระหนักว่าเป็นกรณีที่มีการนำเข้าเป็นจริงสั้น (และยังง่ายต่อการเข้าใจ) import Data.List;f l=length<$>group lนี้: ( <$>เป็นคำพ้องความหมายสำหรับmapที่นี่) นอกจากนี้แทนที่จะมีสอง-1กรณีที่แตกต่างกันมันสั้นกว่าที่จะใช้@(_:_:_)รูปแบบเพื่อบังคับให้กรณีหลักต้องตรงกับความยาว> = 2 รายการเท่านั้น ลองออนไลน์!
Ørjan Johansen

6

05AB1E , 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]
Weijun Zhou

@ WeijunZhou: ขอบคุณแก้ไขแล้ว!
Emigna

คุณอาจลืมที่จะอัพเดทลิงค์ ...
Weijun Zhou

1
@ WeijunZhou: แน่นอนฉันมี ขอบคุณอีกครั้ง :)
Emigna

3

SCALA, 290 (282?) ตัวอักษร, 290 (282?) ไบต์

Looo Loong ... แต่ในที่สุดฉันก็ทำเสร็จแล้ว!

ด้วยรหัสนี้:

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ในระหว่างอัลกอริทึม (การคัดลอกเพียงเพื่อให้สามารถแก้ไขได้varแทนพารามิเตอร์ที่tถือว่าเป็นval- ขอบคุณScaLa ) โปรดบอกฉันว่าฉันควรนับ

แข็งพอสมควร ลองออนไลน์!

PS: ฉันกำลังคิดที่จะทำซ้ำ แต่ฉันจะต้องผ่านเคาน์เตอร์เป็นพารามิเตอร์ของ "subfunction" recursive ที่แท้จริง; ความจริงเรื่องนี้ทำให้ฉันประกาศฟังก์ชั่นสองอย่างและตัวอักษร / ไบต์เหล่านี้ไม่ได้มี แต่อย่างใดเลย

แก้ไข: ฉันต้องเปลี่ยน (?) เพราะเราไม่แน่ใจว่าเราควรนับเป็น[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

มันไม่ได้รับการปรับให้เหมาะสม (ฉันมี "out" ซ้ำซ้อนสำหรับเงื่อนไขเดียวกัน: เมื่อฉันไปถึง[2]และเมื่อ param [2]ได้รับการปฏิบัติแยกกัน)

ใหม่ค่าใช้จ่าย = 342 (ฉันไม่ได้แก้ไขชื่อตามวัตถุประสงค์)


1
ดูเหมือนว่าจะเข้าสู่วงวนไม่สิ้นสุดสำหรับ[1]
Emigna

ใช่ แต่ตามที่ได้กล่าวไว้โดย OP (ดังที่ฉันเข้าใจอย่างน้อย): "ด้วยการลบ 1 ครั้งแรก" และ "เอาท์พุทจำนวนการทำซ้ำก่อนที่ลำดับจะกลายเป็น[2]"
V. Courtois

ความเข้าใจของผม[1]ไม่ถึง[2]จึงควรกลับ-1
Emigna

ฉันเห็น. ดังนั้นคุณคิดว่าฉันควรวางเงื่อนไข litte ที่จุดเริ่มต้นหรือไม่ ขอบคุณสำหรับคำแนะนำ.
V. Courtois

ฉันไม่รู้สกาล่า แต่ฉันคิดว่าคุณสามารถปรับเปลี่ยนลูปเพื่อหยุดได้เมื่อความยาวของรายการเล็กกว่า 2 คุณดูเหมือนจะมีการตรวจสอบว่าอิลิเมนต์นั้นเป็น 2 ในตอนท้าย
Emigna

2

JavaScript, 146 142 ไบต์

ความพยายามครั้งแรกในการตีกอล์ฟดูเหมือนว่า "การกลับมา" ในฟังก์ชั่นที่ใหญ่กว่านั้นค่อนข้างน่าเบื่อ ...

นอกจากนี้การตรวจสอบ b = 1 และ b = 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 ไบต์ (สำหรับลูปแทน while; คอมม่า vs braces; && vs if) คุณสามารถใช้คอมไพเลอร์การปิดของ Google ( closure-compiler.appspot.com ) เพื่อรับการเพิ่มประสิทธิภาพเหล่านี้ให้คุณ
Oki

2

เจลลี่ ,26 25 22 21 20 ไบต์

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

ลองออนไลน์!

รหัสนี้ใช้งานไม่ได้จริงจนถึง 20 ไบต์และฉันก็ไม่ได้สังเกต มันล้มเหลวใน[2,2]กรณีทดสอบ ควรทำงานได้อย่างสมบูรณ์แบบแล้ว


2

JavaScript (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: o


1

Python 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 ของการป้อนค่าที่ไม่ถูกต้อง (ok เนื่องจากมีการจัดทำดัชนี 1 รายการ) เพียงใช้มันเช่นนี้

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

1

Mathematica, 82 ไบต์

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

Functionซึ่งแทนที่{2}ด้วยสัญลักษณ์ที่ไม่ได้กำหนดซ้ำ ๆ กันTรายการ (หนึ่งรายการขึ้นไป) 1ที่2มีการวนซ้ำครั้งถัดไปและสิ่งอื่น ๆ ที่มี0จนกว่าจะถึงจุดคงที่จากนั้นส่งคืนFirstPositionสัญลักษณ์TในFixedPointListเครื่องหมายลบที่เกิด1ขึ้น เอาท์พุทคือ{n}ที่nเป็นจำนวน (- 1ดัชนี) ของการทำซ้ำที่จำเป็นในการเข้าถึง{2}สำหรับกรณีความจริงและ-1+Missing["NotFound"]สำหรับกรณีเท็จ

หากเอาต์พุตต้องnมากกว่า{n}จะมีค่าใช้จ่ายเพิ่มขึ้นสามไบต์:

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

1

Python 2 , 184 163 156 bytes

  • @Felipe Nardi Batista บันทึก 21 ไบต์ !!!! ขอบคุณมาก!!!!
  • Halvard Hummel บันทึก 7 ไบต์ !! ขอบคุณ

Python 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

Python 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)

ลองออนไลน์!

Python 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)

ลองออนไลน์!

คำอธิบาย

ลำดับใหม่ (w) ถูกเตรียมใช้งานเพื่อจัดเก็บการวนซ้ำถัดไปของการลด ตัวนับ (c) มีค่าเริ่มต้นเพื่อติดตามจำนวนการวนซ้ำ

ทุกรายการในลำดับดั้งเดิมจะถูกเปรียบเทียบกับค่าก่อนหน้า หากเหมือนกันค่าของไอเท็มสุดท้ายของ (w) จะเพิ่มขึ้นด้วย 1 หากต่างกันลำดับ (w) จะถูกขยายด้วย [1]

หาก w == [2] ระบบจะส่งคืนตัวนับ (c) มิฉะนั้นหากลำดับดั้งเดิมมีรายการอื่นที่ไม่ใช่ 1 และ 2 จะส่งคืนค่า -1 หากไม่ใช่ทั้งกรณีฟังก์ชันจะถูกเรียกซ้ำด้วยลำดับใหม่ (w) ตามที่ (s) และตัวนับ (c) เพิ่มขึ้น 1


หากต้องการบันทึกไบต์ฉันพยายามรวมสองบรรทัดแรกเข้าdef f(s,c=2,j=0,w=[1]):ด้วยกัน แต่นั่นก็ให้ผลที่แตกต่างกัน มีใครอธิบายได้ไหมว่าเพราะอะไร
Jitse


@ โจกิ้งนั่นทำให้รู้สึกที่สมบูรณ์แบบขอบคุณ!
Jitse

0

R, 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()

ผ่านทุกกรณีทดสอบ ส่งข้อผิดพลาดอย่างน้อยหนึ่งข้อ ฉันเกลียดการตรวจสอบความถูกต้อง รหัสนี้อาจจะถูก golfed ดังนั้นถ้าปัจจัยที่ดี; มันจะสั้นลงแม้ในกรณีที่อินพุตเป็นลำดับของ 1 และ 2 ไม่จำเป็นต้องเป็นคำนำหน้าของลำดับ Kolakoski ที่นี่เราต้องตรวจสอบทั้งเวกเตอร์เริ่มต้น (ไม่เช่นนั้นกรณีทดสอบ[-2,1]) จะผ่านไปแล้วและเวกเตอร์ที่ได้นั้น (มิฉะนั้น[1,1,1]จะผ่านไป)


0

Ruby , 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 เป็นเท็จ

ทำให้การใช้วิธีการอันนับไม่ถ้วนของ Ruby ซึ่งทำในสิ่งที่เราต้องการ - จัดกลุ่มการรันต่อเนื่องกันของตัวเลขที่เหมือนกัน ความยาวของการวิ่งประกอบด้วยอาร์เรย์สำหรับการวนซ้ำครั้งถัดไป คงการวนซ้ำในขณะที่อาร์เรย์มีความยาวมากกว่า 1 องค์ประกอบและไม่พบตัวเลขอื่นใดนอกเหนือจาก 1 และ 2


0

Pyth , 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.