Esta es la generalización bidimensional de este desafío .
Para nuestros propósitos, una matriz (o matriz 2D) A se considera una submatriz de otra matriz B , si A se puede obtener mediante la eliminación por completo un número de filas y columnas de B . (Nota: algunas fuentes tienen definiciones diferentes / más restrictivas).
Aquí hay un ejemplo:
A = [1 4 B = [1 2 3 4 5 6
2 1] 6 5 4 3 2 1
2 1 2 1 2 1
9 1 8 2 7 6]
Podemos eliminar las columnas 2, 3, 5, 6 y las filas 2, 4 de B para obtener A :
B = [1 2 3 4 5 6 [1 _ _ 4 _ _ [1 4 = A
6 5 4 3 2 1 --> _ _ _ _ _ _ --> 2 1]
2 1 2 1 2 1 2 _ _ 1 _ _
9 1 8 2 7 6] _ _ _ _ _ _]
Tenga en cuenta que A sigue siendo una submatriz de B si se retienen todas las filas o todas las columnas de B (o, de hecho, si A = B ).
El reto
Lo adivinaste. Dada número entero dos no vacío matrices A y B , determinar si A es una submatriz de B .
Puede escribir un programa o función, tomando la entrada a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función y generando el resultado a través de STDOUT (o la alternativa más cercana), el valor de retorno de la función o el parámetro de función (out).
La entrada puede estar en cualquier formato conveniente. Las matrices se pueden dar como listas anidadas, cadenas que utilizan dos separadores diferentes, listas planas junto con las dimensiones de la matriz, etc., siempre que la entrada no se procese previamente. Puede elegir tomar B primero y A segundo, siempre que su elección sea consistente. Puede suponer que los elementos de las matrices son positivos y menos de 256.
El resultado debe ser verdadero si A es una submatriz de B y falso de lo contrario. El valor de salida específico no tiene que ser consistente.
Aplican reglas estándar de código de golf .
Casos de prueba
Cada caso de prueba está en una línea separada, A, B
.
Casos verdaderos:
[[1]], [[1]]
[[149, 221]], [[177, 149, 44, 221]]
[[1, 1, 2], [1, 2, 2]], [[1, 1, 1, 2, 2, 2], [3, 1, 3, 2, 3, 2], [1, 1, 2, 2, 2, 2]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [4, 7, 6], [7, 8, 9], [1, 2, 3], [4, 5, 6], [7, 8, 9]]
[[228, 66], [58, 228]], [[228, 66], [58, 228]]
[[1, 2], [2, 1]], [[1, 2, 2], [2, 1, 2], [2, 2, 1]]
[[136, 196], [252, 136]], [[136, 252, 210, 196, 79, 222], [222, 79, 196, 210, 252, 136], [252, 136, 252, 136, 252, 136], [180, 136, 56, 252, 158, 222]]
Casos de falsa:
[[1]], [[2]]
[[224, 15]], [[144, 15, 12, 224]]
[[41], [150]], [[20, 41, 197, 150]]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]], [[1, 2, 3], [7, 8, 9], [4, 5, 6]]
[[1, 2, 2], [2, 1, 2], [2, 2, 1]], [[1, 2], [2, 1]]
[[1, 2, 2], [2, 1, 2]], [[1, 2], [2, 1], [2, 2]]
[[1, 2], [3, 4]], [[5, 3, 4, 5], [2, 5, 5, 1], [4, 5, 5, 3], [5, 1, 2, 5]]
[[158, 112], [211, 211]], [[158, 211, 189, 112, 73, 8], [8, 73, 112, 189, 211, 158], [211, 158, 211, 158, 211, 158], [21, 158, 199, 211, 212, 8]]