Ingresso
Il tabellone: un contenitore 2D (matrice, elenco di elenchi, ecc.) Di lettere come:
["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"]
Se si sceglie un elenco di elenchi, è possibile supporre che tutti gli elenchi secondari abbiano la stessa lunghezza.
Regole
- Per creare un rettangolo valido sono necessari tutti gli angoli del rettangolo con la stessa 'lettera'.
- Esempio, guarda la scheda campione con X a soffietto. Puoi vedere 'X' su (1,0) anche su (4,0) anche su (1,3) e su (4,3) quindi hai la rectange [1,0,4,3] che significa da Da (1,0) a (4,3):
Scheda campione con 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"]
- L'obiettivo è trovare il rettangolo o uno dei rettangoli con l'area più grande, calcolato da (destra-sinistra + 1) * (in basso-in alto + 1)
- Se sono presenti più rettangoli con la stessa area massima, emettere uno qualsiasi. Opzionalmente quello con (coordinata superiore, coordinata sinistra, coordinata destra, coordinata inferiore) lessicograficamente più piccolo.
- I rettangoli devono avere bordi paralleli al bordo della scheda.
- Ogni lettera è un carattere ASCII stampabile dalla A alla Z (entrambi inclusi).
Produzione
L'output dovrebbe essere le posizioni verso l'alto e verso il basso verso il basso degli angoli del rettangolo dell'area più grande. Per la prima "tavola" campione il quadrato grande è quello giallo:
E la risposta dovrebbe essere:
[1, 1, 8, 4]
Un secondo esempio di test case
Un input di:
["C", "D", "D", "D", "A", "A"],
["B", "D", "C", "D", "A", "A"],
["B", "D", "D", "C", "A", "C"],
["B", "D", "B", "C", "A", "C"]
Dovrebbe dare uno di questi tre elenchi di coordinate che identificano un'area sei rettangoli:
[1, 0, 2, 2]
[1, 0, 3, 1]
[3, 2, 5, 3]
Questa domanda è pubblicata su Stack Overflow con il titolo: Come trovare il rettangolo più grande in un array 2D formato da quattro angoli identici? e con questa scortese soluzione JS (posso dire "scortese" perché è il mio codice;):
Ok, è il mio primo post, sii tollerante con me per favore. Cambierò tutto ciò che dici per migliorare il quiz.
((left,top),(right,bottom))dovrebbe andare bene. Ho cancellato la mia risposta e rispondo di nuovo quando la domanda è completamente raffinata.
