Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Algoritmo ricostruzione incolonnamento corretto matrice orari
martedì 23 giugno 2015 - 12.12
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Mrk31
Profilo
| Newbie
17
messaggi | Data Invio:
mar 23 giu 2015 - 12:12
Ciao a tutti,
ho un problema e non riesco a trovare un algoritmo per risolverlo.
Ho una matrice contenente degli orari (data e ora) strutturata in questo modo:
479x154
32Kb
Ogni riga rappresenta un giorno della settimana
Le colonne sono divise in 4 fasce orarie ed ogni fascia ha un orario di Inizio ed uno di Fine:
-Ogni fascia può andare da 00:00 a 23:59
-le fasce sono ordinate in modo crescente
-le fasce non possono sovrapporsi ed ovviamente l'orario di inizio deve essere minore a quello di fine, Escluso il caso orario vuoto (00:00 To 00:00).
La matrice però viene "salvata" eliminado le fasce vuote ed allineata a sinistra:
E.G. la riga F1(00:00 To 00:00); F2(11:00 To 12:00); F3(00:00 To 00:00); F4(16:00 To 17:00)
Viene salvata come:F1(11:00 To 12:00); F2(16:00 To 17:00) F3(00:00 To 00:00); F4(00:00 To 00:00);
Avrei bisogno di creare una finzione "inversa" a quella di salvataggio che prenda la matrice salvata e ripristini le fasce vuote visualizzandole incolonnate al posto "giusto":
Ad esempio tutte le fasce 11:00 To 12:00 nella stessa colonna per ogni giorno della settimana
Casi particolari:
- Essendo "ordinate" in modo crescente il valore 00:00 sarà ammesso in una fascia non vuota solamante come valore di inizio
- Le fasce non uguali andrebbero "centrate" secondo la fascia più logica
Es:
--> Ho tutti i giorni (Spesso) la fascia 2 11:00 To 12:00, Un giorno "trovo" una fascia 11:00 To 12:30 la incolonno in fascia 2
--> Ho tutti i giorni (Spesso) la fascia 2 11:00 To 12:00, Un giorno "trovo" una fascia 10:30 To 12:00 la incolonno in fascia 2
Non è indispensabile che l'algoritmo sia ottimo, basta che funzioni.
Ho un paio di spunti che mi sono venuti in mente:
- Se la fascia è completa (No fasce vuote) è già a posto e posso usarla come base/riferimento per le altre
- Altrimenti cerco la fascia più "completa" possibile
- inizio ad incolonnare le fasce Identiche a quella di riferimento
- passo a cercare le fasce con solo l'inizio o la fine uguali a quelle già ordinate
- Come gestisco eventuali conflitti??? (Più ipotesi "plausibili" possibili)
- Una fascia con inizio 00:00 non vuota è sicuramente la "non Vuota" più a sinistra, ma non è' necessariamente la fascia1 (ad esempio se l'orario di fine "matcha" con l'orario di fine di una fascia diversa dalla prima nella "riga di riferimento")
Considerazione analoga per una fascia con fine alle 23:59
Un algoritmo realizzato con queste considerazioni, farebbe computazionalmente "schifo" perchè precorrerrebbe sqriate volte la matrice ed in più non è sicuro/dimostrabile che riesca ad incolonnare tutte le righe.
N.B. non sono interesato al fatto che ricostruisca l'incolonnamento originale, ma quello più logico:
E.G. se la riga di origine fosse incolonnata male la "ricostruzione" mi restituirebbe un incolonnamento diverso, ma più logico.
Vi ringrazio in anticipo per l'aiuto.
P.S. devo farlo in VB .Net ma anche se scrivete in pseudocodice va benissimo.
P.S.2 altra idea, ma che non so come utilizzare di preciso potrebbe essere il tenere traccia di tutte le fasce differenti presenti nella matrice ordinate in ordine crescente per trovare le "simili".
Gluck74
Profilo
| Guru
1.359
messaggi | Data Invio:
mar 29 set 2015 - 10:11
Non ci ho capito un cavolo......
Le considerazioni che fai, sono per riga (giorno) o per colonna (fascia x)????
Puoi fare qualche esempio preciso basandoti sulla foto?
Grazie
____________
http://glucolo.wordpress.com
Ricordati di utilizzare il tasto "Accetta" se i nostri consigli ti sono serviti a risolvere il problema.
È il modo per ringraziare chi ti ha aiutato.
Mrk31
Profilo
| Newbie
17
messaggi | Data Invio:
mar 29 set 2015 - 15:18
Ciao,
grazie lo stesso, ma ho risolto cambiando completamente grafica...adesso "coloro" un datagridview in corrispondenza della fascia inserita...
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !