Torna indietro   Hardware Upgrade Forum > Software > Programmazione

TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra abbina per la prima volta un pannello AMOLED alla tecnologia NXTPAPER con finitura opaca, affiancandoci una fotocamera periscopica da 50 MP con zoom ottico 3x, il SoC Dimensity 7400 Elite e una batteria da 5.800 mAh. Nella prova sul campo emergono luminosità di picco molto elevata, comparto fotografico solido per la fascia di prezzo e autonomia nella media, a fronte di velocità di scrittura dello storage piuttosto contenute
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio
HUAWEI MatePad Air combina diverse carte molto interessanti: un OLED PaperMatte da 12 pollici, un corpo sottile e una tastiera molto comoda. Durante la prova abbiamo apprezzato fluidità, audio e comfort visivo, mentre i test hanno chiarito pregi e qualche limite nelle prestazioni. L'autonomia ha convinto anche nell'uso intermittente; la scelta passa dalla compatibilità delle proprie app e dal valore del pacchetto con accessori, proposto a 749 euro
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica
Debuttano ufficialmente i primi sistemi notebook basati su piattaforma NVIDIA RTX Spark, abbinati a Windows on ARM e pensati per l'intelligenza artificiale agentica. Architettura integrata tra CPU e GPU che condividono la memoria di sistema, capace di gestire in locale modelli molto grandi ma al contempo anche di spiccare con la grafica e l'elaborazione
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-04-2009, 14:32   #1
L\'Esecutore
Senior Member
 
L'Avatar di L\'Esecutore
 
Iscritto dal: Jan 2002
Città: Provincia Varese
Messaggi: 217
Scelta struttura dati

Devo realizzare il progetto spiegato dopo in C, non vi chiedo grossi aiuti, solo di aiutarmi a scegliere le strutture dati più adeguate. Non ci possono essere vincoli di dimensione, quindi le matrici vanno escluse. Devo tenere conto delle prestazioni quindi le scelte devono portarmi a evitare che le operazioni richieste abbiano costi eccessivi. Grazie mille, ogni aiuto è gradito

Quote:
Le tessere del mosaico sono costituite da quadrati di lato 1. Due tessere sono definite adiacenti se i corrispondenti quadrati hanno un lato in comune. Un mosaico ` un insieme di tessere connesse almeno per un lato: cioè deve essere possibile percorrere l’intero mosaico muovendosi tra tessere adiacenti.
Il programma dovrà definire una struttura dati per l’oggetto mosaico e permettere le seguenti operazioni:
- nuovo()
Inizializza un nuovo mosaico con una sola tessera in posizione (0,0) (definite un opportuno sistema di riferimento), eventualmente cancellando il mosaico precedente.
- inserisci a caso()
Aggiunge al mosaico corrente un quadrato in una posizione scelta a caso tra le ammissibili (ossia con probabilità pari a 1 diviso il numero di posizioni ammissibili).
- inserisci(x, y)
Aggiunge al mosaico un quadrato in posizione (x, y) se la posizione è ammessa, altrimenti segnala un errore.
- perimetro()
Restituisce il perimetro del mosaico corrente (ossia il numero di lati liberi da quadrati)
- ordine()
Restituisce l’ordine del mosaico, ossia la lunghezza del lato del più piccolo quadrato che può contenere il mosaico.
- costruisci(n)
Costruisce un mosaico formato da n quadrati invocando n volte l’operazione inserisci a caso().

(Mantenete una struttura dati apposita per le posizioni ammissibili, vi servirà per facilitare l’estrazione casuale di una posizione ammissibile nell’operazione inserisci a caso(). )
__________________
La risposta non la devi cercare fuori, la risposta è dentro di te. Epperò è ... quella sbagliata! - Quelo

Ultima modifica di L\'Esecutore : 03-04-2009 alle 14:36.
L\'Esecutore è offline   Rispondi citando il messaggio o parte di esso
Old 05-04-2009, 15:03   #2
L\'Esecutore
Senior Member
 
L'Avatar di L\'Esecutore
 
Iscritto dal: Jan 2002
Città: Provincia Varese
Messaggi: 217
Up
__________________
La risposta non la devi cercare fuori, la risposta è dentro di te. Epperò è ... quella sbagliata! - Quelo
L\'Esecutore è offline   Rispondi citando il messaggio o parte di esso
Old 05-04-2009, 15:19   #3
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Potresti usare un albero a quadranti. Non ho capito bene la distinzione tra ordine e perimetro ma dovrebbero diventare entrambi funzione della profondità dell'albero.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 05-04-2009, 15:27   #4
L\'Esecutore
Senior Member
 
L'Avatar di L\'Esecutore
 
Iscritto dal: Jan 2002
Città: Provincia Varese
Messaggi: 217
Io me lo sono immaginato come un piano cartesiano, la prima tessera sta in (0,0).
Se ho 3 tessere rispettivamente in(0,-1), (0,0), (0,1) il mio mosaico avrà ordine 3 e perimetro 8.
__________________
La risposta non la devi cercare fuori, la risposta è dentro di te. Epperò è ... quella sbagliata! - Quelo
L\'Esecutore è offline   Rispondi citando il messaggio o parte di esso
Old 05-04-2009, 16:06   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Carta e penna alla mano dopo un paio di scarabocchi mi risulta papabile un quadtree costruito dal basso.

In pratica quando introduci la prima tessera crei un quadrante senza genitore di lato unitario e posizione (xa,ya)

Quando introduci la seconda tessera crei un secondo quadrante senza genitore di lato unitario e posizione (xb,yb)

Dopodichè unisci i due quadranti con un parente comune di lato Max(xb-xa, yb-ya)

In generale per unire due quadranti in un genitore devi determinare il minimo quadrante sufficiente a contenerli entrambi partendo dalla radice dell'albero.

Il quadrante esiste se la sua superficie è contenuta nella radice dell'albero. Altrimenti occorrerà congiungere la radice alla foglia inserendo tutti i nodi del ramo a cui la foglia appartiene.

Risulta a questo punto che il perimetro dell'albero sia il perimetro della radice e l'ordine il lato della stessa.

L'albero ti consente di determinare con efficienza se le posizioni astrattamente accessibili che crei quando introduci una nuova tessera siano effettivamente disponibili.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 05-04-2009, 17:03   #6
L\'Esecutore
Senior Member
 
L'Avatar di L\'Esecutore
 
Iscritto dal: Jan 2002
Città: Provincia Varese
Messaggi: 217
Non ho molta familiarità sui quadtree, ora vedo di fare qualche tentativo.
Grazie dell'aiuto, spero di riuscire a metterlo in pratica
__________________
La risposta non la devi cercare fuori, la risposta è dentro di te. Epperò è ... quella sbagliata! - Quelo
L\'Esecutore è offline   Rispondi citando il messaggio o parte di esso
Old 06-04-2009, 12:16   #7
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Io invece ti propongo tale classe (Beh, in C un insieme di strutture dati e di funzioni).
Per memorizzare le tessere del mosaico gia' inserite userei una Lista di coordinate.
Per memorizzare le posizioni papabili per i prossimi inserimenti userei un'altra Lista di coordinate, da aggiornarsi ogni volta che si inserisce una nuova tessera.
La funzione per verificare se una coordinata e' possibile e' banalmente la ricerca in quest'ultima lista.
le funzioni di inserimento e cancellazione, quest'ultima necessaria per la lista dei papabili, sarebbero quindi O(N Log N) come da lista.
La funzione perimetro dovrebbe essere semplicmente la lunghezza della lista dei papabili, quindi O(1). Non ho capito nel caso di buchi interni se il perimetro li deve considerare. Questo approccio lo farebbe.
Per la funzione ordine dovrebbe essere sufficiente tenere a mente la massima coordinata X e la massima coordinata Y (ed evenutlamente anche le minime, nel caso di coordinate negative), durante l'inserimento di una nuova tessera, quindi di nuovo O(1)


Poi in realta' io userei 2 Hashtable con chiave doppia al posto delle 2 liste, dove le 2 chiavi sarebbero ovviamente le coordinate.
In tal modo anche tutte le funzioni di inserimento e cancellazione sarebbero con complessita' O(1). Avresti quindi tutto in O(1), direi con conseguente massimo dei voti.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 06-04-2009 alle 12:20.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 08-04-2009, 13:56   #8
L\'Esecutore
Senior Member
 
L'Avatar di L\'Esecutore
 
Iscritto dal: Jan 2002
Città: Provincia Varese
Messaggi: 217
La hashtable mi piace molto come soluzione, ma temo che per questo progetto sia fuori discussione
__________________
La risposta non la devi cercare fuori, la risposta è dentro di te. Epperò è ... quella sbagliata! - Quelo
L\'Esecutore è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Motorola razr fold, dalla conchiglia al formato a libro. La recensione Motorola razr fold, dalla conchiglia al formato ...
Recensione Google Pixel Watch 5: sembra lo stesso, ma al polso la differenza si sente Recensione Google Pixel Watch 5: sembra lo stess...
Apple punta sull'intelligenza artificial...
A Firenze Huawei prepara la rete al traf...
Call of Duty: Modern Warfare 4 conquista...
Uncharted arriva su PC con un porting no...
Autistici/Inventati, sequestrato un serv...
Google Home Speaker scarica centinaia di...
Arriva nel 2027 il robot umanoide che la...
Mini compressore d'aria a 23,99€: 150 PS...
Elettricità dal calore di un vulc...
Chi non aggiorna Plex Media Server risch...
I 3 robot lavapavimenti più interessanti...
Acer Nitro V 15 con Intel Core 9 270H e ...
I 3 monitor gaming più interessanti su A...
L'industria dei videogiochi sta facendo ...
Torna a 32,39€ con coupon: caricatore US...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:28.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v