Sto scrivendo un GtkGrid -come contenitore per il mio GUI library for Go , e sto provando a scrivere la parte di layout effettiva del codice.
Fondamentalmente, ho una lista non ordinata di controlli. Ogni controllo è un rettangolo e ogni voce di elenco contiene un puntatore al controllo a nord, sud, est e ovest. Quello che non so è come riconvertirlo in una griglia in modo efficiente.
All'inizio pensavo di poter usare "il controllo in alto a sinistra" per contrassegnare (0, 0) sulla griglia. Ma cos'è la parte in alto a sinistra di
[ ][ ][X]
[ ][X][X]
[X][X][X]
Qualsiasi altra soluzione a cui posso pensare corre almeno in tempo O (n ^ k), dal momento che ho bisogno di attraversare la lista più volte per capire quale sia ogni riga, ecc.
Quindi quale altro approccio posso usare? Grazie.
L'algoritmo dovrà essere in grado di iniziare da qualsiasi controllo nell'elenco. (Vai ai programmatori: la ragione è che la lista è una mappa.)
Posso dire che non ci saranno controlli indipendenti (tutti i controlli devono essere collegati ad un altro controllo, ma possono essere attaccati da qualsiasi lato in qualsiasi momento). (Tranne, ovviamente, se esiste un solo controllo, ma immagino che questo scenario cada fuori dalla soluzione.)
(spero che questo sia nel sottodominio giusto ...)