Ein zweigeteiltes Diagramm ist ein Diagramm, dessen Scheitelpunkte in zwei nicht zusammenhängende Gruppen unterteilt werden können, sodass keine Kante zwei Scheitelpunkte in derselben Gruppe verbindet. Ein Graph ist genau dann zweiteilig, wenn er zweifarbig ist.
Herausforderung
Ihre Aufgabe ist es, anhand der Adjazenzmatrix eines ungerichteten einfachen Diagramms zu bestimmen, ob es sich um ein zweigliedriges Diagramm handelt. Das heißt, wenn eine Kante die Eckpunkte i und j verbindet, sind sowohl der (i, j) als auch der (j, i) Eintrag der Matrix 1.
Da der Graph ungerichtet und einfach ist, ist seine Adjazenzmatrix symmetrisch und enthält nur 0 und 1.
Besonderheiten
Sie sollten eine N-mal-N-Matrix als Eingabe verwenden (in beliebiger Form, z. B. Liste der Listen, Liste der Zeichenfolgen, C-ähnlich int**
und Größe, abgeflachtes Array, unformatierte Eingabe usw.).
Die Funktion / das Programm sollte einen Wahrheitswert zurückgeben / ausgeben, wenn der Graph zweiteilig ist, und ansonsten falsch.
Testfälle
['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
Wertung
Builtins, die die Antwort direkt berechnen, sind gesperrt.
Das ist Code-Golf , also gewinnt das kürzeste Programm (in Bytes) bis Ende dieses Monats!
-1
für Falsch und für Wahr eine nicht negative ganze Zahl zurückgeben?
0
-> Falsy, >0
-> Truthy wird im Allgemeinen durch Standardregeln für Wahrheiten / Falschheiten zugelassen. -1
und ≥ 0
ist nicht so verbreitet, deshalb habe ich gefragt.