私のマトリックスアローヘッドですか?

定義

矢頭行列行列つまり、行列は次のようになります。

* * * * * *
* * 0 0 0 0
* 0 * 0 0 0
* 0 0 * 0 0
* 0 0 0 * 0
* 0 0 0 0 *

* はゼロ以外のエントリです。

仕事

Given a square matrix of non-negative integers, check whether it
is arrowhead according to the 定義 above.

あなたの言語が配列に相当するものでなければ、ポインタと長さ(Cのようなもの)でない限り、行列の大きさを入力として取り込まない
かもしれません。それは常に少なくとも3 x 3になります。

各言語の最短コードバイト単位が勝ちます。

入出力

入力を受け取るために、次のいずれかのフォーマットから選択できます。

  • ネイティブマトリックスタイプのマトリックス(あなたの言語にある場合)
  • 2D配列 1 (それぞれ1行に対応する1D配列の配列)
  • 1次元配列(行列は常に正方形なので)
  • 文字列(スペースを選択しましたが、なんらかの方法で乱用しないでください)。

When it comes to providing output, you can either report a
truthy/falsy
value following the standard decision-problem
定義, or choose any two distinct and consistent values.

また、標準的な方法プログラミング言語で使用し、これらの抜け穴はデフォルトでは禁止されています。他の形式を選択したい場合や、何かが不明な場合は、コメントにお尋ねください。

1:またはあなたの言語に相当するもの(リスト、ベクトルなど)

Let’s look at the following 例:

1 2 2 2
2 1 0 0
3 0 1 0
4 0 0 1

主対角線の要素は 1 1 1 1 であり、一番上の行の要素は 1 2 2 2
であるため、これは矢印の行列です(プログラムは真理値を報告する必要があります) code>、最も左の列にあるのは 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]]
ベストアンサー

Javascript(ES6)、 48 47バイト

edc65のおかげで1バイト保存

m=>m.some((r,y)=>r.some((c,x)=>(x*y&&x!=y)^!c))

矢頭行列の場合は false
を返し、真矢印と偽を表すために2つの異なる値を使用できるため、矢印のない行列の場合は true

テストケース:

<div class=”snippet” data-lang=”js” data-hide=”true”
data-console=”true” data-babel=”false”> <div
class=”snippet-code snippet-currently-hidden”>

f=m=>m.some((r,y)=>r.some((c,x)=>(x*y&&x!=y)^!c))
console.log(f([[1, 1, 1], [1, 1, 0], [1, 0, 1]]))
console.log(f([[1, 2, 3, 4], [1, 1, 0, 0], [1, 0, 1, 0], [1, 0, 0, 1]]))
console.log(f([[1, 2, 2, 2], [2, 1, 0, 0], [3, 0, 1, 0], [4, 0, 0, 1]]))
console.log(f([[34, 11, 35, 5], [56, 567, 0, 0], [58, 0, 679, 0], [40, 0, 0, 7]]))
console.log(f([[3, 5, 6], [7, 1, 0], [8, 0, 0]]))
console.log(f([[9, 9, 9, 9], [9, 9, 0, 0], [9, 7, 9, 0], [9, 0, 0, 9]]))
console.log(f([[1, 0, 3, 4], [1, 1, 0, 0], [1, 0, 1, 0], [1, 0, 0, 1]]))
console.log(f([[1, 6, 3, 4], [13, 2, 0, 6], [29, 0, 1, 0], [2, 0, 0, 4]]))

</div> </div>

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です