二部グラフは、頂点ないエッジが同じセット内の2つの頂点を接続しないように、2つの互いに素の集合に分割することができるグラフです。グラフが2色である場合にのみ、グラフは2部構成です。
チャレンジ
あなたの仕事は、無向単純グラフの隣接行列を与えられて、それが二部グラフであるかどうかを決定することです。つまり、エッジが頂点iとjを接続する場合、行列の(i、j)と(j、i)の両方のエントリは1です。
グラフは無向で単純なので、その隣接行列は対称であり、0と1のみを含みます。
仕様
入力としてN行N列の行列を使用する必要があります(リストのリスト、文字列のリスト、Cのようなint**
サイズ、フラット化された配列、生の入力など、任意の形式で)。
関数/プログラムは、グラフが2部構成である場合は真偽値を返し、そうでない場合は偽である必要があります。
テストケース
['00101',
'00010',
'10001',
'01000',
'10100'] : False
['010100',
'100011',
'000100',
'101000',
'010000',
'010000'] : True (divide into {0, 2, 4, 5} and {1, 3})
['00',
'00'] : True
得点
答えを直接計算する組み込み関数は禁止されています。
これはcode-golfなので、今月末までに最短のプログラム(バイト単位)が勝ちます!
-1
場合と真実の場合に負でない整数を返すことができますか?
0
> Falsy、>0
-> Truthyは通常、標準の真実/偽のルールで許可されています。-1
そして、≥ 0
私は尋ねた理由です、それは一般的ではありません。