โหลดรถบัสถูกกฎหมายหรือไม่


15

ฉันอยู่ในรถบัสวันนี้และสังเกตเห็นสัญญาณนี้:

      seated    standing    wheelchairs
max1    37         30            00
max2    36         26            01
max3    34         32            00

จำนวนผู้โดยสารที่นั่งยืนและเก้าอี้รถเข็นทั้งหมดต้องไม่ใหญ่กว่าบางแถวในตาราง (ดูรายละเอียดการแชท)

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

เช่นด้วยเมทริกซ์ด้านบน:
30,25,1[1](ดัชนี 0) [2](ดัชนี 1) หรือ[false,true,false](บูลีน) หรือ["Abe","Bob","Abe"](สองค่าที่ไม่ซ้ำกัน) เป็นต้น

กรณีทดสอบต่อไปนี้ใช้เมทริกซ์ดังกล่าวข้างต้นและ 0/1 เท็จ / จริง:
[30,30,0]→การ[1,0,1]
[30,31,0]→การ[0,0,1]
[35,30,0]→การ[1,0,0]
[0,0,1]→การ[0,1,0]
[0,0,0]→การ[1,1,1]
[1,2,3]→การ[0,0,0]

กรณีทดสอบต่อไปนี้ใช้เมทริกซ์ต่อไปนี้:
1 2 0 4
2 3 0 2

[1,2,1,2]→การ[0,0]
[1,3,0,1]→การ[0,1]
[1,2,0,3]→การ[1,0]
[1,2,0,1]→การ[1,1]


ฉันเข้าใจผิดความท้าทายนี้หรืออาจ[30,31,0]เป็น[1, 1, 1]เพราะมันถูกปกคลุมด้วยmax3?
Okx

การสลับค่าความจริงอนุญาตหรือไม่ (เช่นค่าความจริงใด ๆ แทนที่และค่าเท็จ0ใด ๆ แทน1?)
Mr. Xcoder

@Okx คุณเข้าใจผิดบางอย่าง [x,31,z]ออกกฎmax1และmax2เพราะพวกเขาไม่อนุญาตให้มี 31 standees
อดัม

@ Mr.Xcoder นั่นมักจะได้รับอนุญาตในความท้าทายเช่นนี้หรือไม่?
อดัม

ฉันเคยคิด (ดู(2) ) (ดูความคิดเห็นของ Martin ด้วย ) สิ่งนี้อนุญาตโดยค่าเริ่มต้น แต่ฉันไม่พบฉันทามติ meta ฉันได้ดำเนินการต่อโดยโพสต์คำถามเมตานี้ซึ่งมีข้อสรุปว่า OP ควรถามก่อน ฉันมักจะอนุญาตมันฉันไม่เห็นเหตุผลที่พวกเขาไม่ควรสลับ
Mr. Xcoder

คำตอบ:



6

Haskell, 22 20 ไบต์

map.(or.).zipWith(>)

ส่งคืนFalseถ้าถูกกฎหมายและTrueถ้าไม่

ลองออนไลน์!

การพลิก True / False เป็นค่าที่ส่งคืนจะบันทึก 2 ไบต์ (ขอบคุณ @ user202729!) ด้วยการTrueตามกฎหมายมันmap.(and.).zipWith(<=)(22 bytes) ลองออนไลน์!


การพลิกความจริงและเท็จในผลลัพธ์จะได้ผลลัพธ์ที่สั้นลง
user202729

4

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

@(a,b)all(a>=b)

ลองออนไลน์!

ตามความคิดเห็นของ sundar การละเว้นการแปลงจะบันทึก 2 ไบต์


OP อนุญาตให้ใช้เมทริกซ์เป็นทรานสโพสของสิ่งที่ปรากฏในคำถามและคุณสามารถใช้bเป็นเวกเตอร์คอลัมน์แทนที่จะเป็นเวกเตอร์แถว (เนื่องจากเพิ่งระบุเป็นรายการ) ประหยัด 2 ไบต์: ลองออนไลน์!
sundar - Reinstate Monica

3

MATL , 3 ไบต์

<~A

ลองออนไลน์!

นำเมทริกซ์อินพุตเป็นการแปลงรูปแบบในคำถาม (ตามที่อนุญาตโดย OP) ด้วยหนึ่งคอลัมน์ต่อการกำหนดค่า เอาต์พุตบูลีน 0 และ 1 สำหรับ false และ true


3

R , 32 30 26 ไบต์

function(x,y)!colSums(x<y)

ลองออนไลน์!

ยอมรับเมทริกซ์ในรูปแบบการขนย้ายเป็นทดสอบการตั้งค่าเป็นx yส่งคืนเวกเตอร์ของ booleans

เริ่มต้น -2 ไบต์ขอบคุณ mnel และ -4 เพิ่มเติมโดย JayCe


2
บันทึก 2 ไบต์โดยใช้ฟังก์ชันของฟังก์ชัน (x> = y, 2, ทั้งหมด)
mnel


2

เยลลี่ 3 ไบต์

<Ẹ€

ลองออนไลน์!

0= จริง1= เท็จ


หากค่าไม่จำเป็นต้องแตกต่างกันจะทำงาน
Mr. Xcoder

@ Mr.Xcoder ฉันไม่คิดว่าจะมีตัวเลือกให้ที่นี่ ฉันเดาว่าฉันจะรอดู
Erik the Outgolfer

จะได้รับอนุญาต
Mr. Xcoder

1
@ Mr.Xcoder หืมดูเหมือนว่าไม่ใช่ "ความจริงเท็จ" แต่เป็น "ความจริงเท็จ" ซึ่งน่าเสียดายไม่ใช่สิ่งที่ท้าทาย
Erik the Outgolfer

@ ความต้องการ
อดัม




2

เรติน่า 0.8.2 , 57 ไบต์

\d+
$*
;(?=.*;(.*))
;$1¶
%(+`,1*(1*)(;.*),\1$
$2
(1*);\1$

ลองออนไลน์! การเชื่อมโยงรวมถึงกรณีทดสอบ แต่ผลลัพธ์ทั้งหมดทำงานร่วมกัน คำอธิบาย:

\d+
$*

แปลงเป็นเอก

;(?=.*;(.*))
;$1¶

ให้แต่ละแถวของเมทริกซ์เป็นสำเนาของรายการ

%(

ทำงานแยกกันในแต่ละแถวของเมทริกซ์

+`,1*(1*)(;.*),\1$
$2

ลบหมายเลขสุดท้ายของแถวและรายการซ้ำหลายครั้งในขณะที่หมายเลขสุดท้ายของแถวมีขนาดใหญ่เท่ากับของรายการอย่างน้อย

(1*);\1$

ควรมีหมายเลขหนึ่งอยู่ในรายการและหมายเลขในแถวควรมีอย่างน้อยเท่ากับใหญ่




1

05AB1E , 5 ไบต์

εs<›P

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

คำอธิบาย:

แต่น่าเสียดายที่ 05AB1E v1 ไม่ได้ในตัว 1 ถ่านสำหรับหรือเพื่อให้ฉันลดลงแต่ละค่าแทนก่อนที่จะใช้ 05AB1E v2ซึ่งขณะนี้อยู่ในการพัฒนาจะมี builtins เหล่านี้

ε        # For-each row of the (implicitly input) matrix:
 s       #  Swap, so the (implicitly input) list is at the top of the stack
  <      #  Decrease every value in the input-list by 1
         #   i.e. [30,25,1] → [29,24,0]
        #  Check for each value in the matrix-row if they're larger
         #  than the input-list value at the same index
         #   i.e. [37,30,0] and [29,24,0] → [1,1,0]
    P    #  Then take the product of these checks
         #   i.e. [1,1,0] → 0



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