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]


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!


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.


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

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.


2
Hemat 2 byte dengan fungsi body terapkan (x> = y, 2, semua)
mnel


2

Jelly , 3 byte

<Ẹ€

Cobalah online!

0= Benar, 1= Salah.


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


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!



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.




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

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


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.