定義
矢印行列はあるマトリックスのすべてのエントリに等しいた0主対角、一番上の行と一番左の列にものを除きます。つまり、マトリックスは次のようになります。
* * * * * * * * 0 0 0 0 * 0 * 0 0 0 * 0 0 * 0 0 * 0 0 0 * 0 * 0 0 0 0 *
各*はゼロ以外のエントリです。
仕事
非負の整数の正方行列が与えられた場合、上記の定義に従って矢じりかどうかを確認します。
配列に相当する言語がポインターや長さ(Cなど)のようなものでない限り、入力として行列のサイズを使用することはできません。常に少なくとも3 x 3になります。
入出力
入力を受信するために、次の形式のいずれかを選択できます。
- ネイティブマトリックスタイプのマトリックス(言語にマトリックスがある場合)
- 2D配列1(それぞれが1行に対応する1D配列の配列)
- 1D配列(行列は常に正方形であるため)
- 文字列(スペースを選択しましたが、これを悪用しないでください)。
出力の提供に関しては、標準の決定問題の定義に従って真実/偽の値を報告するか、2つの異なる一貫した値を選択できます。
さらに、これらの抜け穴はデフォルトで禁止されていることに注意しながら、任意のプログラミング言語で、任意の標準メソッドを介して入力および出力を行うことができます。他の形式を選択したい場合、または何かについて不明な点がある場合は、コメントでお問い合わせください。
1:またはあなたの言語に相当するもの(リスト、ベクターなど)
例
次の例を見てみましょう。
1 2 2 2 2 1 0 0 3 0 1 0 4 0 0 1
これは矢印の行列です(プログラムは真の値を報告する必要があります)。なぜなら、主対角線上の要素1 1 1 1
はで1 2 2 2
あり、最上行の要素はであり、左端の列の要素はであるため1 2 3 4
です。他のすべてのエントリは0であるため、これはすべての条件を満たします。
3 5 6 7 1 0 8 0 0
主対角線上に0があるため、この行列は矢印ではありません。
9 9 9 9 9 9 0 0 9 7 9 0 9 0 0 9
0の代わりに7が含まれているため、これも矢印ではありません。
より多くのテストケース
真実:
[[1、1、1]、[1、1、0]、[1、0、1]] [[1、2、3、4]、[1、1、0、0]、[1、0、1、0]、[1、0、0、1]] [[1、2、2、2]、[2、1、0、0]、[3、0、1、0]、[4、0、0、1]] [[34、11、35、5]、[56、567、0、0]、[58、0、679、0]、[40、0、0、7]]
偽物:
[[3、5、6]、[7、1、0]、[8、0、0]] [[9、9、9、9]、[9、9、0、0]、[9、7、9、0]、[9、0、0、9]] [[1、0、3、4]、[1、1、0、0]、[1、0、1、0]、[1、0、0、1]] [[1、6、3、4]、[13、2、0、6]、[29、0、1、0]、[2、0、0、4]]