มีการเกิดตัวเลขในแถว / คอลัมน์ในเมทริกซ์ N ครั้งติดต่อกันหรือไม่?


20

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

คุณต้องการทดสอบแนวนอนและแนวตั้งเท่านั้น

กรณีทดสอบ

N = 1
A = 
1
Result: True
----------------
N = 3
A = 
1 1 1
2 2 3
Result: True
----------------
N = 4
A = 
1 1 1
2 2 3
Result: False
----------------
N = 3
A = 
3 2 3 4 2 1
4 1 4 2 4 2
4 2 3 3 4 1
1 1 2 2 3 4
3 2 3 1 3 1
1 1 2 2 3 4
Result: True
----------------
N = 1
A = 
5 2 3 8
Result: True
----------------
N = 3
111   23  12    6
111   53   2    5
112  555   5  222
Result: False
----------------
N = 2
 4  2  6  2  1  5
 2  3  3  3  3  3
11 34  4  2  9  7
Result: True

คำอธิบายเป็นสิ่งที่ดีเสมอ :)


5
คุณดูเหมือนจะรักเมทริกซ์
Okx

4
ฉันเป็นคน MATLAB ... Mat rix Lab oratory =)
Stewie Griffin

มันเพียงพอที่จะคืนค่าความจริง / เท็จ?
Dennis

@Dennis แน่นอน :)
Stewie Griffin

5
น่ารำคาญเพราะคุณเป็นคนที่ Matlab คุณจึงสร้างความท้าทายที่ดูเหมือนง่ายใน MATLAB แต่มีข้อผิดพลาดเล็กน้อยที่แยกออกจากการแก้ปัญหาที่ชัดเจน ...
Sanchises

คำตอบ:


7

Husk , 9 ไบต์

≤▲mLṁgS+T

รับอาร์เรย์ 2D และตัวเลขส่งคืน0สำหรับอินสแตนซ์ที่เป็นเท็จและจำนวนบวกสำหรับอินสแตนซ์จริง ลองออนไลน์!

คำอธิบาย

Husk เป็นภาษาที่ใช้งานได้ดังนั้นโปรแกรมจึงเป็นเพียงองค์ประกอบของหลายฟังก์ชั่น

≤▲mLṁgS+T
        T  Transpose the array
      S+   and concatenate with original.
           We get a list of the rows and columns of the input array.
    ṁ      Map and concatenate
     g     grouping of equal consecutive elements.
           This gives all consecutive runs on rows and columns.
  mL       Map length over the runs,
 ▲         take the maximum of the results
≤          and see if it's at least the second input.

5

Dyalog APL, 27 25 23 ไบต์

{1∊∊⍷∘⍵¨(⊢,⍪¨)⍺/¨⍳⌈/∊⍵}

ลองออนไลน์!

ขอขอบคุณ @MartinEnder และ @Zgarb สำหรับแต่ละ -2 ไบต์ (องค์ประกอบช่วยให้ไม่จำเป็นต้องใช้wและ parens แบบไม่มีจุดหมาย)

แจ้งเตือนฉันหากมีปัญหาใด ๆ และ / หรือไบต์กอล์ฟ อาร์กิวเมนต์ซ้ายคือไม่มีข้อโต้แย้งที่ถูกต้องคือ

คำอธิบาย:

{1∊∊⍷∘⍵¨(⊢,⍪¨)⍺/¨⍳⌈/∊⍵}
                     ⍵    - Right argument
                    ∊     - Flatten the array
                 ⍳⌈/      - 1 ... the maximum (inclusive)
              ⍺/¨         - Repeat each item ⍺ (left argument) times.
        (⊢,⍪¨)            - Argument concatenated with their transposes.
    ⍷∘⍵¨                  - Do the patterns occur in ⍵?
   ∊                      - Flatten (since we have a vector of arrays)
 1∊                       - Is 1 a member?
{                     }   - Function brackets

4

Perl 6 , 60 bytes

{(@^m|[Z,] @^m).map(*.rotor($^n=>$^n-1).map({[==] $_}).any)}

ลองออนไลน์!

  • @^mคืออินพุตเมทริกซ์ (อาร์กิวเมนต์แรก) และ$^nเป็นจำนวนครั้งที่เกิดขึ้นติดต่อกันเพื่อตรวจสอบ (อาร์กิวเมนต์ที่สอง)
  • [Z,] @^m เป็นทรานสโพสของอินพุตเมทริกซ์
  • (@^m | [Z,] @^m)เป็นจุดเชื่อมต่อของเมทริกซ์อินพุตและทรานสโพส ข้อมูลต่อไปนี้mapประเมินเป็นค่าจริงหาก$^nค่าที่เท่ากันติดต่อกันเกิดขึ้นในแถวใด ๆ ของผู้เรียก นำไปใช้กับอินพุตเมทริกซ์หรือทรานสโพสมันประเมินค่าตามความจริงหากเมทริกซ์อินพุทหรือทรานสโพสนั้นมี$^nค่าเท่ากันติดต่อกันในแถวใด ๆ หากทรานสโพสตรงกับเงื่อนไขนั้นนั่นหมายความว่าเมทริกซ์อินพุตมี$^nค่าเท่ากันติดต่อกันในหนึ่งในคอลัมน์
  • *.rotor($^n => $^n - 1)เปลี่ยนแต่ละแถวเป็นลำดับของ$^nชิ้นส่วนย่อย ตัวอย่างเช่นถ้า$^nเป็น 3 แถวเป็นประเมินนี้<1 2 2 2 3>(<1 2 2>, <2 2 2>, <2 2 3>)
  • .map({ [==] $_ })เปลี่ยนแต่ละชิ้นเป็นบูลีนที่ระบุว่าองค์ประกอบทั้งหมดของชิ้นเท่ากัน (False, True, False)อย่างต่อเนื่องตัวอย่างก่อนหน้านี้จะกลายเป็น
  • .any เปลี่ยนลำดับของบูลีนนั้นให้กลายเป็นชุมทางหรือซึ่งเป็นความจริงหากบูลีนใด ๆ เป็นจริง

เอาท์พุทเป็นค่าความจริงหรือทางแยกซึ่งเป็นจริงถ้าทั้งเมทริกซ์อินพุทหรือการแปลงมีแถวใด ๆ ที่$^nค่าติดต่อกันจะเท่ากัน


4

MATLขนาด 12 ไบต์

t!YdY'wg)>~a

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

คำอธิบาย

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

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

ผลลัพธ์จากการเข้ารหัสแบบ run-length คืออาร์เรย์ของค่าและอาร์เรย์ของ run-length ความยาววิ่งที่สอดคล้องกับค่าที่ไม่เป็นศูนย์จะถูกเก็บไว้ เอาท์พุทคือ1ถ้าบางส่วนของความยาวเหล่านั้นมากกว่าหรือเท่ากับจำนวนอินพุตและ0อื่น ๆ

เรามาดูผลลัพธ์ระดับกลางเพื่อให้ชัดเจนขึ้น พิจารณาอินพุต

[10 10 10;
 20 20 30]

และ

3

บล็อกขวางเมทริกซ์ที่มีเมทริกซ์อินพุตและการแปลง (รหัสt!Yd) คือ:

10 10 10  0  0
20 20 30  0  0
 0  0  0 10 20
 0  0  0 10 20
 0  0  0 10 30

เมทริกซ์นี้จะถูกทำให้เป็นเส้นตรงโดยนัยในลำดับของคอลัมน์ (ลงจากนั้นข้าม):

10 20  0  0  0 10 20  0  0  0 10 30  0  0  0  0  0 10 10 10  0  0 20 20 30

การเข้ารหัสความยาวในการรัน (รหัสY') ให้สองเวกเตอร์ต่อไปนี้ (แสดงที่นี่เป็นเวกเตอร์แถวจริง ๆ แล้วพวกมันคือเวกเตอร์คอลัมน์): vector ที่มีค่า

10 20  0 10 20  0 10 30  0 10  0 20 30

และเวกเตอร์ที่มีความยาววิ่ง

1 1 3 1 1 3 1 1 5 3 2 2 1

การรักษาความยาวเท่านั้นที่สัมพันธ์กับค่าที่ไม่เป็นศูนย์ (รหัสwg)) ให้

1 1 1 1 1 1 3 2 1

การเปรียบเทียบเพื่อดูว่ามีความยาวมากกว่าหรือเท่ากับจำนวนอินพุต (รหัส>~) ก่อให้เกิดเวกเตอร์

0 0 0 0 0 0 1 0 0

ในที่สุดผลลัพธ์ควรเป็นtrue(แสดงเป็น1) ถ้าเวกเตอร์ด้านบนมีอย่างน้อยหนึ่งtrueรายการ (รหัสa) ในกรณีนี้ผลลัพธ์คือ

1

4

อ็อกเทฟ77 77ไบต์

@(A,N)any(([x y]=runlength([(p=padarray(A,[1 1]))(:);p'(:)]))(!!y)>=N)

ลองออนไลน์!

คำอธิบาย: เนื่องจาก tha matrix มีจำนวนเต็มไม่เป็นศูนย์เท่านั้นเราสามารถเพิ่มเส้นขอบ 0 รอบ ๆ เมทริกซ์และคำนวณการเข้ารหัส runlength ของเมทริกซ์ (เปลี่ยนเป็นเวกเตอร์)

@(A,N)any(([x y]=runlength([(p=padarray(A,[1 1]))(:);p'(:)]))(!!y)>=N)
                             p=padarray(A,[1 1])                        % add a border of 0s around the matrix 
                            (                   )(:)                    % reshape the matrix to a column vector
                                                     p'(:)              % transpose of the matrix reshaped to a column vector
                           [                        ;     ]             % concatenate two vectors vertically
           [x y]=runlength(                                )            % runlength encoding of the vector[x=count,y=value]
          (                                                 )           % take x,counts.
                                                             (!!y)      % extrect those counts that their valuse aren't 0
      any(                                                        >=N)  % if we have at least a count that is greater than or equal to N                                                              

3
ฉันชอบโซลูชันของคุณ (ไม่เพียงแค่นี้) แต่พวกเขาจะได้ประโยชน์จากคำอธิบายบางอย่างแน่นอน! :) ฉันไม่รู้ว่า Octave มีrunlength... เรียนรู้สิ่งใหม่ทุกวัน ...
Stewie Griffin

ขอบคุณที่เตือนฉันเกี่ยวกับrunlength! การจดจ่อกับ Matlab มากขึ้นฉันจำไม่ได้ว่ามีอยู่ใน Octave
Luis Mendo

@StewieGriffin ขอบคุณคำตอบอัพเดทหลังจากตื่นขึ้นมา!
rahnema1

@LuisMendo runlengthหลังจากการโพสต์ของคุณผมเริ่มตระหนักถึงฟังก์ชั่นที่มีชื่อว่า
rahnema1

4

เยลลี่ , 9 8 ไบต์

;ZjṡƓE€S

รับเมทริกซ์เป็นอาร์กิวเมนต์และอ่านจำนวนเต็มจาก STDIN

ลองออนไลน์!

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

;ZjṡƓE€S  Main link. Argument: M (matrix / row array)

 Z        Zip/transpose M.
;         Concatenate the row array with the column array.
  j       Join the rows and columns, separating by M.
    Ɠ     Read an integer n from STDIN.
   ṡ      Split the result to the left into overlapping slices of length 2.
     E€   Test the members of each resulting array for equality.
       S  Take the sum.

ตัวอย่างการวิ่ง

;ZjṡƓE€S  Argument: [[1, 2], [3, 2]]. STDIN: 2

 Z        [[1, 3], [2, 2]]

;         [[1, 2], [3, 2], [1, 3], [2, 2]]

  j       [1, 2, [1, 2], [3, 2], 3, 2, [1, 2], [3, 2], 1, 3, [1, 2], [3, 2], 2, 2]

    Ɠ     2

   ṡ      [[1, 2],             [2, [1, 2]],        [[1, 2], [3, 2]],   [[3, 2], 3],
           [3, 2],             [2, [1, 2]],        [[1, 2], [3, 2]],   [[3, 2], 1],
           [1, 3],             [3, [1, 2]],        [[1, 2], [3, 2]],   [[3, 2], 2],
           [2, 2]                                                                 ]

     E€   [     0,                       0,                       0,             0,
                0,                       0,                       0,             0,
                0,                       0,                       0,             0,
                1                                                                 ]

       S  1

ฉันมีความคิดเดียวกันกับ;Zใน Japt มากกว่า Jelly ...
ETHproductions

ตอนนี้ผมเห็นว่าทำไมคุณถามเกี่ยวกับค่า truthy / falsy นิยามใน Jelly นั้นได้รับแรงบันดาลใจจาก MATLAB (หรือ MATL) ใช่ไหม?
Stewie Griffin

ไม่เจลลี่ใช้เงื่อนไขของไพ ธ อนภายใน Ȧอะตอมได้รับแรงบันดาลใจจาก MATL แม้ว่า
Dennis

โอ้ใช่แล้วฉันยาวเกินไป> <ใช่Eตัวบิวอินคือวิธีที่จะทำ Nice :)
HyperNeutrino

3

Python 2 , 60 92 91 ไบต์

def f(n,x):x=[map(str,i)for i in x];print any(`[i]*n`[1:-1]in`x+zip(*x)`for i in sum(x,[]))

ลองออนไลน์!

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

ไม่มีสตริง 94 ไบต์

lambda n,x:any((e,)*n==l[i:i+n]for l in x+zip(*x)for i in range(len(l)-n+1)for e in sum(x,()))

ลองออนไลน์!


ฉันคิดว่าสิ่งนี้สามารถให้ผลบวกเท็จกับตัวเลขหลายหลัก
xnor

@ xnor ที่นั่นแก้ไขแล้ว
ร็อด

3

อ็อกเทฟ 59 ไบต์

@(A,N)any({[l,v]=runlength(blkdiag(A,A')(:)),l(v>=0)}{2}>=N)

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

วิธีนี้ใช้วิธีเดียวกันกับคำตอบ MATLของฉัน(ดูคำอธิบายที่นั่น)


1
blkdiag(A,A'). ดีมาก!
rahnema1

3

Japté , 18 15 14 ไบต์

cUy)d_ò¦ d_ʨV

ทดสอบมัน

  • บันทึก 3 ไบต์ด้วยความช่วยเหลือจาก ETHproductions

คำอธิบาย

    :Implicit input of 2D array U and integer V
c   :Append to U...
Uy  :U transposed.
d   :Check if any of the elements (sub-arrays) in U return true when...
_   :Passed through a function that...
ò   :Partitions the current element by...
¦   :Checking for inequality.
d   :Check if any of the partitions return true when...
_   :Passed through a function that checks if...
Ê   :The length of the current element...
¨V  :Is greater than or equal to V.
    :Implicit output of resulting boolean.

1
โอ้ว้าวฉันไม่เห็นสิ่งนี้ก่อนโพสต์ของฉัน คุณสามารถบันทึก 2 ไบต์ด้วยcUy)®ò¦ d_l ¨V\ndและอีกหนึ่งด้วยcUy)d_ò¦ d_l ¨Vแล้วคุณมีโซลูชัน (ลบ) ของฉันจริง
ETHproductions

ฮ่า; จิตใจที่ดี ... , @ETHproductions :) ฉันตกใจฉันเป็นนิ้วที่เร็วที่สุดหลังจาก obarakon ตีฉันทั้งวันในวันนี้! ขอบคุณสำหรับเคล็ดลับเหล่านั้นที่ได้พบหนึ่งแล้ว แต่ยังไม่ได้อื่น ๆ
Shaggy

2

CJam , 16 ไบต์

q~_z+N*e`:e>0=>!

ลองออนไลน์!

คำอธิบาย

q~    e# Read and eval input.
_z+   e# Append the matrix's transpose to itself.
N*    e# Join with linefeeds to flatten without causing runs across rows.
e`    e# Run-length encode.
:e>   e# Get maximum run (primarily sorted by length).
0=    e# Get its length.
>!    e# Check that it's not greater than the required maximum.

ฉันสงสัยอยู่เสมอว่าทำไม RAM ของ CJam จึงให้ความยาวในการวิ่ง มันจะมีประโยชน์ที่นี่ :-)
ลูอิสเมนโด

@ LuisMendo ฉันเดาเพราะนั่นคือวิธีที่คุณจะพูดว่า "3 a's, 5 b's, 2 c's" ที่จริงฉันพบคำสั่งนี้มีประโยชน์ค่อนข้างบ่อย
Martin Ender

ที่จริงแล้วrunlengthฟังก์ชั่นของ Octave จะให้ผลลัพธ์ในลำดับนั้นด้วย แต่อย่างใดฉันก็รู้สึกว่าเป็นระเบียบvalue, lengthมากขึ้น
หลุยส์เมนโด

2

Python 3 , 129 128 125 120 104 101 ไบต์

ขอขอบคุณ @Zachary T, @Stewie Griffin, @Mr Xcoder, @Rod, @totallyhuman สำหรับการปรับปรุงครั้งนี้เป็นอย่างมาก

def f(n,m):
 a=b=c=0;m+=zip(*m)
 for r in m:
  for i in r:b,a=[1,b+1][a==i],i;c=max(c,b)
 return n<=c

ลองออนไลน์!


คุณไม่จำเป็นต้องช่องว่างระหว่างและ1 if
Zacharý

บันทึกสี่ไบต์ด้วยการแทนที่a=b;b=0;c=0ด้วยa=b=c=0
Mr. Xcoder

(ฉันไม่แน่ใจ) แต่ฉันคิดว่าคุณสามารถใช้m+zip(*m)แทนmในบรรทัดที่ 4 และปล่อยให้บรรทัดที่ 1 ทั้งหมดย้ายn<=max()ไปที่บรรทัดสุดท้ายเป็นn<=c
27417 ร็อด


แทนที่จะb=b+1ใช้b+=1... Ahh, Ninja'd โดย @StewieGriffin
Mr. Xcoder

2

05AB1E , 16 14 12 ไบต์

Døìvyγ€gM²‹_

ลองออนไลน์!

Dø           # Duplicate the input and transpose one copy
  ì          # Combine the rows of both matrixes into one array
   vy        #   For each row...
     γ       #     Break into chunks of the same element
      €g     #     get the length of each chunk
        M    #     Get the largest length so far
         ²‹_ #     Check if that is equal to or longer than required

1
@MagicOctopusUrn ฉันไม่แน่ใจว่าคุณหมายถึงอะไร ตัวอย่างนั้นมี 3 ครั้งติดต่อกัน0 sในแถวที่สองดังนั้นควรเป็นจริง
Riley

@MagicOctopusUrn หากคุณเลิกใช้งาน(TIO)มันจะส่งคืนค่าเท็จ
Riley

คำสั่งที่สามไม่ต่อแถว transposed กับแถวเดิมหรือไม่
Magic Octopus Urn

นอกจากนี้ฉันคิดว่ามันควรจะกลับมาจริงสำหรับ 3 เมื่อมี [3,3,3]เมื่อมี ฉันเข้าใจผิดในกรณีนี้ดังนั้นฉันคิดว่าฉันผิดที่นี่
Magic Octopus Urn

@MagicOctopusUrn คำสั่ง 3 คำสั่งแรกจะสร้างอาร์เรย์ที่มีแต่ละแถวและแต่ละคอลัมน์เป็นองค์ประกอบแต่ละรายการ
Riley

1

เยลลี่ขนาด 18 ไบต์

ŒrFUm2<⁴$ÐḟL
ZÇo³Ç

ลองออนไลน์!

ŒrFUm2<⁴$ÐḟL  Helper Link
Œr            Run-length encode
  F           Flatten the whole thing, giving the numbers in the odd indices and the lengths of the runs in the even indices
   U          Reverse
    m2        Take every other element (thus only keeping the run lengths)
         Ðḟ   Discard the elements that are
      <⁴$                                   less than the required run length
           L  And find the length
ZÇo³Ç         Main Link
Z             Zip the matrix
 Ç            Call the helper link on it
   ³Ç         Call the helper link on the original matrix
  o           Are either of these truthy?

ผลตอบแทน 0ค่า false และจำนวนเต็มไม่ใช่ศูนย์สำหรับความจริง

ใช่นี่เป็นสิ่งที่ไม่ดี และยาวมาก ๆ เคล็ดลับการเล่นกอล์ฟจะได้รับการชื่นชม :)


1

JavaScript (ES6), 99 ไบต์

รับเมทริกซ์mและจำนวนที่คาดว่าจะเกิดขึ้นnในรูปแบบ currying(m)(n)ในไวยากรณ์ส่งคืนบูลีน

m=>n=>[',',`(.\\d+?){${m[0].length-1}}.`].some(s=>m.join`|`.match(`(\\b\\d+)(${s}\\1){${n-1}}\\b`))

อย่างไร?

รหัสนี้ไม่สั้นโดยเฉพาะ แต่ฉันต้องการลองวิธีการโดยยึดตามการแสดงออกปกติ

การแปลงเมทริกซ์เป็นสตริง

เราใช้ m.join('|')ในการแปลงอาร์เรย์ 2D เป็นสตริง สิ่งนี้ทำให้เกิดการข่มขู่โดยนัยของแถวเมทริกซ์กับสตริงที่คั่นด้วยเครื่องหมายจุลภาค

ตัวอย่างเช่นอินพุตนี้:

[
  [ 1, 2, 3 ],
  [ 4, 5, 6 ]
]

จะถูกเปลี่ยนเป็น:

"1,2,3|4,5,6"

การจับคู่แถว

เรามองหาสิ่งที่เกิดขึ้นติดต่อกันเป็นแถวด้วย:

/(\b\d+)(,\1){n-1}\b/

นี่คือการจับคู่:

  • \b ขอบเขตของคำ
  • \d+ ตามด้วยตัวเลข
  • (){n-1}ได้ติดตามn-1ครั้งโดย:
    • , เครื่องหมายจุลภาค
    • \1 ตามด้วยการอ้างอิงของเรา: ขอบเขตคำ + หมายเลขแรก
  • \b ตามด้วยขอบเขตของคำ

การจับคู่คอลัมน์

เรามองหาเหตุการณ์ที่เกิดขึ้นติดต่อกันในคอลัมน์ด้วย:

/(\b\d+)((.\d+?){L-1}.\1){n-1}\b/

ที่Lมีความยาวของแถว

นี่คือการจับคู่:

  • \b ขอบเขตของคำ
  • \d+ ตามด้วยตัวเลข
  • (){n-1}ได้ติดตามn-1ครั้งโดย:
    • (){L-1} L-1ครั้ง:
      • . ตัวละครใด ๆ (ผล: เครื่องหมายจุลภาคหรือท่อ)
      • \d+? ตามด้วยหมายเลข (อันนี้จะต้องไม่โลภ)
    • . ตามด้วยอักขระใด ๆ (อีกครั้ง: เครื่องหมายจุลภาคหรือไพพ์)
    • \1 ตามด้วยการอ้างอิงของเรา: ขอบเขตคำ + หมายเลขแรก
  • \b ตามด้วยขอบเขตของคำ

กรณีทดสอบ



0

Clojure, 77 ไบต์

#((set(for[I[%(apply map vector %)]i I p(partition %2 1 i)](count(set p))))1)

สร้างพาร์ติชันต่อเนื่องทั้งหมดpของความยาวN(สัญลักษณ์%2) และนับจำนวนค่าที่แตกต่างกัน จากนั้นจะสร้างชุดของความยาวเหล่านี้และส่งคืน1หากพบจากชุดและnilอื่น ๆ forสร้างเป็นแบบที่สมบูรณ์แบบสำหรับการนี้พยายามที่เดิมของฉันใช้flatten, concatหรือสิ่งที่สั้น ๆ ที่

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