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
Text als eine Liste von Bänden nehmen (dh eine Liste der Anzahl von L
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 den C
Text stattdessen aus demselben Grund auch als Matrix aus zwei unterschiedlichen Werten betrachten?
L
und einer LL
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 2 L
und einem LLL
auch, um für die andere Richtung zu sorgen.
L
in eine Liste von Ganzzahlen. Die zweite ist das Parsen der Eingabematrix C
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 '.
L\n\nL
,CCCCC\nCCCCC\nC..CC\nCCCCC
(.
steht für ein Leerzeichen,\n
repräsentiert eine neue Zeile).