私たちの目的では、Bから行と列の数を完全に削除してAを取得できる場合、1つの行列(または2D配列)Aは別の行列Bの部分行列と見なされます。(注:一部のソースには、異なる/より制限的な定義があります。)
以下に例を示します。
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]
Bから列2、3、5、6および行2、4を削除して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] _ _ _ _ _ _]
そのノートAは依然としての部分行列であり、Bのすべての行または列のすべての場合Bが保持される(又は、実際にあればA = B)。
チャレンジ
ご想像の通り。2つの空でない整数行列AとBが与えられた場合、AがBの部分行列かどうかを判定します。
プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。
入力は任意の便利な形式にすることができます。入力が前処理されていない限り、マトリックスはネストされたリスト、2つの異なるセパレーターを使用した文字列、マトリックスの次元に沿ったフラットリストなどとして指定できます。選択に一貫性がある限り、Bを最初に、Aを 2番目に選択することができます。行列の要素は正で、256未満であると仮定できます。
出力があるべきtruthy場合Aはの部分行列であるBとfalsyそう。特定の出力値は一貫している必要はありません。
標準のコードゴルフ規則が適用されます。
テストケース
各テストケースは個別の行にありA, B
ます。
真実の場合:
[[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]]
偽のケース:
[[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]]