Ist die Buslast legal?

15

Ich war heute im Bus und habe folgendes Zeichen bemerkt:

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

Die Anzahl der sitzenden Passagiere, der stehenden Personen und der Rollstühle darf nicht größer sein als eine Reihe in der Tabelle. (Siehe Chat für Details.)

Für die Zwecke dieser Herausforderung verallgemeinern wir diese Idee: Geben Sie eine nicht negative Ganzzahlliste mit einer streng positiven Länge N (Anzahl der Passagiertypen) und eine nicht negative Ganzzahlmatrix mit streng positiven Dimensionen (N Spalten und eine Zeile pro Konfiguration) an , oder die Transponierung davon), gibt eine Liste von Indizes / Wahrheitsfehlern / zwei eindeutigen Werten zurück, die angibt, welche Konfigurationsgrenzen erfüllt sind.

ZB mit der obigen Matrix:
30,25,1[1](0-indiziert) [2](1-indiziert) oder [false,true,false](Boolean) oder ["Abe","Bob","Abe"](zwei eindeutige Werte) usw.

Die folgenden Testfälle verwenden die obige Matrix und die 0/1 für falsch / wahr:
[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]

Die folgenden Testfälle verwenden die folgende Matrix:
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]

Adam
quelle
Verstehe ich diese Herausforderung falsch oder kann das [30,31,0]daran liegen, [1, 1, 1]dass sie von abgedeckt wird max3?
Okx
Ist das Austauschen von Wahrheitswerten zulässig? (zB irgendein wahrer Wert anstelle von 0und irgendein falscher anstelle von 1?)
Mr. Xcoder
@Okx Du verstehst etwas falsch. schließt [x,31,z]aus max1und max2weil sie 31 standees nicht zulassen.
Adám
@ Mr.Xcoder Ist das bei solchen Herausforderungen normalerweise erlaubt?
Adám
Ich pflegte zu denken (siehe (2) ) (siehe auch Martin Kommentar ) dies standardmäßig erlaubt ist, aber ich habe nicht einen Meta Konsens gefunden. Ich habe als Nächstes diese Meta-Frage gestellt , deren Schlussfolgerung lautet , dass das OP zuerst gestellt werden sollte. Ich erlaube es normalerweise, ich sehe keinen Grund, warum sie nicht getauscht werden sollten.
Mr. Xcoder

Antworten:

6

Haskell, 22 bis 20 Bytes

map.(or.).zipWith(>)

Gibt zurück, Falsewenn legal und Truewenn nicht.

Probieren Sie es online!

Durch Umkehren von True / False als Rückgabewert werden 2 Byte gespart (danke @ user202729!). Mit Truefür legal ist es map.(and.).zipWith(<=)(22 Bytes). Probieren Sie es online!

nimi
quelle
Das Umkehren von true und false in der Ausgabe führt zu einer kürzeren Lösung.
User202729
4

Oktave , 15 Bytes

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

Probieren Sie es online!

Laut Sundars Kommentar werden durch Weglassen der Transponierung 2 Bytes gespart.

tsh
quelle
OP erlaubt es, die Matrix als Transponierte der in der Frage gezeigten Werte zu verwenden. Sie können bstatt eines Zeilenvektors auch einen Spaltenvektor verwenden (da dieser nur als Liste angegeben ist), wodurch 2 Byte gespart werden: Probieren Sie es online aus!
Sundar - Wiedereinsetzung von Monica
3

MATL , 3 Bytes

<~A

Probieren Sie es online!

Nimmt die Eingabematrix als eine Transponierte des Formats in der Frage (wie von OP zugelassen) mit einer Spalte pro Konfiguration. Gibt den booleschen Wert 0 und 1 für false und true aus.

Sundar - Setzen Sie Monica wieder ein
quelle
3

R , 32 30 26 Bytes

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

Probieren Sie es online!

Akzeptiert die Matrix transponiert als x, test config als y. Gibt einen Vektor von Booleschen Werten zurück.

Anfängliche -2 Bytes dank mnel und weitere -4 von JayCe.

Kirill L.
quelle
2
Speichern Sie 2 Bytes mit einer Funktion body apply (x> = y, 2, all)
mnel
1
Save 4 Bytes
JayCe
2

Gelee , 3 Bytes

<Ẹ€

Probieren Sie es online!

0= Richtig, 1= Falsch.

Erik der Outgolfer
quelle
Wenn die Werte nicht unterschiedlich sein müssen, würde funktionieren
Herr Xcoder
@ Mr.Xcoder Ich glaube nicht, dass diese Option hier angegeben ist. Ich denke, ich werde abwarten und sehen.
Erik der Outgolfer
Es ist erlaubt .
Mr. Xcoder
1
@ Mr.Xcoder Hm, es sieht so aus, als wäre es nicht genau "wahrheitsgemäß", sondern "falsch-wahrheitsgemäß", was leider nicht das ist, wonach die Herausforderung verlangt.
Erik der Outgolfer
@ Mr.Xcoder Jelly braucht .
Adám
2

JavaScript (ES6), 38 Byte

Übernimmt die Eingabe als (matrix)(vector). Gibt ein boolesches Array zurück.

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

Probieren Sie es online!

Arnauld
quelle
2

Retina 0.8.2 , 57 Bytes

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

Probieren Sie es online! Link enthält Testfälle, aber die Ausgabe wird alle zusammen ausgeführt. Erläuterung:

\d+
$*

In Unary konvertieren.

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

Geben Sie jeder Zeile der Matrix eine eigene Kopie der Liste.

%(

Bedienen Sie jede Zeile der Matrix separat.

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

Entfernen Sie wiederholt die letzte Nummer der Zeile und Liste, während die letzte Nummer der Zeile mindestens so groß wie die der Liste ist.

(1*);\1$

In der Liste sollte dann noch eine Nummer übrig sein, und die Nummer in der Reihe sollte mindestens so groß sein.

Neil
quelle
1

05AB1E , 5 Bytes

εs<›P

Probieren Sie es online aus oder überprüfen Sie alle Testfälle .

Erläuterung:

Leider verfügt 05AB1E v1 nicht über ein eingebautes 1-Zeichen für oder , daher verringere ich jeden Wert stattdessen, bevor ich ihn verwende . 05AB1E v2, das sich derzeit in der Entwicklung befindet, wird über diese integrierten Funktionen verfügen.

ε        # 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
quelle
1

Stax , 8 Bytes

â ╤┘µrφî

Führen Sie es aus und debuggen Sie es

Erläuterung:

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
quelle