Ver Mensaje Individual
  #9 (permalink)  
Antiguo 27/09/2010, 08:40
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Multiplicación en listas

Código Python:
Ver original
  1. from random import randint
  2.  
  3. def getRandomString(size):
  4.     #Regresa una lista de tamanio size con 0's y 1's
  5.     return [randint(0, 1) for i in xrange(size)]
  6.  
  7. def evalCoeffs(coeffs, randlist):
  8.     #Asumo que randlist y coeffs tienen el mismo tamanio
  9.     size = len(randlist)
  10.     #Si no llegan a tener el mismo tamanio lanzara una excepcion
  11.     aux = [coeffs[i] * randlist[i] for i in xrange(size)]
  12.     #Regreso la suma de multiplicar los items de coeffs y randlist
  13.     #Y ademas regreso aux, que es multiplicacion de las listas
  14.     return sum(aux), aux
  15.  
  16. def evalFactibility(coeffs, randlist, ops, rhs):
  17.     #No tengo idea de que haga evalFactibility
  18.     #Se quede regresar True si cumple con algo
  19.     #Y false si no cumple ese algo
  20.     suma, rlist = evalCoeffs(coeffs, randlist)
  21.     #Supuse que si la suma es mayor o igual a 0 entonces es factible
  22.     #Corrigeme si estoy mal por que no se que es lo hace esta funcion
  23.     if ops == 1:
  24.         if suma > rhs:
  25.             return False
  26.     elif ops == 2:
  27.         if suma < rhs:
  28.             return False
  29.     return True
  30.    
  31.    
  32. def foundInitialSolutions(lcoeffs, ops, rhs):
  33.     initialSolutions = []
  34.     for coeffs, op, rh in zip(lcoeffs, ops, rhs):
  35.         size = len(coeffs)
  36.         vs = getRandomString(size)
  37.         while not evalFactibility(coeffs, vs, op, rh):
  38.             vs = getRandomString(size)
  39.         initialSolutions.append(vs)
  40.     return initialSolutions
  41.  
  42. list_of_coeffs = [
  43.                   [1,   1,  1,  2,  1],
  44.                   [7,   0,  3, -4,  3],
  45.                   [11, -6,  0,  3, -3]
  46.                  ]
  47. ops = [1, 1, 2]
  48. rhs = [4, 8, 3]
  49. inits = foundInitialSolutions(list_of_coeffs, ops, rhs)
  50. print list_of_coeffs
  51. print inits
Te recomiendo que leas python para todos te ayudara a entender muchas cosas.