Ver Mensaje Individual
  #1 (permalink)  
Antiguo 25/09/2010, 15:36
Ania_
 
Fecha de Ingreso: septiembre-2010
Mensajes: 18
Antigüedad: 13 años, 7 meses
Puntos: 0
Multiplicación en listas

Hola a todos:

Lo que quiero hacer es muy simple, a esta lista de listas

coeffs=[[1,1,1,2,1],[7,0,3,-4,3],[11,-6,0,3,-3]], le quiero multiplicar una lista que se crea aleatoriamente con 0 y 1, pero esta lista tiene solo 5 posiciones
ej:[[0], [0], [0], [0], [1]], lo que debo lograr es que esta lista multiplique a cada posición i de la lista coeffs.

coeffs[i][j] -> i=1...3 j=1...5 , no sé si queda claro

de todas maneras aqui va lo que estoy intentando
Código Python:
Ver original
  1. def crea_sol_inicial():
  2.     vs=[]
  3.     from random import randint    
  4.     for i in range(size):
  5.         vs.append([randint(0,100)%2])
  6.    
  7.     val=[]
  8.     for i in range(csize):
  9.         for j in range(size):
  10.             aux=coeffs[i][j]*vs[j]
  11.             val.append(aux)
  12.     print val

El resultado de val es asqueroso...y en fin no es lo que quiero, un resultado valido seria que se formara una lista parecida a coeffs, lo unico q seria 0 y 1
Ej: val=[[1,1,0,0,0],[1,0,1,0,1],[1,1,0,1,0]], luego el paso a seguir es sumar todos esos 0 y 1 que me quedo en la lista y que fuera un solo valor, en ese caso seria 8.

El codigo en C esta escrito de esta manera, a lo mejor con eso entienden mejor
Código C:
Ver original
  1. /* Verifica factibilidad */
  2. int evalFactibility(int* vs) {
  3. for (int i = 0; i < CSIZE; i++) {
  4.     int val = 0;
  5.     for (int j = 0; j < SIZE; j++) {
  6.         val += coeffs[i][j] * vs[j];
  7.     }
  8.  
  9.  
  10. }
  11.  
  12. int* getRandomString() {
  13. int* vs = new int[SIZE];
  14.  
  15. vs[0] = 0;
  16. vs[1] = 0;
  17. vs[2] = 1;
  18. vs[3] = 1;
  19. vs[4] = 0;
  20. srand((unsigned)time( NULL ) );
  21. do {
  22.    for (int i = 0; i < SIZE; i++) {
  23.        vs[i] = rand()%2;
  24.    }
  25. } while(!evalFactibility(vs));
  26. return vs;
  27. }