Il s'agit de la généralisation bidimensionnelle de ce défi .
Pour nos besoins, une matrice (ou réseau 2D) A est considéré comme un sous - matrice d' une autre matrice B , si A peut être obtenue en retirant complètement un certain nombre de lignes et de colonnes de B . (Remarque: certaines sources ont des définitions différentes / plus restrictives.)
Voici un exemple:
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]
Nous pouvons supprimer les colonnes 2, 3, 5, 6 et les lignes 2, 4 de B pour obtenir 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] _ _ _ _ _ _]
Notez que A est toujours une sous-matrice de B si toutes les lignes ou toutes les colonnes de B sont conservées (ou en fait si A = B ).
Le défi
Tu l'as deviné. Compte tenu de deux matrices entier non vide A et B , déterminer si un est une sous - matrice de B .
Vous pouvez écrire un programme ou une fonction, en prenant une entrée via STDIN (ou l'alternative la plus proche), un argument de ligne de commande ou un argument de fonction et en sortant le résultat via STDOUT (ou l'alternative la plus proche), une valeur de retour de fonction ou un paramètre de fonction (out).
L'entrée peut être dans n'importe quel format pratique. Les matrices peuvent être données sous forme de listes imbriquées, de chaînes utilisant deux séparateurs différents, de listes plates avec les dimensions de la matrice, etc., tant que l'entrée n'est pas prétraitée. Vous pouvez choisir de prendre B en premier et A en second tant que votre choix est cohérent. Vous pouvez supposer que les éléments des matrices sont positifs et inférieurs à 256.
La sortie doit être véridique si A est une sous-matrice de B et fausse sinon. Il n'est pas nécessaire que la valeur de sortie spécifique soit cohérente.
Les règles de code-golf standard s'appliquent.
Cas de test
Chaque cas de test est sur une ligne distincte, A, B
.
Cas véridiques:
[[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]]
Cas de falsification:
[[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]]