Esta é a generalização bidimensional deste desafio .
Para os nossos objectivos, uma matriz (ou matriz 2D) Um é considerada uma submatriz de uma outra matriz B , se A pode ser obtido por remoção por completo um número de linhas e colunas de B . (Nota: algumas fontes têm definições diferentes / mais restritivas.)
Aqui está um exemplo:
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 excluir as colunas 2, 3, 5, 6 e as linhas 2, 4 de B para obter 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] _ _ _ _ _ _]
Observe que A ainda é uma submatriz de B se todas as linhas ou colunas de B forem mantidas (ou, de fato, se A = B ).
O desafio
Você adivinhou. Dado número inteiro de dois não-vazia matrizes A e B , determinar se uma é uma submatriz de B .
Você pode escrever um programa ou função, recebendo entrada via STDIN (ou alternativa mais próxima), argumento da linha de comando ou argumento da função e emitindo o resultado via STDOUT (ou alternativa mais próxima), valor de retorno da função ou parâmetro da função (saída).
A entrada pode estar em qualquer formato conveniente. As matrizes podem ser fornecidas como listas aninhadas, seqüências de caracteres usando dois separadores diferentes, listas simples, juntamente com as dimensões da matriz, etc., desde que a entrada não seja pré-processada. Você pode escolher entre B primeiro e A segundo, desde que sua escolha seja consistente. Você pode assumir que os elementos das matrizes são positivos e inferiores a 256.
A saída deve ser verdadeira se A for uma submatriz de B e, caso contrário, será falso . O valor de saída específico não precisa ser consistente.
Aplicam-se as regras padrão de código de golfe .
Casos de teste
Cada caso de teste está em uma linha separada A, B
,.
Casos verdadeiros:
[[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 falsidade:
[[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]]