¿Puede este recipiente contener tanto líquido?
Sinopsis del desafío
Como probablemente sepa, los líquidos tienen una forma indefinida y un volumen definido. Como tal, siempre toman la forma de su contenedor. Sin embargo, no pueden expandirse para llenar su contenedor.
Su trabajo hoy es determinar si una cierta cantidad de líquido (representada por un cierto número de L
caracteres o números que representan el volumen de la pieza, según la sugerencia) puede caber en un recipiente de cierto tamaño (representado por una matriz de C
caracteres) con cierta cantidad de espacio vacío (representado por caracteres de espacio) dentro de él. El contenedor siempre tendrá C
caracteres en todo el perímetro.
Su programa devolverá un valor verdadero / falso en función de si el líquido encajará en el recipiente. Solo se ajustará si hay un área de espacio vacío conectado (formado por espacios adyacentes entre sí horizontal, diagonal o verticalmente) dentro del recipiente para cada parte del líquido que está separada del resto (ya sea por un espacio o por dos personajes de nueva línea).
Casos de prueba
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
¡No dude en sugerir casos de prueba!
Reglas
- Este es el código de golf , por lo que gana la respuesta más corta en bytes.
- Las lagunas estándar no están permitidas.
L
texto como una lista de volúmenes (es decir, una lista del número de L
s en cada cantidad)? Dado que analizar espacios y líneas nuevas dobles parece no tener relación con el núcleo del desafío. ¿También podemos tomar el C
texto como una matriz de dos valores distintos en su lugar por la misma razón?
L
y uno LL
con espacios de tamaño 3 y 2 (un algoritmo que solo llena los espacios más pequeños primero con los pedazos más pequeños de líquido aún por usar dará Falsey). Quizás lo mismo pero con 2 L
y uno LLL
también, para atender a la otra dirección.
L
a una lista de enteros. El segundo analiza la C
matriz de entrada a una lista de enteros. Y la tercera es una pregunta determinante para la bolsa entera A y B, si hay una partición en A, cuando suma todos los enteros en cada partición para obtener una bolsa A ', cada enésimo número más grande en A' es menor ( <=) que el enésimo número más grande en B '.
L\n\nL
,CCCCC\nCCCCC\nC..CC\nCCCCC
(.
representa un espacio,\n
representa una nueva línea).