La charge de bus est-elle légale?


15

J'étais dans le bus aujourd'hui et j'ai remarqué ce signe:

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

Le nombre de passagers assis, de passagers debout et de fauteuils roulants ne doit pas être supérieur à une rangée du tableau. (Voir le chat pour plus de détails.)

Aux fins de ce défi, nous généraliserons cette idée: étant donné une liste entière non négative d'une longueur strictement positive N (nombre de types de passagers) et une matrice entière non négative de dimensions strictement positives (N colonnes et une ligne par configuration , ou la transposition de ceci), retourne une liste d'indices / vérités-fausses / deux-valeurs-uniques indiquant quelles configurations les limites sont remplies.

Par exemple avec la matrice ci-dessus:
30,25,1[1](indexé 0) [2](indexé 1) ou [false,true,false](booléen) ou ["Abe","Bob","Abe"](deux valeurs uniques) etc.

Les cas de test suivants utilisent la matrice ci-dessus et le 0/1 pour faux / vrai:
[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]

Les cas de test suivants utilisent la matrice suivante:
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]


Suis-je incompris de ce défi ou peut- [30,31,0]être [1, 1, 1]parce qu'il est couvert par max3?
Okx

L'échange de valeurs de vérité est-il autorisé? (par exemple, toute valeur vraie à la place de 0et toute valeur fausse à la place de 1?)
M. Xcoder

@Okx Vous vous méprenez sur quelque chose. [x,31,z]exclut max1et max2parce qu'ils ne permettent pas 31 voyageurs debout.
Adám

@ Mr.Xcoder Est-ce généralement autorisé dans des défis comme celui-ci?
Adám

Je pensais (voir (2) ) (voir également le commentaire de Martin ) que cela est autorisé par défaut, mais je n'ai pas trouvé de méta consensus. J'ai procédé en affichant cette méta-question , dont la conclusion que le PO devrait être demandé en premier. Je le permets habituellement, je ne vois pas la raison pour laquelle ils ne devraient pas être échangés.
M. Xcoder

Réponses:



6

Haskell, 22 20 octets

map.(or.).zipWith(>)

Retourne Falsesi légal et Truesinon.

Essayez-le en ligne!

Retourner Vrai / Faux comme valeurs de retour économise 2 octets (merci @ user202729!). Avec Truepour légal c'est map.(and.).zipWith(<=)(22 octets). Essayez-le en ligne!


Renverser vrai et faux dans la sortie entraîne une solution plus courte.
user202729

4

Octave , 15 octets

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

Essayez-le en ligne!

Selon le commentaire de Sundar, l'omission de la transposition permet d'économiser 2 octets.


OP permet de prendre la matrice comme transposée de ce qui est montré dans la question, et vous pouvez prendre bcomme vecteur de colonne au lieu de vecteur de ligne (car il est simplement spécifié sous forme de liste), économisant 2 octets: Essayez-le en ligne!
sundar


3

R , 32 30 26 octets

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

Essayez-le en ligne!

Accepte la matrice sous forme transposée as x, test config as y. Renvoie un vecteur de booléens.

-2 octets initiaux grâce à mnel, et encore -4 par JayCe.


2
Enregistrer 2 octets avec un corps de fonction appliquer (x> = y, 2, tous)
mnel


2

Gelée , 3 octets

<Ẹ€

Essayez-le en ligne!

0= Vrai, 1= Faux.


Si les valeurs n'ont pas besoin d'être distinctes, cela fonctionnerait
M. Xcoder

@ Mr.Xcoder Je ne pense pas que cette option soit donnée ici. Je suppose que je vais attendre et voir.
Erik the Outgolfer


1
@ Mr.Xcoder Hm, on dirait que ce n'est pas exactement "vrai-faux" mais plutôt "faux-vrai", ce qui, malheureusement, n'est pas ce que le défi demande.
Erik the Outgolfer

@ Mr.Xcoder Jelly a besoin .
Adám


2

JavaScript (ES6), 38 octets

Prend l'entrée comme (matrix)(vector). Renvoie un tableau booléen.

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

Essayez-le en ligne!



2

Retina 0.8.2 , 57 octets

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

Essayez-le en ligne! Link inclut des cas de test, mais la sortie est exécutée ensemble. Explication:

\d+
$*

Convertissez en unaire.

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

Donnez à chaque ligne de la matrice sa propre copie de la liste.

%(

Opérez séparément sur chaque ligne de la matrice.

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

Supprimez à plusieurs reprises le dernier numéro de la ligne et de la liste tandis que le dernier numéro de la ligne est au moins aussi grand que celui de la liste.

(1*);\1$

Il devrait alors y avoir un numéro dans la liste et le numéro dans la ligne devrait être au moins aussi grand que cela.




1

05AB1E , 5 octets

εs<›P

Essayez-le en ligne ou vérifiez tous les cas de test .

Explication:

Malheureusement, 05AB1E v1 n'a pas de fonction intégrée à 1 caractère pour ou , donc je diminue chaque valeur à la place avant de l'utiliser . 05AB1E v2 qui est en cours de développement aura ces fonctions intégrées.

ε        # 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 octets

â ╤┘µrφî

Exécuter et déboguer

Explication:

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


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.