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 originaldef crea_sol_inicial():
vs=[]
from random import randint
for i in range(size):
vs.append([randint(0,100)%2])
val=[]
for i in range(csize):
for j in range(size):
aux=coeffs[i][j]*vs[j]
val.append(aux)
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/* Verifica factibilidad */
int evalFactibility(int* vs) {
for (int i = 0; i < CSIZE; i++) {
int val = 0;
for (int j = 0; j < SIZE; j++) {
val += coeffs[i][j] * vs[j];
}
}
int* getRandomString() {
int* vs = new int[SIZE];
vs[0] = 0;
vs[1] = 0;
vs[2] = 1;
vs[3] = 1;
vs[4] = 0;
do {
for (int i = 0; i < SIZE; i++) {
}
} while(!evalFactibility(vs));
return vs;
}