Betrachten Sie binäre Blockdiagonalmatrizen , die quadratische Blöcke von 1s auf der Hauptdiagonale haben und überall sonst 0 sind. Nennen wir solche Matrizen "gültige" Matrizen.
Hier sind zum Beispiel einige gültige 4x4-Matrizen:
1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1
0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 1
0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1
0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1
Beachten Sie, dass eine alternative Art der Beschreibung solcher Matrizen darin besteht, dass es eine Kette von quadratischen 1-Blöcken von oben links nach unten rechts gibt, die Ecke zu Ecke berühren und überall sonst 0 ist.
Im Gegensatz dazu sind hier einige ungültige 4x4-Matrizen:
1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0
1 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0
0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0
Sie werden eine gegeben n
durch n
binäre Matrix als Input - was ist die minimale Anzahl von 0
Bits , die Sie einstellen benötigen , 1
um eine gültigen Matrix zu bekommen?
Sie können eine Funktion oder ein Programm Mitnahmen in jeder geeigneten Zeichenfolge, Liste oder Matrix - Format schreiben repräsentiert eine n
durchn
Matrix von 0 und 1 (solange es nicht vorverarbeitet wird). Zeilen müssen in irgendeiner Weise klar voneinander getrennt sein, sodass Formate wie ein 1D-Array von Bits nicht zulässig sind.
Dies ist Code-Golf , daher ist das Ziel, die Anzahl der Bytes in Ihrem Programm zu minimieren.
Beispiele
Zum Beispiel, wenn die Eingabe ist
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 1
dann ist die Antwort 5, da Sie fünf 0
Bits setzen können, um 1
zu erhalten:
1 0 0 0 0
0 1 1 0 0
0 1 1 0 0
0 0 0 1 0
0 0 0 0 1
und dies ist die erforderliche Mindestanzahl. Wenn jedoch die Eingabe war
0 0 0 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
dann ist die Antwort 24, da die einzige gültige 5x5-Matrix, in der oben rechts 1
steht, die Matrix aller ist1
s ist.
Testfälle
Tests werden hier als 2D-Array von Ganzzahlen dargestellt.
[[0]] -> 1
[[1]] -> 0
[[0,1],[0,0]] -> 3
[[1,0],[0,0]] -> 1
[[0,0,0],[0,1,0],[0,0,0]] -> 2
[[0,1,0],[0,0,0],[0,1,0]] -> 7
[[0,1,0],[1,0,0],[0,0,1]] -> 2
[[1,1,1],[1,1,1],[1,1,1]] -> 0
[[0,0,0,0],[0,0,1,0],[0,1,0,0],[0,0,0,0]] -> 4
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]] -> 8
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,0,1,0]] -> 14
[[0,0,1,0],[0,0,0,0],[0,0,0,0],[0,1,0,0]] -> 14
[[0,0,0,0,0],[0,0,0,0,0],[0,1,0,0,0],[0,0,0,0,1],[0,0,0,0,0]] -> 7
[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,0],[0,0,0,0,1],[0,0,0,0,0]] -> 11
[[0,0,0,0,0],[0,0,1,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,1]] -> 5
[[0,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] -> 24
[[0,0,0,1,0],[0,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] -> 23
[[0,1,0,0,0],[1,0,0,0,0],[0,0,1,0,0],[0,0,0,0,1],[0,0,0,1,0]] -> 4
[[0,1,1,1,0],[0,1,1,0,1],[0,1,1,1,0],[0,1,0,0,1],[0,0,0,0,0]] -> 14
Anmerkungen
- Verwandte Herausforderung: Drucken Sie eine Block-Diagonal-Matrix
- Inspiration: Freedom Factory, Google Code Jam 2016 Problem 2D