กำหนดจุดตัดของสองรายการ


10

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

อินพุต

อินพุตอาจอยู่ในรูปแบบที่ต้องการ (พารามิเตอร์ฟังก์ชัน, stdio ฯลฯ ) และประกอบด้วยรายการจำนวนเต็มสองรายการ คุณหลายคนไม่คิดอะไรเกี่ยวกับแต่ละรายการอื่น ๆ นอกเหนือจากนั้นอาจมีจำนวนเต็มจำนวนที่ไม่เป็นลบ (นั่นคือไม่ได้เรียงลำดับอาจเป็นไปได้ว่าอาจมีรายการซ้ำอาจมีความยาวต่างกันและอาจว่างเปล่า) มีการสันนิษฐานว่าจำนวนเต็มแต่ละรายการจะพอดีกับประเภทจำนวนเต็มที่เป็นภาษาท้องถิ่นของคุณซึ่งอาจมีความยาวมากกว่า 1 หลักทศนิยมและมีการลงชื่อ

อินพุตตัวอย่าง:

1 4 3 9 8 8 3 7 0
10 1 4 4 8 -1

เอาท์พุต

เอาท์พุทเป็นรายการที่เหมือนจำนวนเต็มแทนชุดจุดตัดของทั้งสองรายการเป็นรูปแบบที่ต้องการ (ค่าส่งคืน stdio ฯลฯ ) ไม่มีความต้องการที่จะเรียงลำดับผลลัพธ์แม้ว่าคุณจะยินดีที่จะจัดให้มีการใช้งานที่เกิดขึ้นกับการเรียงลำดับเสมอ ผลลัพธ์จะต้องเป็นชุดที่ไม่ได้รับคำสั่งที่ถูกต้อง (เช่นจะต้องไม่มีค่าซ้ำกัน)

ตัวอย่างกรณีทดสอบ (โปรดสังเกตว่าลำดับของเอาต์พุตไม่สำคัญ):

สองบรรทัดแรกคือรายการอินพุตบรรทัดที่สามคือเอาต์พุต (empty)หมายถึงรายการที่ว่างเปล่า

(empty)
(empty)
(empty)

1000
(empty)
(empty)

3 1 2 4 3 1 1 1 1 3
3 1 -1 0 8 3 3 1
1 3

1 2 1
3 3 4
(empty)

เกณฑ์การให้คะแนน

นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์

ห้ามเจาะรูมาตรฐาน คุณสามารถใช้คุณสมบัติในตัวที่ไม่ได้ออกแบบมาสำหรับการใช้งานแบบ set-like

คุณสมบัติที่ห้ามใช้ในตัว:

  • ตั้งค่าการสร้าง / ลบรายการที่ซ้ำกัน
  • ตั้งค่าความแตกต่าง / ทางแยก / สหภาพ
  • การทดสอบการเป็นสมาชิกทั่วไป (เช่นสิ่งใดก็ตามที่คล้ายกับinคำสำคัญใน Python indexOfฟังก์ชั่นเหมือนกัน ฯลฯ ) โปรดทราบว่าอนุญาตให้ใช้การสร้าง "foreach item in list" ได้ (สมมติว่าพวกเขาไม่ได้ละเมิดข้อ จำกัด อื่น ๆ ) แม้ว่า Python จะใช้inคำหลักเพื่อสร้างโครงสร้างนี้ใหม่
  • บิวด์อินที่ต้องห้ามเหล่านี้คือ "viral" เช่นหากมีบิวด์อินที่ใหญ่กว่าที่มีฟีเจอร์ย่อยเหล่านี้มันเป็นสิ่งต้องห้ามในทำนองเดียวกัน (เช่นการกรองโดยการเป็นสมาชิกในรายการ)

บิวด์อินใด ๆ ที่ไม่อยู่ในรายการด้านบนได้รับอนุญาต (เช่นการเรียงลำดับการทดสอบความเท่าเทียมกันจำนวนเต็มลิสต์ผนวก / ลบออกโดยดัชนีการกรอง ฯลฯ )

ตัวอย่างเช่นใช้ตัวอย่างโค้ดสองตัวอย่างต่อไปนี้ (โค้ดคล้าย Python):

# prohibited: filters by testing if each value in tmpList is a member of listA
result = tmpList.filter(listA)

# ok: filtering by a lambda which manually iterates over listA and checks for equality
def my_in_func(val, slist):
    for a in slist:
        if(val == a):
            return True
    return False
result = filter(lambda v: my_in_func(val, listA), tmpList)

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

โซลูชันของคุณควรทำในเวลาที่เหมาะสม (พูดน้อยกว่าหนึ่งนาทีสำหรับฮาร์ดแวร์ใดก็ตามที่คุณมีสำหรับสองรายการ ~ ยาว 1,000 รายการ)


5
โดยวิธีการที่ความสับสนและการสื่อสารผิดพลาดเป็นเรื่องธรรมดาในX ทำโดย Yซึ่งเป็นเหตุผลที่พวกเขาอย่างเป็นทางการเป็นหนึ่งในสิ่งที่ควรหลีกเลี่ยงเมื่อเขียนความท้าทาย
Dennis

2
@ เดนนิสใช่ฉันเดาว่าปัญหานี้ได้กลายเป็นหนึ่งในนั้น :( เมื่อฉันเขียนมันครั้งแรกฉันหวังว่ามันอาจจะเป็นปัญหาที่น่าสนใจ แต่ทันทีที่ฉันเริ่มออกกำลังกายกฎฉันควรฆ่าความท้าทาย
helloworld922

เป็น builtin ซึ่งทำการเข้ารหัสความยาวรันได้หรือไม่?
isaacg

ควรจะดี
helloworld922

1
อาจมีซ้ำกันในผลลัพธ์หรือไม่
อดัม

คำตอบ:



4

MATL , 18 ไบต์

YY_iti!=Xa)hStdfQ)

ลองออนไลน์!

ใช้งานได้ในสองขั้นตอน การคำนวณจุดตัดแรกอาจมีซ้ำกัน สิ่งนี้ขึ้นอยู่กับการเปรียบเทียบองค์ประกอบทั้งหมดของหนึ่งอาร์เรย์กับองค์ประกอบทั้งหมดของอีกองค์ประกอบหนึ่งและรักษาองค์ประกอบขององค์ประกอบแรกที่มีอยู่ในสอง

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

YY_                 % push -infinity
   it               % take first input. Duplicate
     i!             % take second input. Transpose
        =           % test all combinations of elements of the two inputs for equality
        Xa          % row vector that contains true for elements of first array that 
                    % are present in the second, possibly duplicated
          )         % index into first array to keep only those elements. Now we need
                    % to remove duplicates
           h        % append -infinity
            S       % sort
             tdf    % duplicate. Find entries that differ from the preceding
                Q)  % add 1 and index into array to keep only non-duplicates

4

เยลลี่ 13 ไบต์

=S¥Ðf
ṂrṀ{ç³ç

ลองออนไลน์!

มันทำงานอย่างไร

ṂrṀ{ç³ç  Main link. Arguments: A (list 1), B (list 2)

Ṃ        Yield m, the minimum of A.
  Ṁ{     Yield M, the maxmimum of A.
 r       Create an inclusive range from m to M.
    f³   Apply the helper link with right argument A.
      f  Apply the helper link with right argument B.


=S¥Ðf    Helper link. Arguments: n (integer in range), L (list, A or B)

=        Test all elements of L for equality with n.
 S       Add the results.
  ¥      Combine the two previous links into a dyadic chain.
   Ðf    Filter by the result of the sums.

@isaacg แก้ไขแล้ว
Dennis

3

golflua , 68 ตัวอักษร

\f(a,b)k={}~@_,v p(a)~@_,w p(b)?w==v k[w]=w$$$~@_,v p(k)I.w(v," ")$$

ซึ่งเรียกว่าเป็น

> f({1,2,3,4},{3,4,5})
3 4
> f({3,1,2,4,3,1,1,1,1,3},{3,1,-1,0,8,3,3,1})
3 1

ใน Lua ปกตินี้จะเป็น

function foo(a,b)
   local k={}
   for i,v in pairs(a)
      for j,w in pairs(b)
         if v==w then
            k[v] = v
         end
      end
   end
   for i,v in pairs(k)
      print(v," ")
   end
end

โดยพื้นฐานแล้วฉันกำลังวนองค์ประกอบแต่ละส่วนของตารางสองตารางและเก็บค่าที่เท่ากันเท่านั้น ด้วยการใช้ค่าเป็นคีย์ ( k[w]=w) ฉันจะกำจัดรายการที่ซ้ำกันทั้งหมด จากนั้นเราจะแสดงตารางใหม่โดยทำซ้ำดัชนีและค่าของpairs


3

JavaScript (ES6), 66 ไบต์

(a,b)=>a.filter((e,i)=>b.some(f=>e==f)&a.slice(0,i).every(f=>e-f))

โดยไม่ใช้indexOfเพราะฉันไม่เชื่อว่ามันอนุญาต


3

Pyth, 12 11 ไบต์

eMrSsq#RQE8

สาธิต

คำอธิบาย:

eMrSsq#RQE8
               Implicit: Q is one of the lists.
     q#RQE     For every element in the first list, filter the second list on
               equality with that element.
    s          Concatenate. We now have the intersection, with duplicates.
  rS      8    Sort and run length encode, giving counts and elements.
eM             Take just the elements.

การเรียงลำดับและ rle บันทึกหนึ่งไบต์
Jakube

@Jakube ฉันจะบอกว่า rle เป็น builtin ซึ่งลบรายการที่ซ้ำกัน
isaacg

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

@Jakube OP บอกว่าใช้ได้ ขอบคุณ!
isaacg

2

bash + GNU coreutils, 184 ไบต์

[ -z "$1" ] && exit
p='{if(a[$0]++==0)print $0}'
while read A; do
while read B; do
[ $A = $B ] && echo $A
done < <(grep -oP '\d*'<<<$1|awk "$p")
done < <(grep -oP '\d*'<<<$2|awk "$p")

ภาวนา:

./codegolf.sh '12 4 654 12 3 56' '4 4 56 33 3 3 3'

เอาท์พุท:

4
56
3

ไม่มีเอาต์พุตหากจุดตัดว่างเปล่า สคริปต์นี้ไม่ได้จัดเรียงและทำการตรวจสอบสติว่าชุดแรกว่างเปล่า คำอธิบาย:

[ -z "$1" ] && exit  # Exit if first set is empty
p='{if(a[$0]++==0)print $0}' # The AWK program we will use
while read A; do   # read the list with two
while read B; do   # encapsulated loops
[ $A = $B ] && echo $A   # if they match, then print
done < <(grep -oP '\d*'<<<$1|awk "$p")
done < <(grep -oP '\d*'<<<$2|awk "$p")
# the process substitution greps the numbers and pipes them to awk. Our awk program makes them unique without sorting; it uses associative arrays with index names same as lines (our numbers here).

สิ่งที่ควรรู้: คุณสามารถเปลี่ยนเป็นgrep -o .สายสุ่มแทนตัวเลข


2

Perl 6, 26 37 ไบต์

{%(@^a.grep(any(@^b)):p.invert).keys}

การใช้

> my &f = {%(@^a.grep(any(@^b)):p.invert).keys}
-> @a, @b { #`(Block|559823336) ... }
> f([3,1,2,4,3,1,1,1,1,3], [3,1,-1,0,8,3,3,1])
(1 3)

คำตอบที่ไม่ใช่การแข่งขัน Cheeky

> [3,1,2,4,3,1,1,1,1,3]  [3,1,-1,0,8,3,3,1]
set(3, 1)

หรือถ้าคุณชอบมันในfฟังก์ชั่นOL ที่น่าเบื่อ

> my &f = &infix:<∩>
sub infix:<∩> (|p is raw) { #`(Sub+{<anon|130874592>}+{Precedence}|102325600) ... }
> f([3,1,2,4,3,1,1,1,1,3], [3,1,-1,0,8,3,3,1])
set(3, 1)

ฉันได้อัปเดตคำตอบของฉันที่จะไม่ใช้. unique
Hotkeys

1
คุณไม่จำเป็นจริงๆinvertถ้าคุณนำค่ามาแทน 24 bytes
Jo King

2

เรติน่า 63 ไบต์

สองบรรทัดสุดท้ายลบข้อมูลที่ซ้ำกัน อินพุตเป็นรายการที่คั่นด้วยช่องว่างสองรายการคั่นด้วยเครื่องหมายจุลภาค เอาท์พุทเป็นตัวคั่นช่องว่าง

+`( -?\d+)\b(.*,.*)\1\b
$1_$2
-?\d+\b|_|,

+`(-?\d+)(.*)\1
$1$2

ลองออนไลน์

หากอนุญาตให้ซ้ำกันในผลลัพธ์โปรแกรมของฉันจะมีขนาด 42 ไบต์


2

Jq 1.5 , 99 ไบต์

def f(a;b):(a+b|min)as$m|[range($m;a+b|max)|[]]|.[a[]-$m][0]=1|.[b[]-$m][1]=1|.[[[1,1]]]|map(.+$m);

ขยาย

def f(a;b):
     (a+b|min) as $m         # find smallest value in either array
   | [range($m;a+b|max)|[]]  # create array of [] for indices [min,max]
   | .[ a[]-$m ][0]=1        # store 1 in [0] at corresponding indices of a
   | .[ b[]-$m ][1]=1        # store 1 in [1] at corresponding indices of b
   | .[[[1,1]]]              # find all the indices where we stored a 1 for a and b
   | map(.+$m)               # convert back from indices to values
;

วิธีนี้จะหลีกเลี่ยงการใช้{}วัตถุและเนื่องจาก jq ไม่มีการดำเนินการบิตจึงเป็นการจำลองด้วยอาร์เรย์

ลองออนไลน์!


2

ความจริง 411 ไบต์

b(x,v)==(l:=1;h:=#v;repeat(l>h=>break;m:=(l+h)quo 2;x<v.m=>(h:=m-1);x>v.m=>(l:=m+1);return m);0);g(a,b)==(if #a>#b then(v:=a;w:=b)else(v:=b;w:=a);c:=sort(v);for x in w repeat(if binSearch(x,c)~=0 then return 1);0)
f(a:List INT,b:List INT):List INT==(r:List INT:=[];#a*#b=0=>r;x:=sort(a);y:=sort(b);i:=1;repeat(i>#x=>break;v:=x.i;binSearch(v,y)=0=>(i:=i+1);r:=concat(r,v);while i<=#x and x.i=v repeat i:=i+1);r)

ungolf และทดสอบ

--suppose v.1<=v.2<=....<=v.#v as the default function sort() produce
--   binary serch of x in v, return the index i with v.i==x
--   return 0 if that index not exist
--traslated in Axiom from C  book
--Il Linguaggio C, II Edizione 
--Brian W.Kerninghan, Dennis M.Ritchie
binSearch(x,v)==
    l:=1;h:=#v
    repeat
       l>h=>break
       m:=(l+h)quo 2
       x<v.m=>(h:=m-1) 
       x>v.m=>(l:=m+1)
       return m
    0

--N*log(N)+n*log(n)+N*n*log(n) so it is N*n*log(n) or n*N*log(N)
ListIntersection(a:List INT,b:List INT):List INT==
    r:List INT:=[];#a*#b=0=>r
    x:=sort(a);y:=sort(b)
    i:=1
    repeat
        i>#x=>break
        v:=x.i
        binSearch(v,y)=0=>(i:=i+1)
        r:=concat(r,v)
        while i<=#x and x.i=v repeat i:=i+1
    r

(5) -> f([],[])
   (5)  []
                                                       Type: List Integer
(6) -> f([1000],[])
   (6)  []
                                                       Type: List Integer
(7) -> f([3,1,2,4,3,1,1,1,1,3],[3,1,-1,0,8,3,3,1])
   (7)  [1,3]
                                                       Type: List Integer
(8) -> f([1,2,1],[3,3,4])
   (8)  []
                                                       Type: List Integer

2

ความจริง 257 ไบต์

W(x,y)==>while x repeat y;f(a,b)==(r:List INT:=[];#a*#b=0=>r;x:=sort(a);y:=sort(b);i:=1;j:=1;repeat(j>#y=>break;W(i<=#x and x.i<y.j,i:=i+1);i>#x=>break;W(j<=#y and y.j<x.i,j:=j+1);j>#y=>break;v:=y.j;if x.i=v then(r:=concat(r,v);W(j<=#y and y.j=v,j:=j+1)));r)

สิ่งนี้โดยไม่ใช้ binsearch ... แต่ฉันไม่รู้จักโอใหญ่ ... ไม่ติดและผลลัพธ์:

--N*log(N)+n*log(n)+???
ListIntersection(a:List INT,b:List INT):List INT==
    r:List INT:=[];#a*#b=0=>r
    x:=sort(a);y:=sort(b)
    i:=1;j:=1
    repeat
        j>#y=>break
        while i<=#x and x.i<y.j repeat i:=i+1
        i>#x=>break
        while j<=#y and y.j<x.i repeat j:=j+1
        j>#y=>break
        v:=y.j;if x.i=v then 
                        r:=concat(r,v)
                        while j<=#y and y.j=v repeat j:=j+1
    r

(3) -> f([3,1,2,4,3,1,1,1,1,3],[3,1,-1,0,8,3,3,1])
   (3)  [1,3]
                                                       Type: List Integer
(4) -> f([],[])
   (4)  []
                                                       Type: List Integer
(5) -> f([1,2,1],[3,3,4])
   (5)  []
                                                       Type: List Integer

ไม่ได้ทำการทดสอบจำนวนมากดังนั้นจึงสามารถบั๊กได้ ...


2

เยลลี่ 12 ไบต์

pEÐfḢ€ĠḢ€$ị$

ลองออนไลน์!


ใน Tio 3,1,2,4,3,1,1,1,1,3 input และ 3 input คืนค่าเอาต์พุต [1,2,3] แทน [3]
RosLuP

@RosLuP ลองใช้[3]แทน3
HyperNeutrino

มันจะโอเคในความคิดของฉันถ้าผลลัพธ์ของการแยกของ 2 รายการส่งคืน (เป็นกรณีอื่น ๆ ) [] ถ้าผลลัพธ์ถูกตั้งเป็นโมฆะ [1] ถ้า 2 รายการมี 1 เหมือนกัน
RosLuP

@RosLuP ฉันอดไม่ได้นั่นเป็นวิธีที่ Jelly ทำเอาท์พุต ว่างเปล่า[]และองค์ประกอบสำหรับรายการเดี่ยว คุณสามารถไปที่หน้า wiki (อะตอม) และผนวก Python Stringify builtin แต่นั่นทำให้คำตอบของฉันยาวขึ้นและ I / O ที่เข้มงวดนั้นเป็นใบ้
HyperNeutrino

มันจะโอเคสำหรับฉันถ้ายอมรับเฉพาะอินพุตรายการใน [] ทาง (ตัวอย่าง [1], [1,2,3] [], [], [] ฯลฯ ) และส่งออกรายการผลลัพธ์ในรายการ [] เท่านั้น (เป็นอินพุต) หากวงเล็บสำหรับรายการคือ {} หรือ () ทำซ้ำคำพูดด้านบนสำหรับคำพูดที่ถูกต้อง นี่เป็นเพียงสิ่งที่ฉันคิดว่าอาจเป็นไปได้ว่าคำถามจะเป็นอย่างอื่นและทั้งหมดก็โอเค
RosLuP

2

Husk , 9 ไบต์

mo←←kIfE*

ลองออนไลน์!

m            Map
 o←←         taking the first element from the first element
    kI       over lists of identical values from
        *    the Cartesian product of the two input lists
      f      filtered by
       E     both elements of a pair being equal.

ดูในซอร์สโค้ดของ Husk บน GitHub, k("keyon") ถูกนำมาใช้เป็นองค์ประกอบของการเรียงลำดับรายการและการจัดกลุ่มค่าที่อยู่ติดกันดังนั้นแม้ว่าฉันจะไม่พบการใช้งานของ "groupOn" จริง ๆ มันอาจจะปลอดภัย ไม่ทำอะไรที่น่าเบื่อเนื่องจาก Haskell เป็นภาษาที่ใช้งานได้และการจัดกลุ่มค่าที่อยู่ติดกันคือการดำเนินการลดรายการที่เชื่อมโยงอย่างตรงไปตรงมา (ฉันสามารถค้นหาการใช้งานkลายเซ็นประเภทอื่น ๆ "keyby" ซึ่งฉันสามารถใช้ที่นี่โดยเปลี่ยนIเป็น=แต่ฉันไม่รู้จัก Haskell ดังนั้นฉันไม่สามารถบอกได้ว่ามันทำงานอย่างไร)

นอกจากนี้ยังมีคำตอบ Brachylog เล็ก ๆ น้อย ๆ ที่ฉันได้รับก่อนที่ฉันจะรู้ว่าการดำเนินการทุกประเภทไม่ได้รับอนุญาต: ⟨∋∈⟩ᵘ


2

R, 141 83 ไบต์

l=sapply(strsplit(readLines(file("stdin"))," "),as.numeric)
r=rle(sort(unlist(l)))[[2]]
r[sapply(r,function(x)any(x==l[[1]])&any(x==l[[2]]))]

ปรับปรุงโดยGiuseppe

function(a,b){r=rle(sort(c(a,b)))[[2]];r[sapply(r,function(x)any(x==a)&any(x==b))]}

ลองออนไลน์ ที่นี่ ที่นี่


ดูเหมือนจะใช้งานไม่ได้ ฉันอาจจะพยายามใช้มันผิด แต่บางทีคุณอาจจะต้องส่งลิงค์ไปยังTry It Online! แสดงวิธีใช้มันและแสดงให้เห็นว่ามันตอบสนองความต้องการของความท้าทาย (คำอธิบายเกี่ยวกับคำตอบจะไม่เจ็บเช่นกัน)
สตริงที่ไม่เกี่ยวข้อง

คุณไม่สามารถรับอินพุตaและbกำหนดไว้ล่วงหน้าได้คุณต้องยอมรับอินพุตโดยใช้เป็นอาร์กิวเมนต์ของฟังก์ชันหรือจาก STDIN
Giuseppe

1
ฉันคิดว่านักกอล์ฟจะต้องทำฟังก์ชั่นแบบนี้
Giuseppe

1
@db "ส่วนหัว" ตั้งชื่อฟังก์ชั่นที่ไม่ระบุชื่อที่กำหนดไว้ในส่วน "รหัส" (ฟังก์ชั่นที่ไม่ระบุชื่อเป็นที่ยอมรับอย่างสมบูรณ์) และส่วนท้ายนั้นเรียกมันว่า ส่วน Header, Code และ Footer เป็นส่วนหนึ่งของรหัสทั้งหมด แต่เฉพาะส่วนในส่วน "code" เท่านั้นที่นับเป็น bytes :-)
Giuseppe

1

Python3, 51 ไบต์

lambda a,b:[v for v in a if{n:1 for n in b}.get(v)]

หากรายการอินพุตสามารถมีรายการซ้ำได้:

Python3, 67 ไบต์

lambda a,b:list({v:1 for v in a if {n:1 for n in b}.get(v)}.keys())

1

PHP ,78, 77 ไบต์

function($a,$b){foreach($a as$x)foreach($b as$y)$x==$y?$c[$x]=$x:0;return$c;}

ลองออนไลน์!

ไม่มีความหรูหรา แต่เป็นไปตามกฎ (ฉันคิดว่า)

เอาท์พุต

[], []
[]

[1000], []
[]

[3,1,2,4,3,1,1,1,1,3], [3,1,-1,0,8,3,3,1]
[3,1]

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