Eingang
Die Tafel: Ein 2D-Container (Matrix, Liste der Listen usw.) mit Buchstaben wie:
["B", "C", "C", "C", "C", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "B", "B", "A", "C", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
Wenn Sie eine Liste von Listen auswählen, können Sie davon ausgehen, dass alle Unterlisten gleich lang sind.
Regeln
- Um ein gültiges Rechteck zu erstellen, benötigen Sie alle Rechteckecken mit demselben Buchstaben.
- Schauen Sie sich beispielsweise die Musterplatte mit X- Balg an. Sie können 'X' an (1,0) auch an (4,0) auch an (1,3) und an (4,3) sehen, dann haben Sie den Bereich [1,0,4,3], der von bedeutet (1,0) bis (4,3):
Musterplatine mit X :
["B", "X", "C", "C", "X", "B", "B", "C", "A", "A"],
["B", "A", "C", "B", "B", "A", "B", "B", "A", "A"],
["B", "C", "B", "C", "A", "A", "A", "B", "C", "B"],
["B", "X", "B", "A", "X", "B", "A", "C", "B", "A"],
["A", "A", "A", "C", "A", "C", "C", "B", "A", "C"],
["A", "B", "B", "A", "A", "C", "B", "C", "C", "C"],
["C", "B", "A", "A", "C", "B", "B", "C", "A", "A"]
- Ziel ist es, das Rechteck oder eines der Rechtecke mit der größten Fläche zu finden, berechnet durch (rechts-links + 1) * (unten-oben + 1)
- Wenn es mehrere Rechtecke mit derselben maximalen Fläche gibt, geben Sie eines aus. Optional die mit (obere Koordinate, linke Koordinate, rechte Koordinate, untere Koordinate) lexikographisch kleinste.
- Rechtecke müssen Kanten parallel zur Brettkante haben.
- Jeder Buchstabe ist ein druckbares ASCII-Zeichen von A bis Z (beide enthalten).
Ausgabe
Die Ausgabe sollte die linke Aufwärts- und die rechte Abwärtsposition der Ecken des Rechtecks mit dem größten Bereich sein. Für das erste Muster "Board" ist das große Quadrat das gelbe:
Und die Antwort sollte lauten:
[1, 1, 8, 4]
Ein zweites Beispiel für einen Testfall
Eine Eingabe von:
["C", "D", "D", "D", "A", "A"],
["B", "D", "C", "D", "A", "A"],
["B", "D", "D", "C", "A", "C"],
["B", "D", "B", "C", "A", "C"]
Sollte eine dieser drei Koordinatenlisten ergeben, die einen Bereich mit sechs Rechtecken identifiziert:
[1, 0, 2, 2]
[1, 0, 3, 1]
[3, 2, 5, 3]
Diese Frage wurde auf Stack Overflow mit dem Titel gestellt: Wie finde ich das größte Rechteck in einem 2D-Array, das aus vier identischen Ecken besteht? und mit dieser unhöflichen JS-Lösung (ich kann "unhöflich" sagen, weil mein Code ist;):
Ok, ist mein erster Beitrag, sei bitte tolerant mit mir. Ich werde alles ändern, was Sie sagen, um das Quiz zu verbessern.
((left,top),(right,bottom))in Ordnung sein. Ich habe meine Antwort gelöscht und erneut beantwortet, wenn die Frage vollständig verfeinert wurde.
