Contribution
Le plateau: Un conteneur 2D (matrice, liste de listes, etc.) de lettres comme:
["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"]
Si vous choisissez une liste de listes, vous pouvez supposer que toutes les sous-listes sont de la même longueur.
Règles
- Pour faire un rectangle valide, vous avez besoin de tous les coins de rectangle avec la même «lettre».
- Exemple, regardez l' exemple de carte avec X ci-dessous. Vous pouvez voir 'X' sur (1,0) également sur (4,0) également sur (1,3) et sur (4,3) puis vous avez le rectange [1,0,4,3] qui signifie de (1,0) à (4,3):
Exemple de carte avec 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"]
- Le but est de trouver le rectangle ou l'un des rectangles avec la plus grande surface, calculé par (droite-gauche + 1) * (bas-haut + 1)
- S'il existe plusieurs rectangles avec la même zone maximale, sortez-en un. Facultativement celui avec (coordonnée supérieure, coordonnée gauche, coordonnée droite, coordonnée inférieure) lexicographiquement le plus petit.
- Les rectangles doivent avoir des bords parallèles au bord de la planche.
- Chaque lettre est un caractère ASCII imprimable de A à Z (tous deux inclus).
Sortie
La sortie doit être les positions gauche-haut et droite-bas des coins rectangulaires de la plus grande surface. Pour le premier échantillon "board", le grand carré est le jaune:
Et la réponse devrait être:
[1, 1, 8, 4]
Un deuxième exemple de cas de test
Une entrée de:
["C", "D", "D", "D", "A", "A"],
["B", "D", "C", "D", "A", "A"],
["B", "D", "D", "C", "A", "C"],
["B", "D", "B", "C", "A", "C"]
Devrait produire l'une de ces trois listes de coordonnées identifiant une zone de six rectangles:
[1, 0, 2, 2]
[1, 0, 3, 1]
[3, 2, 5, 3]
Cette question est publiée sur Stack Overflow avec le titre: Comment trouver le plus grand rectangle dans un tableau 2D formé de quatre coins identiques? et avec cette solution JS grossière (je peux dire "grossier" car c'est mon code;):
Ok, c'est mon premier post, soyez tolérant avec moi s'il vous plait. Je vais changer tout ce que vous dites pour améliorer le quiz.
((left,top),(right,bottom))
devrait être bien aussi. J'ai supprimé ma réponse et répondez à nouveau lorsque la question est complètement affinée.