กำลังคำนวณสล็อตทั้งหมด


17

ให้รายการของงานที่ต้องทำตามลำดับโดยแต่ละช่องจะทำจะต้องใช้เวลานานเท่าใดในการดำเนินการทั้งหมดหากหลังจากทำงานแล้วงานเดียวกันจะไม่สามารถทำได้ในสองช่องถัดไป )? อย่างไรก็ตามสามารถกำหนดงานที่แตกต่างได้ในช่องการระบายความร้อนนี้

ตัวอย่างเช่น,

[9,10,9,8] => output: 5

[9 10 _ 9 8]เพราะงานจะได้รับการจัดสรร
1. ก่อนอื่น 9 ต้องการจุดระบายความร้อนสองจุด _ _ 9 _ _ดังนั้นเราจึงเริ่มต้นด้วย
2. งานต่อไป 10 แตกต่างจากงานก่อนหน้า 9 ดังนั้นเราสามารถจัดสรรหนึ่งใน _ _ 9 10 _จากนั้นเราก็จะมี
3. ประการที่สามไม่สามารถจัดสรร 9 ในขณะนี้เนื่องจากงานแรก 9 เป็นงานเดียวกันและต้องใช้เวลาในการทำให้เย็นลง 9 10 _ 9.
4. ล่าสุด 8 ไม่เหมือนกับงานสองงานก่อนหน้านี้ดังนั้นจึงสามารถจัดสรรได้หลังจาก 9 และเนื่องจากนี่เป็นงานสุดท้ายจึงไม่ต้องใช้เวลาในการระบายความร้อน รายการสุดท้ายคือ9 10 _ 9 8และผลลัพธ์ที่คาดหวังคือ 5 ซึ่งเป็นจำนวนสปอต (หรือจำนวนช่อง)

กรณีทดสอบ:

[1,2,3,4,5,6,7,8,9,10] => output : 10 ([1 2 3 4 5 6 7 8 9 10])
[1,1,1] => output: 7 ([1 _ _ 1 _ _ 1])
[3,4,4,3] => output: 6 ([3 4 _ _ 4 3])
[3,4,5,3] => output: 4 ([3 4 5 3])
[3,4,3,4] => output : 5 ([3 4 _ 3 4])
[3,3,4,4] => output : 8 ([3 _ _ 3 4 _ _ 4])
[3,3,4,3] => output : 7 ([3 _ _ 3 4 _ 3])
[3,2,1,3,-4] => output : 5 ([3 2 1 3 -4])
[] => output : 0 ([])
[-1,-1] => output : 4 ([-1 _ _ -1])

ค่าที่ป้อนสามารถเป็นจำนวนเต็มใดก็ได้ (ค่าลบ, 0, ค่าบวก) ความยาวของรายการงานคือ 0 <= ความยาว <= 1,000,000
เอาต์พุตจะเป็นจำนวนเต็มจำนวนสล็อตทั้งหมดซึ่งระบุไว้ในกรณีทดสอบเป็นเอาต์พุต รายการภายในวงเล็บคือวิธีสร้างผลลัพธ์

เกณฑ์การชนะรางวัล


มันโอเคไหมถ้าเราเอาท์พุทอะไรแทน 0 เพื่อ[]?
กำจัด

8
มันเร็วไปหรือเปล่าที่จะรับคำตอบ?
Nick Kennedy

7
@NickKennedy กล่าวว่าไกลเกินกว่าจะรับโซลูชันได้ บางคนถึงกับไม่แนะนำให้ยอมรับวิธีแก้ปัญหา
Shaggy

คำตอบ:



5

05AB1E , 22 ไบต์

v¯R¬yQiõˆ}2£yåiˆ}yˆ}¯g

ลองมันออนไลน์หรือตรวจสอบกรณีทดสอบทั้งหมด

คำอธิบาย:

v           # Loop over the integers `y` of the (implicit) input-list:
 ¯R         #  Push the global_array, and reverse it
   ¬        #  Get the first item (without popping the reversed global_array itself)
    yQi  }  #  If it's equal to the integer `y`:
       õˆ   #   Add an empty string to the global_array
   2£       #  Then only leave the first 2 items of the reversed global_array
     yåi }  #  If the integer `y` is in these first 2 items:
        ˆ   #   Add the (implicit) input-list to the global_array
 yˆ         #  And push the integer `y` itself to the global_array
g         # After the loop: push the global array, and then pop and push its length
            # (which is output implicitly as result)

สิ่งที่เป็นส่วนกลางทั่วโลก? มันว่างเปล่าเมื่อเริ่มต้นโปรแกรมหรือไม่?
ศูนย์รวมแห่งความไม่รู้

@EmbodimentofIgnorance ใช่มันเป็นอาร์เรย์เดียวที่ฉันสามารถเพิ่มบางสิ่งซึ่งฉันสามารถผลักดันและที่ฉันสามารถล้างได้ และมันก็เริ่มว่างเปล่าในตอนแรก
Kevin Cruijssen

3

Brachylogขนาด 10 ไบต์

เป็นเรื่องที่ดีเสมอที่ได้เห็นปัญหาที่ Brachylog ทำงานได้ดีที่สุด

⊆Is₃ᶠ≠ᵐ∧Il

คำอธิบาย

⊆I           # Find the minimal ordered superset of the input (and store in I) where:
   s₃ᶠ       #     each substring of length 3
      ≠ᵐ     #     has only distinct numbers
        ∧Il  # and output the length of that superset

ลองออนไลน์!


2

R , 123 ไบต์

`-`=nchar;x=scan(,'');while(x!=(y=gsub("([^,]+),(([^,]*,){0,1})\\1(,|$)","\\1,\\2,\\1\\4",x)))x=y;-gsub("[^,]","",y)+(-y>1)

ลองออนไลน์ - โปรแกรมเดียว!

ลองออนไลน์ - ตัวอย่างมากมาย!

โปรแกรมเต็มรูปแบบที่อ่านรายการจำนวนเต็มคั่นด้วยเครื่องหมายจุลภาคเป็นอินพุตและส่งออกสล็อตที่ต้องการ ฉันแน่ใจว่าสิ่งนี้สามารถตีกอล์ฟได้มากกว่านี้และการใช้โซลูชัน regex ที่ใช้ภาษาอื่นจะมีประสิทธิภาพมากกว่าในหน่วยไบต์

หมายเหตุเกี่ยวกับ TIO ตัวที่สองที่ฉันใส่ไว้ในฟังก์ชั่นเพื่อให้สามารถแสดงตัวอย่างได้หลายตัวอย่าง ฟังก์ชั่นนี้ยังแสดงรายการสุดท้าย แต่นี่จะไม่ส่งออกโปรแกรมหลักของฉันถ้าทำงานแยก


2

ข้อความค้นหา TSQL ขนาด 158 ไบต์

ป้อนข้อมูลเป็นตาราง

แบบสอบถามซ้ำดังนั้น

ตัวเลือก (MAXRECURSION 0)

เป็นสิ่งจำเป็นเนื่องจากรายการของตัวเลขสามารถเกิน 100 แม้ว่าจะสามารถจัดการการเรียกซ้ำ 32,767 - ข้อ จำกัด จำเป็นจริง ๆ ในงานนี้หรือไม่

DECLARE @ table(a int, r int identity(1,1))
INSERT @ VALUES(3),(3),(4),(4);

WITH k as(SELECT null b,null c,1p
UNION ALL
SELECT iif(a in(b,c),null,a),b,p+iif(a in(b,c),0,1)FROM @,k
WHERE p=r)SELECT sum(1)-1FROM k
OPTION(MAXRECURSION 0) 

ลองออนไลน์


2

R , 81 70 ไบต์

sum(l<-rle(s<-scan())$l*3-3,1-l%/%6,((r=rle(diff(s,2)))$l+1)%/%2*!r$v)

ลองออนไลน์!

หลังจากพยายามหลายครั้งไม่ประสบความสำเร็จรหัสก็ค่อนข้างน่าเกลียดและไม่สั้นนัก แต่อย่างน้อยตอนนี้ก็ใช้งานได้ ...

อันดับแรกเราประเมินความยาวของการรันต่อเนื่องของงานเดียวกัน เช่น3, 3, 4, 3นี้จะให้:

Run Length Encoding
  lengths: int [1:3] 2 1 1
  values : num [1:3] 3 4 3

แต่ละวิ่งเหล่านี้ผลิต(len - 1) * 3 + 1ขั้นตอน ( + 1มีการจัดการแยกต่างหาก)

ต่อไปเราจะดำเนินการเกิดขึ้นของงานเดียวกันสถานที่ 2 แห่งห่างกันที่ชอบ: โดยการใช้x, y, x diff(s, lag=2)เวกเตอร์ที่ได้จะถูกส่งไปยังการทำงานต่อเนื่อง ( r) ตามrleฟังก์ชัน ตอนนี้เนื่องจากมีการสลับสลับหลายครั้งเราจำเป็นต้องเพิ่มceiling(r$len/2)ขั้นตอนสำหรับการวิ่งทั้งหมดของศูนย์ เช่น:

x y x(ความยาว 1) และx y x y(ความยาว 2) ทั้งคู่ต้องการ 1 ขั้นตอนพิเศษ:x y _ x (y)

x y x y x(ความยาว 3) และx y x y x y(ความยาว 4) ทั้งสองต้องการ 2 ขั้นตอนเพิ่มเติม:x y _ x y _ x (y)

สุดท้ายเราต้องชดเชยการเกิดขึ้นของ alternations เหล่านี้ในช่วงกลางของระยะยาวของงานเดียวกัน: x, x, x, x...เพราะฉะนั้นแทนที่จะ1-l%/%61


ฉันกำลังแสดงความคิดเห็นเกี่ยวกับการใช้diff(s,lag=2)เพื่อตรวจจับความใกล้เคียง! ตอนนี้คุณเป็นไบต์ที่สั้นกว่าวิธีแก้ปัญหาของฉัน ...
Giuseppe

ใช่ยังไม่เลิก :) ตอนนี้พยายามกำจัดวงเล็บบางอย่าง ...
Kirill L.

2

Python 2 , 67 ไบต์

r=[]
for x in input():
 while x in r[-2:]:r+=r,
 r+=x,
print len(r)

ลองออนไลน์!

นำความท้าทายมาใช้อย่างแท้จริง ใช้สำเนาของรายการเองเป็น "ช่องว่าง" เนื่องจากสิ่งเหล่านี้ไม่สามารถเท่ากับจำนวนใด ๆ


2

ถ่าน , 27 23 ไบต์

Fθ«W№✂υ±²¦¦¦ι⊞υω⊞υι»ILυ

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

Fθ«

วนรอบงาน

W№✂υ±²¦¦¦ι⊞υω

เพิ่มจุดระบายความร้อนในขณะที่งานเป็นหนึ่งในสองสุดท้ายในผลลัพธ์

⊞υι»

เพิ่มงานปัจจุบันให้กับผลลัพธ์

ILυ

พิมพ์จำนวนจุด


2

R , 74 68 ไบต์

length(Reduce(function(x,y)c(y,rep("",match(y,x[2:1],0)),x),scan()))

ลองออนไลน์!

สร้างอาร์เรย์งาน (ในทางกลับกัน) จากนั้นใช้ความยาว สั้นกว่าคำตอบของคิริลล์เพียงเล็กน้อยสั้นๆ ดังนั้นบางครั้งวิธีการไร้เดียงสานั้นค่อนข้างดี แก้ไข: สั้นลงอีกครั้ง! ฉันยืมแม่แบบทดสอบของคิริลล์ด้วย

-6 ไบต์แทนที่ ด้วยmax(0,which(y==x[2:1])) match(y,x,0)


@Giuspeppe cฟังก์ชั่นทำอะไร
ศูนย์รวมแห่งความไม่รู้

@EmbodimentofIgnorance - cย่อมาจากcombineแม้ว่าconcatenateอาจจะดีกว่า มันรวมการขัดแย้งลงในรายการเดียว
จูเซปเป้

ขอบคุณฉันคิดว่ามันแปลกที่ภาษาที่ไม่ได้ออกแบบมาสำหรับการเล่นกอล์ฟจะมีฟังก์ชั่นตัวอักษรเดียว
Embodiment of Ignorance

1

Perl 6 , 98 bytes

{($!=$,|$_ Z$_ Z .[1..*+1])>>.repeated.squish(:with({$+^=[*] $! ne$^a ne$^b,$b==($!=$a)})).sum+$_}

ลองออนไลน์!

Blergh ต้องมีวิธีที่ดีกว่าในการทำสิ่งนี้ ฉันไม่แน่ใจ 100% ว่าถูกต้องทั้งหมดแม้ว่าจะผ่านทุกกรณีที่ฉันสามารถนึกถึง

โดยพื้นฐานแล้วสิ่งนี้เริ่มต้นด้วยการจัดกลุ่มทริปเปิลทั้งหมดของรายการอินพุตโดยมีการแพ็ดดิงไปที่ด้านใดด้านหนึ่ง ยกตัวอย่างเช่นจะกลายเป็น[1,2,1,2] (Any,1,2), (1,2,1), (2,1,2), (1,2,Nil)เราได้รับองค์ประกอบในแต่ละแฝดกลายเป็นrepeated(), (1), (2), ()

จากนั้นsquishองค์ประกอบที่ต่อเนื่องกันที่ไม่ได้อยู่ในรายการเดียวกัน แต่มีขนาดเท่ากัน (เพื่อไม่ให้ squish บางอย่างที่เหมือนกัน[1,1,1]) และองค์ประกอบแรกไม่เท่ากับองค์ประกอบก่อนหน้า (เพราะเราไม่สามารถผสานเวลาเข้าด้วยกัน[1,1,2,2]) และ ในที่สุดองค์ประกอบก่อนหน้านี้ยังไม่ได้ถูกบีบ ( [1,2,1,2,1,2]) ดังนั้น(1), (2)ในตัวอย่างข้างต้นจะถูกบีบเข้าด้วยกัน

สุดท้ายเราได้รับsumความยาวทั้งหมดของรายการนี้ซึ่งเป็นตัวแทนชั่วโมงที่เราแทรกและเพิ่มความยาวของรายการเดิม

ตัวอย่างเช่น:

(1,1,1) => (Any,1,1),(1,1,1),(1,1,Nil) => (1),(1,1),(1) => (no squishes) => 4+3 = 7
(1,2,1,2,1,2) => (Any,1,2), (1,2,1), (2,1,2), (1,2,1), (2,1,2), (1,2,Nil) => (),(1),(2),(1),(2),() => squish (1),(2) and (1),(2) => 2+6 = 8

1

JavaScript (ES6), 57 ไบต์

f=([x,...a],p,q)=>1/x?1+f(x!=p&x!=q?a:[x,...a,x=f],x,p):0

ลองออนไลน์!

แสดงความคิดเห็น

f = (             // f is a recursive function taking:
  [x,             //   x   = next job
      ...a],      //   a[] = array of remaining jobs
  p,              //   p   = previous job, initially undefined
  q               //   q   = penultimate job, initially undefined
) =>              //
  1 / x ?         // if x is defined and numeric:
    1 +           //   add 1 to the grand total
    f(            //   and do a recursive call to f:
      x != p &    //     if x is different from the previous job
      x != q ?    //     and different from the penultimate job:
        a         //       just pass the remaining jobs
      :           //     else:
        [ x,      //       pass x, which can't be assigned yet
          ...a,   //       pass the remaining jobs
          x = f   //       set x to a non-numeric value
        ],        //
      x,          //     previous job = x
      p           //     penultimate job = previous job
    )             //   end of recursive call
  :               // else:
    0             //   stop recursion

1

C (gcc) , 69 ไบต์

f(j,l)int*j;{j=l>1?(*j-*++j?j[-1]==j[l>2]?j++,l--,3:1:3)+f(j,l-1):l;}

ลองออนไลน์!

การเรียกซ้ำแบบตรงไปตรงมา

f(j,l)int*j;{               //Jobs, (array) Length
    j=l>1                   //if l > 1, do a recursion:
        ? (*j-*++j          // check if first and second elements are equal (j++)
            ? j[-1]==       //  1st!=2nd; check if first and third are equal
                j[l>2]      //  (first and second if l==2, but we already know 1st!=2nd)
                ? j++,l--,3 //   1st==3rd (j++,l--) return 3+f(j+2,l-2)
                : 1         //   1st!=3rd (or l==2) return 1+f(j+1,l-1)
            : 3             //  1st==2nd            return 3+f(j+1,l-1)
          )+f(j,l-1)        // j and l were modified as needed
        : l;                // nothing more needed  return l
}


1

Smalltalk, 125 ไบต์

c:=0.n:=q size.1to:n-2do:[:i|(j:=q at:i)=(k:=q at:i+1)ifTrue:[c:=c+2].j=(m:=q at:i+2)ifTrue:[c:=c+1]].k=m ifTrue:[c:=c+1].c+n

คำอธิบาย

c : accumulator of proximity penalty
q : input array.
n := q length
i : iteration index from 1 to: n-2 (arrays are 1-based in Smalltalk).
j := memory for element i, saves some few bytes when reused
k := similar to j but for i+1.
m := similar to k but for i+2.

นี่ไม่ใช่ตัวอย่างหรือไม่
attinat

1

Perl 5 -pl , 42 40 ไบต์

$a{$_}=~s/.*/$\=$&if++$\<$&;$\+3/e}{$_=0

ลองออนไลน์!


ลดระดับลงเหลือ 35 โดยใช้-pและดำเนินการทดแทน: ลองออนไลน์!
Xcali

@Xcali นั่นไม่ได้ให้อะไรเลยสำหรับการป้อนข้อมูลที่ว่างเปล่า แต่ฉันถึง 39
wastl

1
ดูเหมือนจะไม่ทำงานสำหรับ1,1,1
nwellnhof

@nwellnhof แก้ไข
wastl

0

รุ่นที่ 184 ไบต์

@echo off
@set l=-
@set p=-
@set n=0
@for %%j in (%*)do @call:c %%j
@exit/b%n%
:c
@if %1==%l% (set l=-&set/an+=2)else if %1==%p% set l=-&set/an+=1
@set p=%l%&set l=%1&set/an+=1

การป้อนข้อมูลผ่านอาร์กิวเมนต์บรรทัดคำสั่งและผลลัพธ์คือการออกรหัส คำอธิบาย:

@set l=-
@set p=-

ติดตามงานสองงานสุดท้าย

@set n=0

เริ่มต้นการนับ

@for %%j in (%*)do @call:c %%j

ประมวลผลงานแต่ละงาน

@exit/b%n%

เอาต์พุตจำนวนนับสุดท้าย

:c

สำหรับแต่ละงาน:

@if %1==%l% (set l=-&set/an+=2)else if %1==%p% set l=-&set/an+=1

หากเราทำการประมวลผลงานเมื่อเร็ว ๆ นี้ให้เพิ่มจำนวนจุดระบายความร้อนที่เหมาะสม นอกจากนี้ให้ล้างงานสุดท้ายเพื่อให้งานต่อไปเป็นต้นเหตุของการระบายความร้อนหากงานนั้นเหมือนกับงานนี้

@set p=%l%&set l=%1&set/an+=1

อัพเดตสองงานล่าสุดและจัดสรรตำแหน่งให้กับงานนี้


0

สวิฟท์, 114 ไบต์

func t(a:[Int]){
var s=1
for i in 1...a.count-1{s = a[i-1]==a[i] ? s+3:i>1&&a[i-2]==a[i] ? s+2:s+1}
print("\(s)")}

ลองออนไลน์!


2
ล้มเหลวในการ3,4,3,4ควรเดิมพัน 5 ไม่ใช่ 6
Kirill L.

นอกเหนือจาก xyxy fix @KirillL บันทึกไว้s = aสามารถs=aและคุณสามารถทำได้s+=มากกว่าหลายรายการs=s+...และลบช่องว่างหลังจาก?: for i in 1...a.count-1{s+=a[i-1]==a[i] ?3:i>1&&a[i-2]==a[i] ?2:1}เพื่อบันทึก 9 ไบต์
Daniel Widdis

0

Python 3 , 79 75 ไบต์

-3 ไบต์ขอบคุณ mypetlion
-1 ไบต์ขอบคุณ Sara J

f=lambda a,b=[]:a and f(*[a[1:],a,a[:1]+b,[b]+b][a[0]in b[:2]::2])or len(b)

ลองออนไลน์!


1
a[0]in b[:2]and f(a,['']+b)or f(a[1:],[a[0]]+b)สามารถกลายเป็นf(*[a[1:],a,[a[0]]+b,['']+b][a[0]in b[:2]::2])บันทึก 2 ไบต์
mypetlion

1
[a[0]]+bสามารถกลายเป็นa[:1]+bบันทึก 1 ไบต์
mypetlion

1
แทนที่['']+bด้วยการ[b]+bบันทึกไบต์ - bเป็นรายการดังนั้นมันจะไม่เท่ากับค่าใด ๆ ในa
Sara J

0

Java (JDK) , 110 ไบต์

j->{int p,q;for(p=q=j.length;p-->1;q+=j[p]==j[p-1]?2:(p>1&&j[p]==j[p-2]&(p<3||j[p-1]!=j[p-3]))?1:0);return q;}

ลองออนไลน์!

รหัสแสดงความคิดเห็นที่ไม่ดี

j -> {
    int p, q = j.length; // Run all jobs
    for (p = q; p-- > 1;) { // reverse iterate
        q += j[p] == j[p - 1] ? 2 : // add 2 if prev same
        (p > 1 && j[p] == j[p - 2] & // 1 if 2prev same
        (p < 3 || j[p - 1] != j[p - 3]) // except already done
        ) ? 1 : 0; // otherwise 0
    }
    return q;
}

ใช้งานไม่ได้3,4,3,4,3,4ส่งคืน 7 แทน 8
ศูนย์รวมของความไม่รู้

นี่เป็นปัญหาเล็กน้อยที่ชั่วร้าย
Daniel Widdis

0

เยลลี่ , 20 ไบต์

ṫ-i⁹⁶x;
⁶;ç³Ṫ¤¥¥³¿L’

ลองออนไลน์!

แม้ว่านี่จะค่อนข้างคล้ายกับคำตอบสั้น ๆ ของ @ EriktheOutgolferแต่ฉันเขียนโดยไม่เห็นเขา ไม่ว่าในกรณีใดเขาจะดีกว่า!

คำอธิบาย

ตัวช่วยลิงค์ใช้รายการปัจจุบันเป็นรายการซ้ายและรายการถัดไปทางขวา

ṫ-            | take the last two items in the list
  i⁹          | find the index of the new item
    ⁶x        | that many space characters
      ;       | prepend to new item

ลิงก์ monadic หลักรับรายการจำนวนเต็มเป็นอินพุต

⁶             | start with a single space
 ;            | append...
  ç³Ṫ¤¥       | the helper link called with the current list
              | as left item and the next input item as right
       ¥³¿    | loop the last two as a dyad until the input is empty
          L   | take the length
           ’  | subtract one for the original space




0

JavaScript (V8), 101 ไบต์

f=a=>for(var c=0,i=0;i<a.length;i++,c++)a[i-1]==a[i]?c+=2:a[i-2]==a[i]&&(c++,a[i-1]=void 0)
return c}

ลองออนไลน์!

รหัสที่คลายการบรรจุมีลักษณะดังนี้:

function f(a)
{
    var c = 0;
    for (var i = 0; i < a.length; i++, c++)
    {
        if (a[i - 1] == a[i])
            c+=2;
        else if (a[i - 2] == a[i])
            c++,a[i-1]=undefined;
    }

    return c;
}

ความพยายามในการเล่นรหัสครั้งแรกของฉันอาจจะสามารถปรับให้เหมาะสมได้มากมายโดยการลดขนาดอาเรย์และส่งต่อซ้ำ


ยินดีต้อนรับสู่ PPCG! นี่เป็นโพสต์แรกที่ยอดเยี่ยมมาก!
Rɪᴋᴇʀ

0

Zsh , 66 60 ไบต์

-6 ไบต์จากปริยาย "$@"

for j
{((i=$a[(I)$j]))&&a=
a=("$a[-1]" $j)
((x+=i+1))}
<<<$x

ลองออนไลน์! ฉันขอแนะนำให้เพิ่มset -xไปยังจุดเริ่มต้นเพื่อให้คุณสามารถติดตามได้

for j                   # Implicit "$@"
{                       # Use '{' '}' instead of 'do' 'done'
    (( i=$a[(I)$j] )) \ # (see below)
        && a=           # if the previous returned true, empty a
    a=( "$a[-1]" $j )   # set the array to its last element and the new job
    (( x += i + 1 ))    # add number of slots we advanced
}
<<<$x                   # echo back our total
((i=$a[(I)$j]))
    $a[     ]           # Array lookup
       (I)$j            # Get highest index matched by $j, or 0 if not found
  i=                    # Set to i
((           ))         # If i was set nonzero, return true

aมีสองงานสุดท้ายเสมอดังนั้นหากการค้นหาพบงานที่ตรงกันa[2]เราจะเพิ่มขึ้นสามงาน (เนื่องจากช่องงานจะเป็น[... 3 _ _ 3 ...])

ถ้า aไม่ได้ตั้งค่าการค้นหาจะล้มเหลวและการขยายเลขคณิตจะส่งคืนข้อผิดพลาด แต่จะเกิดขึ้นกับงานแรกเท่านั้นและไม่เป็นอันตราย

เราสามารถบันทึกอีกหนึ่งไบต์ถ้าเราใช้$[x+=i+1]แทนและไม่มีคำสั่งในระบบผู้ใช้ที่ประกอบด้วยตัวเลขทั้งหมด


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.