Il carico del bus è legale?


15

Ero sull'autobus oggi e ho notato questo segno:

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

Il numero di passeggeri seduti, i sedili e le sedie a rotelle non devono essere più grandi di una fila nel tavolo. (Vedi chat per i dettagli.)

Ai fini di questa sfida generalizzeremo questa idea: dato un elenco intero non negativo di una lunghezza N (numero di tipi di passeggeri) strettamente positiva e una matrice intera non negativa di dimensioni strettamente positive (colonne N e una riga per configurazione , o la trasposizione di questo), restituisce un elenco di indici / verità-falsità / due valori univoci che indica quali limiti di configurazione sono rispettati.

Ad esempio con la matrice sopra:
30,25,1[1](0-indicizzato) [2](1-indicizzato) o [false,true,false](Booleano) o ["Abe","Bob","Abe"](due valori univoci) ecc.

I seguenti casi di test utilizzano la matrice sopra e lo 0/1 per 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]

I seguenti casi di test utilizzano la seguente matrice:
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]


Sto fraintendendo questa sfida o può [30,31,0]essere [1, 1, 1]perché è coperta da max3?
Okx,

Lo scambio di valori di verità è consentito? (ad es. qualsiasi valore veritiero al posto di 0e falsi al posto di 1?)
Mr. Xcoder

@Okx Stai fraintendendo qualcosa. [x,31,z]esclude max1e max2perché non consentono 31 standees.
Adám,

@ Mr.Xcoder Di solito è consentito in sfide come questa?
Adám,

Pensavo (vedi (2) ) (vedi anche il commento di Martin ) questo è consentito di default, ma non ho trovato un meta consenso. Ho proceduto pubblicando questa meta domanda , la cui conclusione che l'OP avrebbe dovuto essere chiesto per primo. Di solito lo permetto, non vedo il motivo per cui non dovrebbero essere scambiati.
Mr. Xcoder,

Risposte:



6

Haskell, 22 20 byte

map.(or.).zipWith(>)

Restituisce Falsese legale e in Truecaso contrario.

Provalo online!

Lanciando True / False come valori di ritorno si risparmiano 2 byte (grazie @ user202729!). Con Trueper legale è map.(and.).zipWith(<=)(22 byte). Provalo online!


Lanciando vero e falso nell'output si ottiene una soluzione più breve.
user202729

4

Ottava , 15 byte

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

Provalo online!

Secondo il commento di Sundar, omettendo la trasposizione si risparmiano 2 byte.


OP consente di prendere la matrice come trasposizione di ciò che viene mostrato nella domanda, e puoi prendere bcome vettore di colonna anziché come vettore di riga (poiché è appena specificato come un elenco), salvando 2 byte: provalo online!
Sundar - Ripristina Monica il


3

R , 32 30 26 byte

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

Provalo online!

Accetta la matrice in forma trasposta come x, test config as y. Restituisce un vettore di booleani.

-2 byte iniziali grazie a mnel e altri -4 di JayCe.


2
Salva 2 byte con l'applicazione di un corpo funzione (x> = y, 2, all)
mnel


2

Gelatina , 3 byte

<Ẹ€

Provalo online!

0= Vero, 1= Falso.


Se i valori non dovessero essere distinti, funzionerebbe
Mr. Xcoder il

@ Mr.Xcoder Non penso che questa opzione sia data qui. Immagino che aspetterò e vedrò.
Erik the Outgolfer,


1
@ Mr.Xcoder Hm, sembra che non sia esattamente "verità-falsità" ma piuttosto "falsità-verità", che, sfortunatamente, non è ciò che la sfida richiede.
Erik the Outgolfer,

@ Mr.Xcoder Jelly ha bisogno .
Adám,


2

JavaScript (ES6), 38 byte

Accetta input come (matrix)(vector). Restituisce un array booleano.

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

Provalo online!



2

Retina 0.8.2 , 57 byte

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

Provalo online! Il collegamento include casi di test, ma l'output viene eseguito tutti insieme. Spiegazione:

\d+
$*

Converti in unario.

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

Assegna a ciascuna riga della matrice la propria copia dell'elenco.

%(

Operare separatamente su ogni riga della matrice.

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

Rimuovere ripetutamente l'ultimo numero della riga e dell'elenco mentre l'ultimo numero della riga è almeno grande quanto quello dell'elenco.

(1*);\1$

Dovrebbe quindi rimanere un numero nell'elenco e il numero nella riga dovrebbe essere almeno grande quanto quello.




1

05AB1E , 5 byte

εs<›P

Provalo online o verifica tutti i casi di test .

Spiegazione:

Sfortunatamente 05AB1E v1 non ha un carattere incorporato di 1 carattere per o , quindi diminuisco ogni valore invece prima dell'uso . 05AB1E v2 che è attualmente in sviluppo avrà questi builtin.

ε        # 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φî

Esegui ed esegui il debug

Spiegazione:

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


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.