To count number of quadruplets with sum = 0

n00m n00m at narod.ru
Sun Mar 18 06:35:09 CET 2007


>>> ================================ RESTART ===
>>>
0
30.4740708665 secs (Anton Vredegoor)
>>> ================================ RESTART ===
>>>
0
30.4132625795 secs (Anton Vredegoor)
>>> ================================ RESTART ===
>>>
0
30.4812175849 secs (Anton Vredegoor)
>>>


+++++++++++++++++++++++++++++++++++++++++++++++++++++++
import psyco, time

def freq(L):
      D = {}
      for x in L:
          D[x] = D.get(x,0)+1
      return D

def test():
     f = file('D:/m4000.txt')
     f.readline()
     L = []
     for line in f:
         L.append(map(int,line.split()))

     q,w,e,r = map(freq,zip(*L))
     sch,h = 0,{}
     for xk,xv in q.iteritems():
       for yk,yv in w.iteritems():
         if h.has_key(xk+yk):
           h[xk+yk] += xv*yv
         else:
           h[xk+yk] = xv*yv

     for xk,xv in e.iteritems():
       for yk,yv in r.iteritems():
         if h.has_key(-(xk+yk)):
           sch += h[-(xk+yk)]*xv*yv

     print sch

t = time.clock()
psyco.full()
test()
print time.clock() - t,"secs (Anton Vredegoor)"
+++++++++++++++++++++++++++++++++++++++++++++++++++++++

PS
The same PC: AMD Sempron +2600 (1.6 GHz); 512 MB RAM.




More information about the Python-list mailing list