Ist es nicht ärgerlich, wenn Sie ein Bild aufnehmen, aber der Hintergrund beeinträchtigt die tatsächliche Substanz des Bildes? Ich würde sagen, dass es so ist. Ich muss wissen, wie viel ich beschneiden soll, damit ich dieses Problem los werde! Aber wie immer bin ich ziemlich faul, also brauche ich jemanden, der das für mich macht ...
Aufgabe & Regeln
Bei einer binären Matrix darstellen , um das Bild, Ausgang der Abmessungen (Breite und Höhe) der kleinsten Untermatrix enthält , die alle s in der ursprünglichen Matrix. Eine Untermatrix ist ein Block benachbarter Einträge aus der ursprünglichen Matrix. Entsprechend ist es eine neue Matrix, die durch Überlappen einer Teilmenge benachbarter Zeilen und einer Teilmenge benachbarter Spalten des Originals gebildet wird.
- Es ist erlaubt, die Breite und die Höhe der Matrix als Eingabe zu verwenden.
- Die Eingabe enthält garantiert mindestens eine .
- Sie können Eingaben und Ausgaben mit jeder Standardmethode vornehmen , wobei zu beachten ist, dass diese Lücken standardmäßig verboten sind. Das ist Code-Golf , also versuchen Sie, die Aufgabe in den wenigsten Bytes zu erledigen, die Sie in der Sprache Ihrer Wahl verwalten können.
Beispiel
Testfälle
Eingabe | Ausgabe [[0,1,0,0,0,1,0]] -> (5,1) oder (1,5) [[0,0,0,0,0], [0,1,0,1,0], [0,0,1,0,0]] -> (3,2) oder (2,3) [[1,1,1,1], [0,0,0,0], [0,0,0,0], [1,0,0,0]] -> (4,4) [[0,0,0,0,0,0], [0,1,0,1,0,1], [0,0,0,0,0,0]] -> (5,1) oder (1,5) [[0,0,0,0,0], [0,1,0,1,0], [0,0,1,0,0], [0,1,0,1,0], [ 0,0,0,0,0]] -> (3,3) [[0,0,0,0,0,0], [0,1,0,1,0,0], [0,1,1,0,1,1], [0,0,1, 0,1,0], [0,0,0,0,0,0]] -> (5,3) oder (3,5)
quelle
Antworten:
MATL , 5 Bytes
Probieren Sie es online! Oder überprüfen Sie alle Testfälle .
Erläuterung
quelle
APL (Dyalog Unicode) , 10 Byte SBCS
Anonyme implizite Präfixfunktion.
Probieren Sie es online!
⍸
Indizes von 1s.(
…)
Wenden darauf folgende implizite Funktion an:⌊/
das Minimum (niedrigste y- Koordinate und niedrigste x- Koordinate)⌈/-
das Maximum minus das (dies gibt uns die Reichweite)1+
eins plus das (um inklusive zu sein)quelle
Oktave ,
57 5645 BytesHier
find
macht das schwere Heben: Es sindfinds
die Zeilen- und Spaltenindizes der Nicht-Null-Einträge. Dann müssen wir nur die Differenz zwischen dem Maximum und dem Minimum (plus eins) für jeden von diesen separat finden.Vielen Dank an @beaker und @AndrasDeak für -1 Byte und @LuisMendo für -11 Byte!
Probieren Sie es online!
quelle
Python 2 ,
92-86BytesProbieren Sie es online!
quelle
Gelee , 7 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2 ,
63-55Bytes-8 mit Hilfe von Vincent (nimm die Eingabematrix als Numpy-Array)
Eine unbenannte Funktion, die ein 2 - d - Numpy - Array von Ganzzahlen (in
{0,1}
) das eine Liste von Ganzzahlen zurückgibt.[width,height]
.Probieren Sie es online!
Non-Numpy-Version in 63 Bytes (unter Annahme einer Liste von Listen mit ganzen Zahlen in
{0,1}
):Probieren Sie es online!
Wie?
Wenn eine Matrix gegeben ist
a
, wirdfor
jedes (v
) der Transponiertenzip(*a)
, unda
selbst wir die Höhe finden erforderlich (angesichts der transponieren dies ist die Weite).Durch Mapping
max
über wirdv
eine Liste von Nullen und Einsen erstellt, die angibt, ob jede Zeilev
Einsen enthält. Die Zeichenfolgendarstellung dieser Liste wird mit backticks (`...`
) ermittelt. Dies ergibt eine Zeichenfolge mit einem führenden Zeichen[
und den durch,
(Komma + Leerzeichen) getrennten Nullen und Einsen . Wir schneiden diese Zeichenfolge beginnend mit Index eins in Dreierschritten, indem[1::3]
wir nur eine Zeichenfolge mit Nullen und Einsen erhalten, wodurch wir die Zeichenfolgenfunktion verwenden könnenstrip
, um die äußeren Nullen zu entfernen (strip('0')
) .Beispielsweise:
quelle
Retina 0.8.2 , 83 Bytes
Probieren Sie es online! Erläuterung:
Löschen Sie führende und nachfolgende Nullzeilen.
Entfernen Sie alle
0
s in den Zeilen über dem letzten. Entfernen Sie alle1
s zwei, aber ändern Sie1
in diesem Fall die Ziffer in der nächsten Zeile in a . Dies ist bitweise oder die Zeilen zusammen.Zählen Sie die Anzahl der Zeilen als Anzahl der Zeilenumbrüche plus 1 und die Anzahl der Spalten als Anzahl der Stellen zwischen der ersten und der letzten 1.
quelle
J , 31 Bytes
Probieren Sie es online!
Erläuterung:
quelle
q / kdb +, 16 Bytes
quelle
Mathematica, 34 Bytes
Funktion pur. Nimmt eine verschachtelte Liste von Ganzzahlen als Eingabe und gibt eine Liste von zwei Ganzzahlen (die Höhe, gefolgt von der Breite) als Ausgabe zurück. Das Unicode-Zeichen ist U + F3C7 für
\[Transpose]
.quelle
R ,
4846 BytesProbieren Sie es online!
-2 Bytes von Giuseppe gespeichert.
quelle
05AB1E ,
119 Bytes-2 Bytes dank @ Mr.Xcoder .
Probieren Sie es online aus oder überprüfen Sie alle Testfälle .
Erläuterung:
quelle
ζ‚Oε0Û0Üg
Spart 2 Bytes.Gelee , 9 Bytes
Probieren Sie es online!
quelle
Haskell , 76 Bytes
Probieren Sie es online!
quelle
Japt,
1615 BytesProbieren Sie es aus oder führen Sie alle Testfälle aus
Erläuterung
quelle
Ruby , 60 Bytes
Probieren Sie es online!
quelle