Kann dieser Behälter so viel Flüssigkeit aufnehmen?
Synopse herausfordern
Wie Sie höchstwahrscheinlich wissen, haben Flüssigkeiten eine unbestimmte Form und ein bestimmtes Volumen. Als solche nehmen sie immer die Form ihres Behälters an. Sie können sich jedoch nicht erweitern, um ihren Container zu füllen.
Ihre heutige Aufgabe ist es zu bestimmen, ob eine bestimmte Menge an Flüssigkeit (dargestellt durch eine bestimmte Anzahl von L
Zeichen oder Zahlen, die das Volumen des Teils darstellen, gemäß Vorschlag) in einen Behälter einer bestimmten Größe (dargestellt durch eine Matrix von) passen kann oder nicht C
Zeichen) mit einer gewissen Menge an Leerzeichen (dargestellt durch Leerzeichen). Der Container enthält immer C
Zeichen rund um den Umfang.
Ihr Programm gibt einen Wahrheits- / Falschwert zurück, der davon abhängt, ob die Flüssigkeit in den Behälter passt. Es passt nur, wenn für jeden Teil der Flüssigkeit, der vom Rest getrennt ist (entweder durch einen Raum oder durch zwei Zeilenumbrüche).
Testfälle
LLL
L
----- True
CCCCC
C CC
C CC
CCCCC
LLL
LL
------ True
CCCCCC
C C C
C CCC
CCCCCC
L L
LLL
----- False (Not enough space)
CCCCC
CCCCC
C CC
CCCCC
LL
------ False (Spaces are not connected but liquid is)
CCCCCC
CCCC C
C CCCC
CCCCCC
L L
------ True
CCCCCC
CCCC C
C CCCC
CCCCCC
L L
------ True (There is a pocket of empty space which holds both parts of the liquid)
CCCCCC
CCC C
CCCCCC
CCCCCC
L
L
------ True (There is a pocket of empty space for each part of the liquid)
CCCCCC
CCCC C
C CCCC
CCCCCC
L L L LL
------ True
CCCCCCCCC
CCCC C C
C CCCCCCC
CCCCCC CC
CCCCCCCCC
L
L
----- True
CCCCC
CCCCC
C CC
CCCCC
Fühlen Sie sich frei, Testfälle vorzuschlagen!
Regeln
- Dies ist Code-Golf , daher gewinnt die kürzeste Antwort in Bytes.
- Standardlücken sind nicht zulässig.
L\n\nL
,CCCCC\nCCCCC\nC..CC\nCCCCC
(.
steht für ein Leerzeichen,\n
repräsentiert eine neue Zeile).L
Text als eine Liste von Bänden nehmen (dh eine Liste der Anzahl vonL
s in jedem Betrag)? Da das Parsen nach Leerzeichen und doppelten Zeilenumbrüchen nichts mit dem Kern der Herausforderung zu tun zu haben scheint. Dürfen wir denC
Text stattdessen aus demselben Grund auch als Matrix aus zwei unterschiedlichen Werten betrachten?L
und einerLL
mit Leerzeichen der Größe 3 und 2 (ein Algorithmus, der nur kleinste Leerzeichen zuerst mit kleinsten noch zu verwendenden Flüssigkeitsstücken füllt, ergibt Falsey). Vielleicht das gleiche, aber mit 2L
und einemLLL
auch, um für die andere Richtung zu sorgen.L
in eine Liste von Ganzzahlen. Die zweite ist das Parsen der EingabematrixC
in eine Liste von Ganzzahlen. Und die dritte ist eine bestimmte Frage für einen gegebenen ganzzahligen Beutel A und B, wenn es eine Partition in A gibt, wenn alle ganzen Zahlen in jeder Partition summiert werden, um einen Beutel A 'zu erhalten, ist jede n-te größte Zahl in A' kleiner ( <=) als n-te größte Zahl in B '.Antworten:
Schnecken, 58 Bytes
Die Eingabe erfolgt genau wie in den Beispielen.
Eine 4 Byte längere Version ist schnell genug, um die Testfälle sofort abzuschließen (Testen Sie diese Version online ):
Eine eingerückte Formatierung des letzteren:
quelle
Sauber , 313 Bytes
Probieren Sie es online aus!
Definiert die Funktion
$ :: [Int] [[Char]] -> Bool
. Der TIO-Link enthält einen Wrapper um STDIN.? :: [Int] -> [[Int]]
ist ein Helfer, um die verschiedenen Möglichkeiten zu generieren, wie die Volumes kombiniert werden können.Erweitert:
quelle