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]


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!


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



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.


2
Speichern Sie 2 Bytes mit einer Funktion body apply (x> = y, 2, all)
mnel


2

Gelee , 3 Bytes

<Ẹ€

Probieren Sie es online!

0= Richtig, 1= Falsch.


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


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

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.




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

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


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.