
def crea_dic_apostes(nomf):
   with open(nomf, 'r') as fitxer:
      dic = {}
      for linia in fitxer:
          nom, res = linia.split(':')
          gf,gc = res.split('-')
          res = (int(gf), int(gc))
          if res in dic:
              dic[res].append(nom)
          else:
              dic[res] = [nom]
   return dic


def num_apostes(dic):
   na = 0
   for x in dic:
      na += len(dic[x])
   return na


def encerts_ple(da, res):
   if res in da:
      llista = sorted(da[res])
   else:
      llista = []
   return llista


def encerts_dif(da, res):
   difgols = res[0]-res[1]
   s = set()
   for aposta in da:
      difgols2 = aposta[0]-aposta[1]      
      if difgols2 == difgols and aposta != res:
         for nom in da[aposta]:
            s.add(nom)
   llista = list(s)
   llista.sort()
   return llista


def premis(nomf, res):
   da = crea_dic_apostes(nomf)
   nap = num_apostes(da)
   lple = encerts_ple(da, res)
   ldif = encerts_dif(da, res)
   if lple != []:
      qple = (nap/2.0) / len(lple)
   else:
      qple = 0.0
   if ldif != []:
      qdif = (nap/3.0) / len(ldif)
   else:
      qdif = 0.0
   resta = nap - qple*len(lple) - qdif*len(ldif)
   return nap, lple, qple, ldif, qdif, resta
