ฉันจะสต็อกถังอีกครั้งได้ไหม?


30

เด็กน้อยของฉันมีของเล่นแบบนี้:

ซ้อนกัน

ของเล่นนี้ประกอบด้วย 10 ถังเล็กวางซ้อนกันได้ซึ่งเราจะนับจาก 1 (เล็กที่สุด) ถึง 10 (ใหญ่ที่สุด) บางครั้งเขาทำกองเล็ก ๆ และของเล่นจบลงเช่นนี้

มีฝนฟ้าคะนองกระจาย

เราสามารถเป็นตัวแทนแผนผังกองเช่นนี้:

      1  6
4  9  2  7
5  10 3  8
----------  <-- Floor
1  2  3  4  <-- Pile #

หรือใช้วิธีอื่น:

[[4,5],[9,10],[1,2,3],[6,7,8]]

ชุดของกองถังนี้สามารถบรรจุใหม่ได้อย่างง่ายดายเพื่อสร้างชุดเดิม (ภาพแรก) เพียงแค่วางกองเล็ก ๆ ของถังขนาดเล็กไว้ในกองที่ใหญ่กว่า:

                             1                            1  6
                             2                            2  7
      1  6                   3        6                   3  8
4  9  2  7                   4  9     7                   4  9
5  10 3  8                   5  10    8                   5  10
---------- > [Pile 3 to 1] > ---------- > [Pile 4 to 2] > ---------- > [Pile 1 to 2] > Done!
1  2  3  4                   1  2  3  4                   1  2  3  4

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

[[1,3,2],[4]] (the kid tried to build a tower by placing a bigger bucket
               over a smaller one, we would need to reorder the buckets
               first)
[[1,3,4],[2]] (the kid left aside an unordered bucket, we would need to remove
               bucket #1 from pile #1 before restacking)
[[1,2,3],[5]] (the kid lost a bucket, we need to find it first)

ท้าทาย

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

  • อินพุตจะได้รับเป็นรายการของจำนวนเต็มซึ่งเป็นตัวแทนของถังจากบนลงล่างสำหรับแต่ละสแต็ก
  • จะไม่มีกองเริ่มต้นว่างเปล่า (คุณจะไม่ได้รับ[[1,2,3],[],[4,5]]เป็นอินพุต)
  • จำนวนถังทั้งหมดสามารถอยู่ในช่วงจำนวนเต็มที่เหมาะสม
  • ลูกของฉันมีที่เก็บหนึ่งชุดเท่านั้นดังนั้นจะไม่มีองค์ประกอบที่ซ้ำกัน
  • คุณสามารถเลือกสองค่าที่สอดคล้องกัน (และเชื่อมโยงกัน) สำหรับความจริงหรือเท็จ
  • ที่เก็บข้อมูลจะมีป้ายกำกับจาก # 1 ถึง #N เป็นNจำนวนเต็มมากที่สุดในรายการจำนวนเต็ม ลูกของฉันยังไม่รู้แนวคิดของศูนย์
  • คุณอาจได้รับการป้อนข้อมูลในรูปแบบที่เหมาะสมตราบเท่าที่มันแสดงถึงชุดของกองถัง เพียงระบุไว้ในคำตอบหากคุณเปลี่ยนวิธีรับข้อมูล
  • นี่คือดังนั้นโปรแกรม / ฟังก์ชั่นที่สั้นที่สุดสำหรับแต่ละภาษาจะชนะ!

ตัวอย่าง

Input:  [[4,5],[9,10],[1,2,3],[6,7,8]]
Output: Truthy

Input:  [[6,7,8,9,10],[1],[2],[3,4,5],[11,12,13]]
Output: Truthy

Input:  [[2,3,4],[1],[5,6,7]]
Output: Truthy

Input:  [[1,2],[5,6],[7,8,9]]
Output: Falsey (buckets #3 and #4 are missing)

Input:  [[2,3,4],[5,6,7]]
Output: Falsey (bucket #1 is missing)

Input:  [[1,3,4],[5,7],[2,6]]
Output: Falsey (non-restackable piles)

Input:  [[1,4,3],[2],[5,6]]
Output: Falsey (one of the piles is a tower)

นี้มาจากกล่องเครื่องมือ
ชาร์ลี

2
@ Mr.Xcoder ไม่จะไม่มีองค์ประกอบที่ซ้ำกัน (ลูกของฉันมีที่เก็บหนึ่งชุดเท่านั้นและพวกมันต่างกันทั้งหมด
ชาร์ลี

1
เราขอสมมติว่า bucket 1 ไม่เคยหายไปได้ไหม
PurkkaKoodari

2
@ Pietu1998 bucket # 1 อาจหายไปฉันเพิ่งเพิ่มกรณีทดสอบ (อันที่จริงแล้ว bucket ขนาดเล็กที่สุดนั้นง่ายที่สุดในการแพ้)
Charlie

1
ความท้าทายต่างๆของ Tower of Hanoiเกี่ยวข้องกัน (ไม่ใช่รายการที่ซ้ำกัน) ของสิ่งนี้
AdmBorkBork

คำตอบ:


12

เยลลี่ , 6 5 ไบต์

ขอบคุณ @Lynn ที่ช่วยประหยัด 1 ไบต์

ṢFµJ⁼

ลองออนไลน์! (มาพร้อมกับส่วนท้ายของชุดทดสอบ)

คำอธิบาย

ṢFµJ⁼    Main link. Argument: piles
Ṣ          Sort the piles by the size of the top bucket.
 F         Stack the piles, putting the left one to the top.
   J       See what a full pile with this many buckets would look like.
    ⁼      See if that looks like the pile you built.

ฉันคิดว่าṢFµJ⁼ใช้ได้ผล แต่ฉันไม่ได้คิดเกี่ยวกับคดีขอบทั้งหมด
ลินน์

@Lynn ใช้งานได้สมมติว่าที่ฝากข้อมูล1จะไม่หายไป ฉันไม่แน่ใจว่า OP นี้รับรองโดย OP หรือไม่
PurkkaKoodari

@Lynn bucket # 1 สามารถหายไปได้ใช่ ฉันเพิ่งเพิ่มกรณีทดสอบใหม่
Charlie

หากมีที่ฝากข้อมูลหายไปรายการที่เรียงลำดับจะมีตัวเลขที่ใหญ่กว่าที่Jสามารถส่งคืนได้เสมอซึ่งจะรับประกันว่าเอาต์พุตที่ผิด ฉันพลาดอะไรไปรึเปล่า?
Lynn

ฉันคิดว่าคุณยังสามารถใช้รุ่น 5 ไบต์กับที่ฝากข้อมูล # 1 ขาดหายไปได้
Erik the Outgolfer

8

Python 2 , 53 52 ไบต์

ขอบคุณสำหรับ byte xnor

lambda x:sum(sorted(x),[0])==range(len(sum(x,[]))+1)

ลองออนไลน์!


[]ฉันชอบที่เริ่มต้นรวมที่ ค่อนข้างยุ่งยาก
bioweasel

2
คุณสามารถบันทึกไบต์โดยเริ่มต้นที่ผลรวมเพื่อให้ช่วงสามารถเริ่มต้นจาก[0] 0
xnor

5

JavaScript (ES6) 59 58 ไบต์

a=>!(a.sort((a,[b])=>a[i=0]-b)+'').split`,`.some(v=>v-++i)

คำอธิบาย

a=>                                                        // given a 2D-array 'a'
     a.sort((a,[b])=>a[i=0]-b)                             // sort by first item
                              +''                          // flatten
    (                            ).split`,`                // split again
                                           .some(v=>v-++i) // i such that a[i] != i+1?
   !                                                       // true if none was found

กรณีทดสอบ




5

Haskell , 37 ไบต์

import Data.List
(<[1..]).concat.sort

ลองออนไลน์!

ตรวจสอบว่ารายการที่เรียงต่อแบบเรียงต่อกันมีขนาดเล็กกว่ารายการแบบไม่มี[1,2,3,...]กำหนด เนื่องจากไม่มีการซ้ำซ้อนการฝากข้อมูลที่ขาดหายไปหรือการฝากข้อมูลที่ไม่ตรงตามคำสั่งจะทำให้เกิดค่าที่มากกว่าkในkตำแหน่งที่ทำให้รายการผลลัพธ์มีขนาดใหญ่ขึ้น ..


4

Pyth, 6 ไบต์

UItMsS

ลองที่นี่

คำอธิบาย:

UItMsSQ
UI      Invariant from U (range(len(A)) for our purpose)
  tM     Map t (A - 1 for our purpose)
    s     s (flatten 1-deep for our purpose)
     S     S (sort for our purpose)
      Q     Q (autoinitialized to input) (implicit)

วัด ?! เพิ่มคำอธิบายลงในUIส่วนโปรด
Mr. Xcoder

@ Mr.Xcoder U <col>คือrange(len(A)), คือI <pfn> <any> <n-1:any> A(B, ...) == B
Erik the Outgolfer

จากนั้นฉันก็โตเกินจริง>. < ฉันอาจตีกอล์ฟของฉัน อัจฉริยะทางออกที่ยอดเยี่ยมตอนนี้ที่ฉันเห็นว่ามันทำงานอย่างไร ... ขอแสดงความยินดี!
Mr. Xcoder

@ Mr.Xcoder มันจริงๆเพียงแค่การค้นหาเอกสารสำหรับสิ่ง ...
เอริก Outgolfer

ไม่มันไม่ใช่. ฉันรู้ว่าU <col>เป็นrange(len(A))แต่ฉันไม่ได้ตระหนักว่าการย้ายโซลูชัน Python จะสั้นลง ...
Mr. Xcoder

4

PROLOG (SWI), 54 ไบต์

s(L):-sort(L,M),flatten(M,N),last(N,O),numlist(1,O,N).

ตอนนี้ที่ดีกว่า ยังค่อนข้าง verbose อนิจจา

ลองออนไลน์!

เพรดิเคตs/1ใช้รายการเป็นอาร์กิวเมนต์และเป็นจริงถ้ารายการนั้นเป็นรายการของที่เก็บข้อมูลที่ซ้อนกันได้ง่าย

การปรับปรุงอัลกอริทึม: ถ้าฉันเรียงลำดับรายการก่อนที่จะแบนให้แบนราบนี่จะทำให้รายการย่อยทั้งหมดถูกจัดเรียงเพื่อให้ภาคแสดงเป็นจริง เล็กน้อย "ยืม" จากPietu1998 คำตอบของวุ้น ขอบคุณที่ฉันสามารถทิ้งforallซึ่งเป็นมากกว่าครึ่งหนึ่งของโปรแกรม (ดูด้านล่างสำหรับคำตอบเดิม)

มันทำงานยังไง?

ภาคแสดงนั้นเป็นจริงถ้าข้อทั้งหมดเป็นจริง:

s(L) :-
    sort(L,M),                % M is L sorted in ascending order
    flatten(M,N),             % N is the 1-dimention version of M
    last(N,O),                % O is the last elemnt of N
    numlist(1,O,N).           % N is the list of all integers from 1 to O

คำตอบก่อนหน้า PROLOG (SWI) 109 ไบต์

s(L):-flatten(L,M),sort(M,N),last(N,O),numlist(1,O,N),forall(member(A,L),(A=[B|_],last(A,C),numlist(B,C,A))).

ลองออนไลน์!


3

Pyth , 9 16 11 ไบต์ (คงที่)

ใช้วิธีการที่แตกต่างอย่างสิ้นเชิงจากคำตอบอื่น ๆ วิธีที่สั้นกว่านั้นใช้ขนาด 7 ไบต์

!.EtM.++0sS

ชุดทดสอบ


คำอธิบาย

! .EtM. ++ 0sSQ -> โปรแกรมเต็มรูปแบบพร้อมอินพุตโดยนัยในตอนท้าย

          SQ -> เรียงลำดับอินพุตตามองค์ประกอบสูงสุดในแต่ละรายการย่อย
         s -> แบน
       +0 -> เติม 0
     . + -> รับ delta ของรายการ (เช่นความแตกต่างระหว่างองค์ประกอบที่ต่อเนื่องกัน)
   tM -> ลดแต่ละองค์ประกอบ
 .E -> องค์ประกอบใด ๆ ที่เป็นความจริง (1 วินาทีเป็นจริง 0s นั้นเป็นเท็จ)
! -> Negate (เพื่อให้มีค่าความจริง / ค่าเท็จที่สอดคล้องกัน)

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

ลองมาดูตัวอย่างสองสามตัวอย่างซึ่งทำให้เข้าใจง่ายขึ้น [[1,3,4],[5,7],[2,6]]สมมติว่าใส่เป็น แกนหลักของอัลกอริธึมนี้คือแต่ละเดลต้าในรายการที่ไม่ถูกแบนต้องเป็น1เพื่อให้สามารถวางซ้อนกันได้

  • ปิดแรกเปลี่ยนมันเป็นS[[1, 3, 4], [2, 6], [5, 7]]

  • จากนั้นsflattens [1, 3, 4, 2, 6, 5, 7]มัน

  • เตรียม0ล่วงหน้า:[0, 1, 3, 4, 2, 6, 5, 7]

  • .+[1, 2, 1, -2, 4, -1, 2]ได้รับสันดอนของรายการ

  • tMลดค่าแต่ละองค์ประกอบ, [0, 1, 0, -3, 3, -2, 1].

  • ไม่ใช่0จำนวนเต็มใด ๆเป็นความจริงใน Pyth ดังนั้นเราตรวจสอบว่ามีองค์ประกอบที่เป็นความจริงด้วยหรือไม่.E(ซึ่งหมายความว่าสแต็กไม่สามารถเกิดขึ้นได้อย่างถูกต้อง) Trueเราได้รับ

  • !ขัดแย้งผลซึ่งผลัดกันเข้าไปTrueFalse

ตัวอย่างเช่นถ้าอินพุต[[6,7,8,9,10],[1],[2],[3,4,5],[11,12,13]]อัลกอริทึมจะทำงานด้วยวิธีนี้:

  • เรียงตามองค์ประกอบสูงสุด: [[1], [2], [3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13]]แบนและมีใช้ได้:0[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

  • [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]สันดอน: ทั้งหมดได้ลดลง: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].

  • ไม่มีองค์ประกอบ truthy Falseคือเราจึงได้รับ Trueโดยการปฏิเสธตรรกะผลที่ได้คือ


Pyth , 7 ไบต์

qSlsQsS

ชุดทดสอบ

ท่าเรือคำตอบที่งูหลามและการเปลี่ยนแปลงของ@ วิธีการแก้ปัญหาของเอริค


ขอบคุณมากที่สละเวลาอธิบายวิธีการทำงานของมัน!
ชาร์ลี

ขอให้เรายังคงอภิปรายนี้ในการแชท
Mr. Xcoder

@ Mr.Xcoder คุณหมายถึงการtMลดลงของแต่ละองค์ประกอบ? ฉันคิดว่า decrementing องค์ประกอบของแต่ละจะให้ผลผลิต[1, 2, 1, -2, 4, -1, 2] [0, 1, 0, -3, 3, -2, 1]แต่นั่นไม่ได้ช่วยแก้ปัญหาดังนั้นฉันต้องเข้าใจผิดว่าการลดลงของแต่ละองค์ประกอบหมายถึงอะไร
ไบรอัน J

@BrianJ ลดองค์ประกอบในแต่ละรายการโดยtM 1คำอธิบายของฉันมีข้อผิดพลาด จะแก้ไข
Mr. Xcoder

@BrianJ คงที่ ขอบคุณสำหรับการระบุว่า
Mr. Xcoder

3

Brachylogขนาด 5 ไบต์

oc~⟦₁

ลองออนไลน์!

การรวมกันที่อธิบาย:

?o₀c₀~⟦₁.
?         The input (implicit)
 o₀       Sorted (subscript default = 0 => ascending)
   c₀     Concatenated (subscript default = 0 => no length check)
     ~    Inverse (find the input)
      ⟦₁   Range (subscript = 1 => [1..input])
        . The output (implicit)

คำอธิบายการวิเคราะห์:

ก่อนอื่นเราทำการเรียงลำดับรายการและจากนั้นเราเชื่อมต่อ (เช่นแบน 1 ลึก) ( oc) เพื่อให้ถังเก็บซ้อนจากขวาไปซ้ายถ้าเป็นไปได้ จากนั้นในการตรวจสอบว่าถังถูกซ้อนอย่างถูกต้องหรือไม่ (เช่นไม่มีถังหรือหอคอยที่หายไป) เราตรวจสอบว่ารายการผลลัพธ์นั้นมีช่วงตั้งแต่ 1 ถึงความยาว ตอนนี้แทนที่จะตรวจสอบรายการด้วยช่วง [1..n] ของความยาว ( {l⟦₁?}) เราพยายามค้นหาอินพุตไปยังฟังก์ชันที่สร้างช่วงดังกล่าว ( ~⟦₁) หากมี หากพบอินพุตแล้วโปรแกรมจะจบลงโดยไม่มีปัญหาดังนั้นมันจะทริกเกอร์true.สถานะ หากไม่พบอินพุตโปรแกรมจะล้มเหลวเรียก afalse.สถานะ


3

Python 2 , 43 ไบต์

lambda l:sum(sorted(l),[0])<range(len(`l`))

ลองออนไลน์!

ตรวจสอบว่าตัดแบ่งเป็นรายการที่เรียงลำดับ lexicographically มีขนาดเล็กกว่าขนาดใหญ่[1,2,3,...N] Nเนื่องจากไม่มีการซ้ำซ้อนที่ฝากข้อมูลที่ขาดหายไปหรือที่ฝากข้อมูลที่ไม่เป็นไปตามคำสั่งจะทำให้ค่ามีค่ามากกว่าkในตำแหน่งk'ทำให้รายการผลลัพธ์มีขนาดใหญ่ขึ้น ความยาวสตริงของอินพุตที่เพียงพอตามขอบเขตบนเนื่องจากแต่ละหมายเลขใช้อักขระมากกว่า 1 ตัว


ดีฉันคิดว่าควรมีวิธีการปรับปรุงอย่างมีนัยสำคัญในการแก้ปัญหาของฉันและนี่มัน!
Chris_Rands

3

MATL , 5 ไบต์

Sgtf=

ลองออนไลน์!

(อินพุตโดยนัยพูด{[4,5],[9,10],[1,2,3],[6,7,8]})

S- เรียงลำดับอินพุตตามลำดับพจนานุกรม ( {[1,2,3],[4,5],[6,7,8],[9,10]})

g- แปลงเป็นอาร์เรย์เดียว ( cell2mat)

t - ทำซ้ำที่

f- ค้นหาดัชนีที่มีค่าไม่เป็นศูนย์ เนื่องจากอินพุตที่นี่ไม่ใช่ศูนย์ทั้งหมดจึงส่งคืนรายการดัชนีจาก 1 ถึงความยาว (อาร์เรย์) ( [1,2,3,4,5,6,7,8,9,10],[1,2,3,4,5,6,7,8,9,10])

= - ตรวจสอบว่าอาร์เรย์เท่ากับช่วงที่ 1 ถึงความยาว (อาร์เรย์)


3

Japt , 13 12 11 ไบต์

นี่อาจจะสั้นกว่านี้

ñÎc äaT e¥1
  • บันทึก 1 ไบต์ขอบคุณETH

ลองใช้หรือเรียกใช้กรณีทดสอบทั้งหมด


คำอธิบาย

                :Implicit input of 2D array `U`
ñÎ              :Sort sub-arrays by their first element
  c             :Flatten
      T         :Prepend 0
    äa          :Consecutive absolute differences
        e¥1     :Does every element equal 1?

ใช่คุณคิดถูกแล้ว มันคุ้มค่ากับการถ่ายภาพ
ETHproductions

ฉันคิดว่าคุณสามารถบันทึกไบต์ในบรรทัดสุดท้ายด้วยä-0 e¥Jหรือän0 e¥1
ETHproductions

โซลูชันขนาด 13 ไบต์อื่นที่คล้ายกัน: ethproductions.github.io/japt/…
โอลิเวอร์

@ ETHproductions ฉันไม่รู้ว่าเกิดอะไรขึ้นที่นั่น! : D อย่าคิดว่าฉันมีโอกาสได้สัมผัสäอาร์เรย์ ขอบคุณสำหรับการบันทึก
Shaggy

1
@LuisfelipeDejesusMunoz มันใช้งานได้เมื่อคุณใช้บรรทัดแรกของโซลูชันนี้และบรรทัดที่สองของโซลูชันที่เชื่อมโยงเช่นเดียวกับที่ฉันพูดไปเก้าไบต์: codegolf.stackexchange.com/a/168967/16484
Nit

2

สกาลา, 49 ไบต์

p=>{val s=p.sortBy(_(0)).flatten
s==(1 to s.max)}

Ungolfed:

piles: List[List[Int]] =>
{
  val sorted = piles.sortBy(pile=>pile(0)).flatten //Since piles are sequential, we can sort them by their first element
  sorted == (1 to sorted.max) //If all the buckets are present and in order, after sorting them it should be equivalent to counting up from 1 to the max bucket
}


2

R , 58 ไบต์

function(v,a=unlist(v[order(sapply(v,min))]))any(a-seq(a))

ลองออนไลน์!

NB: FALSE เป็นผลลัพธ์ที่แท้จริง TRUE เป็นเท็จ

  • -3 ไบต์ขอบคุณ @JayCe

คำอธิบาย:

a=unlist(v[order(sapply(v,min))])  # order the list of vector by the min value and flatten
all(a==seq(a=a))                   # if the flattened list is equal to 1:length then it's ok

1
เพียงseq(a)2 ไบต์? นอกจากนี้ยังอนุญาตให้ใช้TRUEเป็นค่าที่ผิดพลาดและในทางกลับกัน (เพียงระบุในคำตอบของคุณ) เพื่อให้คุณสามารถทำany(a-seq(a))ไบต์อื่นได้
JayCe

@ JayCe: ฉันเป็นคนโง่ ... ฉันกังวลเกี่ยวกับseq(a)พฤติกรรมที่แตกต่างกันเมื่อaความยาว 1 และฉันพลาดไปในกรณีนี้เราจะได้ผลลัพธ์เดียวกัน: D ขอบคุณ!
digEmAll

1

C # (. NET Core) , 157 145 132 ไบต์

-13 ไบต์ขอบคุณTheLethalCoder

l=>{var k=l.OrderBy(x=>x[0]).SelectMany(x=>x);return!Enumerable.Range(1,k.Count()).Zip(k,(x,y)=>x==y).Any(x=>!x);}

จำนวนไบต์ยังรวมถึง

using System.Linq;

ลองออนไลน์!

Ungolfed:

l => {
        var k = l.OrderBy(x=>x[0])              // First, sort stacks by first bucket
                 .SelectMany(x => x);           // Concatenate stacks into one
        return !Enumerable.Range(1, k.Count())  // Create a sequence [1...n]
               .Zip(k, (x, y) => x == y)        // Check if our big stack corresponds the sequence
               .Any(x => !x);                   // Return if there were any differences
     };

1
x.First()-> x[0]? Enumerable.Range-> new int[]และZipมีดัชนีถ้าเป็นไปได้ .. ? นำและสถานที่สภาพลงWhere Any
TheLethalCoder

@TheLethalCoder ขอบคุณสำหรับเคล็ดลับ! และnew int[]วิธีการนั้นต้องการการเพิ่ม a Select()เพื่อให้ได้ดัชนีและในที่สุดก็ทำให้จำนวนไบต์ใหญ่
Grzegorz Puławski


1

Charcoalขนาด 19 ไบต์ (ไม่ใช่การแข่งขัน)

A▷m⟦▷s▷vθυ⟧θ⁼θ…·¹Lθ

ลองออนไลน์!

-10 ไบต์ขอบคุณASCII-only ASCII

-3 ไบต์ขอบคุณASCII-onlyสำหรับการใช้งานในภายหลัง (ดูประวัติการแก้ไขสำหรับเวอร์ชั่นที่อาจเป็นคู่แข่ง)

- สำหรับความจริง เพื่อความเท็จ

อินพุตเป็นรายการเดี่ยวของรายการเนื่องจากวิธีการที่ถ่านป้อนข้อมูล


UPมันเป็นคำตอบแรกในถ่านผมเห็นว่าการใช้งาน
ชาร์ลี

@CarlosAlejo UPsortedฉันได้ไปหาวิธีการในการจัดเรียงและวิธีที่ง่ายที่สุดก็เป็นเพียงแค่
Erik the Outgolfer


การใช้งานที่นั่นทำให้สิ่งต่าง ๆ มีความสำคัญเป็นลำดับดังนั้นทำไมUPยังอยู่ที่นั่น แต่ฉันเดาว่าคุณสามารถหลีกเลี่ยงการใช้ชื่อฟังก์ชัน python เป็น varnames ได้?
ASCII เท่านั้น

yay เพิ่ม eval เช่นกันv, O_O นี่ไม่ใช่แม้แต่ความท้าทายทางศิลปะ ASCII (ไม่น่าแปลกใจที่มันช่างเลวร้ายเหลือเกิน: P
เท่านั้น

0

Java 10, 213 ไบต์

import java.util.*;m->{Arrays.sort(m,(a,b)->Long.compare(a[0],b[0]));var r=Arrays.stream(m).flatMapToInt(Arrays::stream).toArray();return Arrays.equals(r,java.util.stream.IntStream.range(1,r.length+1).toArray());}

ลองออนไลน์

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

แรงบันดาลใจจาก@EriktheOutgolfer 4 ไบต์คำตอบ 4 vs 213 bytes, rofl .. >.>

คำอธิบาย:

import java.util.*;      // Required import for Arrays
m->{                     // Method with 2D integer-array parameter and boolean return-type
  Arrays.sort(m,         //  Sort the 2D input-array on:
    (a,b)->Long.compare(a[0],b[0])); 
                         //  The first values of the inner arrays
var r=Arrays.stream(m).flatMapToInt(Arrays::stream).toArray();
                         //  Flatten the 2D array to a single integer-array
return Arrays.equals(r,  //  Check if this integer-array is equal to:
  java.util.stream.IntStream.range(1,r.length+1).toArray());} 
                         //  An integer-array of the range [1, length+1]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.