HACKING 120% {Hacking, programmazione, computer & molto altro}

[Esercizio] Somma di due numeri uguale a zero

« Older   Newer »
  Share  
RootkitNeo
view post Posted on 10/9/2013, 23:29     +1   -1




Se non ricordo male è coretto quel valore.

Ad ogni modo, quel linguaggio del ca22o con cui programmi non ti permette di sapere molte cose (e non voglio dire che Python sia un linguaggio poco potente e che faccia "cacare"). Nel caso specifico di Java quella funzione da sola non viene compilata, anzi, un file con quella singola funzione (si chiamano metodi in realtà) genera un errore in quanto deve essere posta in una classe. Inoltre serve un metodo main; al suo interno carico l'elenco di numeri e lo passo alla funzione che ho mostrato li.
Ho evitato di postarla in quanto avrei mostrato molte righe in più che non servivano a nulla.

La ricerca binaria è un algoritmo molto potente in questi casi e quando i numeri sono ordinati (anzi, devono esserlo). Dati N numeri, il caso peggiore corrisponde al caso medio ed è O(log N) (approssimativamente). Il che significa che ha complessità logaritmica.
Prendendo il tempo prima della lettura dei numeri, il tempo impiegato è 1.3 secondi. Se lo prendi dopo, quindi dopo averli letti, allora è di 0.22 secondi. In questo caso contare il tempo di carica dei dati è errato, in quanto sono da caricare per forza; la differenza la fa la parte successiva.

Penso di aver scritto tutto. lol
In caso di domande chiedi/chiedete.
 
Top
*Atwa*
view post Posted on 11/9/2013, 00:13     +1   -1




E' da un bel po' che non programmo, comunque:
Il codice è in python.
Creo due insiemi: neg_abs(insieme dei valori assoluti dei numeri negativi) e pos(insieme dei numeri positivi); una volta caricati i dati nei due insiemi, faccio l'intersezione così da avere l'insieme delle coppie.
CODICE
def letsdothat(filename):
   tmp = open(filename, 'r')
   data = tmp.readlines()
   tmp.close()
   neg_abs = set()
   pos = set()    
   for x in data:
       current = int(x[:-1])
       if current > 0:
           pos.add(current)
       else:
           neg_abs.add(abs(current))
   result = len(pos.intersection( neg_abs))
   return result


print letsdothat("1Mints.txt")


Numero di coppie:
249838

ci mette circa 5 secondi in tutto.

Ciaociao :)
 
Top
view post Posted on 11/9/2013, 00:24     +1   -1
Avatar

Water can take unforseen forms.

Group:
Founder
Posts:
5,273
Reputation:
+1,147
Location:
Shabang

Status:


Hai detto tu stesso che le righe di java che non hai postato sono INUTILI (tue parole), in python non vanno messe o se vuoi puoi metterle (in progetti più complessi la oop diventa obbligatoria, ovviamente :)).

Insultare python è veramente una cosa stupida, perché è il linguaggio -didatticamente, scervelloticamente ( puoi fare quello che vuoi senza scrivere righe inutili e puoi fare tutto in una riga! ) e facilmente parlando- migliore insieme a ruby.

Edited by Wet Water - 11/9/2013, 01:41
 
Web  Top
RootkitNeo
view post Posted on 11/9/2013, 02:34     +1   -1




CITAZIONE (Wet Water @ 11/9/2013, 01:24) 
Hai detto tu stesso che le righe di java che non hai postato sono INUTILI (tue parole), in python non vanno messe o se vuoi puoi metterle (in progetti più complessi la oop diventa obbligatoria, ovviamente :)).

Insultare python è veramente una cosa stupida, perché è il linguaggio -didatticamente, scervelloticamente ( puoi fare quello che vuoi senza scrivere righe inutili e puoi fare tutto in una riga! ) e facilmente parlando- migliore insieme a ruby.

Ma hai letto ciò che ho scritto? Ho detto che lo reputo un linguaggio del cazzo, ma ho precisato che non mi riferisco alla potenza, alla facilità ed a tutto ciò che vuoi.

Ad ogni modo è uno di qui linguaggi che ti costringe ad impararlo per capirlo, in quanto un codice compatto scritto in una riga non si riesce a leggere se non si conosce Python o se non si cercano tutte le funzioni utilizzate.

Estrapoli le parole dal contesto e le usi come vuoi. :asd: Quello che tu indichi come inutile (io l'ho inteso diversamente) è ciò che crea una determinata struttura ed un determinato ordine.

Ma ripeto, non sto dicendo che Python non sia da utilizzare.

Comunque anche Pascal era e purtroppo a volte è ancora un linguaggio che viene insegnato perchè didattico, stesso discorso per VB. Addirittura in alcune scuole riescono ad insegnare ancora Cobol.

Il linguaggio migliore rimane C++ per me.

Comunque termino qui l'OT. lol


PS: e scusa i toni un po' "duri" sia qui che in MP.
 
Top
view post Posted on 11/9/2013, 12:03     +1   -1
Avatar

Water can take unforseen forms.

Group:
Founder
Posts:
5,273
Reputation:
+1,147
Location:
Shabang

Status:


Quando capirai wet, saprai che gli piace litigare con la gente :P

Comunque python non è un linguaggio del cazzo, ma è un linguaggio di scripting molto buono, rapido, oop, veloce da scrivere e da imparare.

C++ è il miglior linguaggio di programmazione esistente perché è veloce circa 30 volte python.
 
Web  Top
RootkitNeo
view post Posted on 11/9/2013, 12:42     +1   -1




CITAZIONE (Wet Water @ 11/9/2013, 13:03) 
Quando capirai wet, saprai che gli piace litigare con la gente :P

Comunque python non è un linguaggio del cazzo, ma è un linguaggio di scripting molto buono, rapido, oop, veloce da scrivere e da imparare.

C++ è il miglior linguaggio di programmazione esistente perché è veloce circa 30 volte python.

A volte non scherzo nemmeno io.

Non ho detto che Python non è un buon linguaggio e che non è molto utilizzato, e che non sia molto rapido da apprendere. Rimane comunque del cazzo per me. Il motivo l'ho spiegato nel messaggio precedente.

Non solo per velocità, ma per ciò che puoi fare. Praticamente di tutto.

Ad ogni modo ho usato Java in quanto anche lui non brilla in velocità.
 
Top
*Atwa*
view post Posted on 11/9/2013, 13:52     +1   -1




Direi che siete abbastanza OT. Se volete continuare a discutere dell'argomento allora aprite un nuovo topic.
 
Top
21 replies since 6/9/2013, 22:35   233 views
  Share