Apakah bus memuat legal?

15

Saya berada di dalam bus hari ini, dan memperhatikan tanda ini:

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

Jumlah penumpang, penumpang, dan kursi roda yang duduk semua harus tidak lebih besar dari beberapa baris dalam tabel. (Lihat obrolan untuk detailnya.)

Untuk keperluan tantangan ini, kami akan menggeneralisasi ide ini: Diberikan daftar bilangan bulat non-negatif dengan panjang positif N (jumlah jenis penumpang) dan matriks bilangan bulat non-negatif dengan dimensi positif ketat (kolom N dan satu baris per konfigurasi , atau transpos ini), kembalikan daftar indeks / kebenaran-palsu / dua-nilai unik yang menunjukkan batas konfigurasi yang dipenuhi.

Misalnya dengan matriks di atas:
30,25,1[1](0-diindeks) [2](1-diindeks) atau [false,true,false](Boolean) atau ["Abe","Bob","Abe"](dua nilai unik) dll.

Kasing uji berikut menggunakan matriks di atas dan 0/1 untuk false / true:
[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]

Kasing uji berikut menggunakan matriks berikut:
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]

Adm
sumber
Apakah saya salah memahami tantangan ini atau [30,31,0]mungkin [1, 1, 1]karena diliput max3?
Okx
Apakah bertukar nilai kebenaran diizinkan? (mis. ada nilai kebenaran di tempat 0dan ada yang salah di tempat 1?)
Mr. Xcoder
@Okx Anda salah paham tentang sesuatu. [x,31,z]mengesampingkan max1dan max2karena mereka tidak mengizinkan 31 orang yang berdiri.
Adám
@ Mr.Xcoder Apakah itu biasanya diperbolehkan dalam tantangan seperti ini?
Adám
Saya dulu berpikir (lihat (2) ) (juga melihat komentar Martin ) ini diizinkan secara default, tetapi saya belum menemukan konsensus meta. Saya telah melanjutkan dengan memposting pertanyaan meta ini , yang kesimpulannya bahwa OP harus ditanyakan terlebih dahulu. Saya biasanya membiarkannya, saya tidak melihat alasan mengapa mereka tidak boleh ditukar.
Tn. Xcoder

Jawaban:

6

Haskell, 22 20 byte

map.(or.).zipWith(>)

Pengembalian Falsejika legal dan Truejika tidak.

Cobalah online!

Membalik Benar / Salah karena nilai pengembalian menghemat 2 byte (terima kasih @ user202729!). Dengan Trueuntuk hukum itu map.(and.).zipWith(<=)(22 byte). Cobalah online!

nimi
sumber
Membalik benar dan salah dalam output menghasilkan solusi yang lebih pendek.
user202729
4

Oktaf , 15 byte

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

Cobalah online!

Sesuai komentar sundar, menghilangkan transpose menghemat 2 byte.

tsh
sumber
OP memungkinkan mengambil matriks sebagai transpos dari apa yang ditampilkan dalam pertanyaan, dan Anda dapat mengambil bsebagai vektor kolom alih-alih vektor baris (karena hanya ditentukan sebagai daftar), menghemat 2 byte: Coba online!
sundar - Reinstate Monica
3

MATL , 3 byte

<~A

Cobalah online!

Mengambil matriks input sebagai transpose format dalam pertanyaan (sebagaimana diizinkan oleh OP), dengan satu kolom per konfigurasi. Output boolean 0 dan 1 untuk false dan true.

sundar - Pasang kembali Monica
sumber
3

R , 32 30 26 byte

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

Cobalah online!

Menerima matriks dalam bentuk transposed sebagai x, test config asy . Mengembalikan vektor boolean.

Initial -2 bytes berkat mnel, dan lebih lanjut -4 oleh JayCe.

Kirill L.
sumber
2
Hemat 2 byte dengan fungsi body terapkan (x> = y, 2, semua)
mnel
1
simpan 4 byte
JayCe
2

Jelly , 3 byte

<Ẹ€

Cobalah online!

0= Benar, 1= Salah.

Erik the Outgolfer
sumber
Jika nilainya tidak perlu berbeda, akan berhasil
Tn. Xcoder
@ Mr.Xcoder Saya tidak berpikir opsi itu diberikan di sini. Saya kira saya akan menunggu dan melihat.
Erik the Outgolfer
Itu diizinkan .
Tn. Xcoder
1
@ Mr.Xcoder Hm, sepertinya bukan "kebenaran-palsu" tetapi "palsu-kebenaran", yang, sayangnya, bukan yang ditantang oleh tantangan.
Erik the Outgolfer
@ Kebutuhan Mr.Xcoder Jelly .
Adám
2

JavaScript (ES6), 38 byte

Mengambil input sebagai (matrix)(vector). Mengembalikan array Boolean.

m=>v=>m.map(r=>!r.some((t,x)=>v[x]>t))

Cobalah online!

Arnauld
sumber
2

Retina 0.8.2 , 57 byte

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

Cobalah online! Tautan termasuk kasus uji, tetapi output semua berjalan bersama. Penjelasan:

\d+
$*

Konversikan ke unary.

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

Berikan setiap baris matriks salinan daftar itu sendiri.

%(

Beroperasi secara terpisah pada setiap baris matriks.

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

Hapus berulang-ulang jumlah baris terakhir dan daftar sementara jumlah terakhir baris paling tidak sama besar dengan daftar.

(1*);\1$

Maka harus ada satu nomor yang tersisa dalam daftar dan jumlah di baris paling tidak harus sebesar itu.

Neil
sumber
2

Japt , 6 5 byte

-1 byte dari @Shaggy

eȨVv

Cobalah online!

Luis felipe De jesus Munoz
sumber
VgY-> Vvuntuk menyimpan byte.
Shaggy
1

05AB1E , 5 byte

εs<›P

Cobalah secara online atau verifikasi semua kasus uji .

Penjelasan:

Sayangnya 05AB1E v1 tidak memiliki built-in 1-char untuk atau , jadi saya mengurangi nilai masing-masing sebelum menggunakan . 05AB1E v2 yang saat ini dalam pengembangan akan memiliki builtin ini.

ε        # 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
Kevin Cruijssen
sumber
1

Stax , 8 byte

â ╤┘µrφî

Jalankan dan debug itu

Penjelasan:

mx\{:vm|A Full program, unpacked, implicit input
m         Map over rows of the matrix:
 x\         Zip with input array
   {  m     Map over result:
    :v        Check if non-increasing, i.e. matrix element greater than or equal to array element
       |A   All.
            Implicit output
wastl
sumber