[pyar] ayuda con un algoritmo, o algo.

Lucio Torre lucio.torre en gmail.com
Jue Feb 2 20:15:49 ART 2012


2012/2/2 John Rowland Lenton <john.lenton en canonical.com>:
> On Thu, 2 Feb 2012 15:41:07 -0300, Lucio Torre <lucio.torre en gmail.com> wrote:
>> 2012/2/2 John Rowland Lenton <john.lenton en canonical.com>:
>> > Tengo un problema de esos que a pyar le encanta, y pensé que lo
>> > compartiría.
>> Yo entendi esto:
>> Dado un array de floats, transformalo a enteros tal que:
>
> array de floats? wut? Ah! porque mezclás los pesos y las longitudes,
> bueno.
>
>> la norma L1 del resultado de 10
>> la norma L2 del error sea minima
>> Ningun numero sea cero excepto si el original es cero.
>
> bueno, L1 puede ser <10 si hay <10 elementos en la entrada (en cuyo
> caso, tiene que ser todos esos elementos). Pero ponele que es un caso
> degenerado (la g esa es con juguito, a lo gasalla).
>
>> Para poder complir esto el input tendria que:
>> Ser de largo <= 10
>
> sí, si es de largo mucho más grande que 10/2, el problema cambia a ser
> "cómo sé qué tirar", y ahí tengo que meter más info de las fuentes.
>
>> Tener al menos un valor no 0.


from numpy import argmax

input = [1.1, 22.1, 22.1, 15.6, 0]
solution = [[0, 1][v >= 1] for v in input]

while sum(solution) < 10:
    error = map(lambda (x, y): (x - y) ** 2, zip(input, solution))
    solution[argmax(error)] += 1

Creo que es esto lo que queres.



More information about the pyar mailing list