|
|
|
![]() |
|
Strumenti |
![]() |
#21 |
Senior Member
Iscritto dal: May 2008
Messaggi: 533
|
■
Ultima modifica di rеpne scasb : 18-06-2012 alle 15:39. |
![]() |
![]() |
![]() |
#22 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
oh finalmente due uguali
![]()
__________________
![]() |
![]() |
![]() |
![]() |
#23 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Ieee, ci siamo allora, e' il risultato.
Lo do 2 su 5 almeno ![]() ![]()
__________________
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. |
![]() |
![]() |
![]() |
#24 |
Senior Member
Iscritto dal: May 2008
Messaggi: 533
|
■
Ultima modifica di rеpne scasb : 18-06-2012 alle 15:39. |
![]() |
![]() |
![]() |
#25 |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
uff...
sistemato pure io.... avevo fatto il banalissimo errore di mettere l'assegnazione dopo l'if esterno.. ![]() Codice:
string[] content = File.ReadAllLines("RealLine.txt"); Stopwatch watch = Stopwatch.StartNew(); char[] separator = new char[] { ' ' }; var orderedIntervals = (from c in content let tokens = c.Split(separator, StringSplitOptions.RemoveEmptyEntries) let first = double.Parse(tokens[0]) let second = double.Parse(tokens[1]) select new double[] { first <= second ? first : second, first <= second ? second : first }).OrderBy(e => e[0]).ToArray(); double previousRight = double.NegativeInfinity; double total = 0.0; foreach (var interval in orderedIntervals) { double left = interval[0]; double right = interval[1]; if (previousRight <= right) { if (left > previousRight) { total += right - left; } else { total += right - previousRight; } previousRight = right; } } watch.Stop(); Console.WriteLine("Il totale è {0}, calcolato in {1}ms", total, watch.ElapsedMilliseconds); Console.ReadLine(); ![]() l'output è: Codice:
Il totale è 380404,063114734, calcolato in 41ms ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#26 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
17 pure a me
![]() Per il momento ritiro il mio codice perché mi sono accorto che c'è un bug e il risultato, sul file grosso, non è corretto ![]() |
![]() |
![]() |
![]() |
#27 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
dopo aver sostituito CLK_TCK con CLOCKS_PER_SEC, che altrimenti mi dava errore in compilazione, il tuo codice mi va in segmentation fault.. ![]() Lo sto usando su Mac Os X Leopard 10.5.7 compilato con XCode.... ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#28 |
Senior Member
Iscritto dal: May 2008
Messaggi: 533
|
■
Ultima modifica di rеpne scasb : 18-06-2012 alle 15:39. |
![]() |
![]() |
![]() |
#29 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Per velocizzare la ricerca dei sovrapposti ho mantenuto 2 Indici, e con un paio di filtri e operazioni insiemistiche riduco l'insieme dei controlli. Tra il dire e il fare c'e' di mezzo l'Italiano, dato che l'algoritmo in realta' sono una dozzina di righe abbastanza semplici.
__________________
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. |
|
![]() |
![]() |
![]() |
#30 | |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
A me il codice di repne funziona perfettamente:
![]() La macchina è questa: Quote:
![]() |
|
![]() |
![]() |
![]() |
#31 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
mi sa che il problema è che avevo cambiato i punti in virgole nel file originale perchè mi scaramellavo ad utilizzare il CultureInfo ![]() ci mette 250ms circa sul mio....
__________________
![]() |
|
![]() |
![]() |
![]() |
#32 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
strano che sul mio xp virtualizzato sia così lento quello di repne.... ![]() puoi fare girare il mio codice sulla tua macchina per vedere quanto ci mette? ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#33 |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Ma il tuo com'e'? L'hai aggiustato?
__________________
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. |
![]() |
![]() |
![]() |
#34 |
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
|
![]() |
![]() |
![]() |
#35 | ||
Bannato
Iscritto dal: Mar 2008
Città: Villabate(PA)
Messaggi: 2515
|
Quote:
![]() Quote:
![]() EDIT: Riguardando il tuo codice m'è venuto un dubbio atroce: si tratta, per caso, di C# e io sto tentando di eseguirlo con l'interprete Ruby? EDIT 2: Si, è C# ![]() ![]() Ultima modifica di Vincenzo1968 : 26-06-2009 alle 22:56. |
||
![]() |
![]() |
![]() |
#36 |
Senior Member
Iscritto dal: May 2008
Messaggi: 533
|
■
Ultima modifica di rеpne scasb : 18-06-2012 alle 15:39. |
![]() |
![]() |
![]() |
#37 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Che strano. 17 e 13.5 si, il grosso no. Può essere un errore teorico?
Ho usato un albero BSP. I nodi contengono segmenti. L'idea è quella di prendere i segmenti in entrata e costruire un albero che abbia come valori segmenti che non si sovrappongono. Quando un segmento si sovrappone ad un altro: Codice:
------------------ ++++++++++++++++ Codice:
----------oooooooo+++++++++ Se il segmento inserito non si sovrappone a quello del nodo corrente allora il segmento finisce nel sottoalbero destro o sinistro, a seconda che il punto medio del nuovo segmento sia minore o maggiore del punto medio del segmento corrente. Poichè i nodi dell'albero così costruito contengono segmenti disgiunti il risultato cercato è la somma delle estensioni dei segmenti contenuti in tutti i nodi. Mi da 13.5, mi da 17 ma non mi da 380404,063114734. Mi perde per strada qualche segmento durante la lettura o è la parte teorica che non quaglia?
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#38 | |
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
Quote:
prova pure tu ad usare quello casomai e vedi se ci sono differenze..... Si cmq era C#, anche se in effetti avrei dovuto specificarlo dato che nei contest ne uso uno a caso tra C#, python e ruby ![]() Ad onor del vero questo avevo iniziato a farlo in F#, ma mi sono rotto subito perchè ancora non lo so usare per bene ![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#39 | |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2775
|
Quote:
|
|
![]() |
![]() |
![]() |
#40 | |
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Quote:
Ho creato un mostro...
__________________
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. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:26.