0votos
numeros amigos en Haskell
por

josejuan

hace 3 años

La estrategia difiere si se quieren comparar dos números cualesquiera o si se quieren obtener listas de parejas de amigos. Aquí sólo una función (bastante trivial) que calcula las series de potencias de la factorización de cada número. Aun así, corre bastante rápido. Para obtener listas de amigos (consecutivos), se pueden cachear las sumas parciales de las series de potencias (de cada primo).

0votos
Carrera de "¡Baja la escalera!" en Haskell
por

josejuan

hace 3 años

Se resuelven problemas de 22000 filas (242M nodos) en 2,68 segundos usando 8 cores. Lo que me ha gustado de este problema es que te obliga a darle muchas vueltas para obtener soluciones eficientes. Existen muchas alternativas, pero sólo unas pocas consiguen buen rendimiento. Soluciones genéricas (como usar Floyd o Dijikstra) darían rendimientos mucho menores porque este problema admite soluciones específicas.

0votos
Algoritmo de ordenación merge sort en Haskell
por

carlosandres-sh

hace 3 años

Tenemos que programar el merge. Esto con Haskell es fácil ya que tenemos el patrón (x:xs) y (y:ys) y con ello podemos ir comparando los primeros números de cada lista. Con eso vamos introduciendo al principio el menor de "x" y "y" con la recursión de merge del resto del que fue menor y la otra lista entera. Luego el mergesort será el merge de la recursión de mergesort de la mitad de la lista con la recusión de la otra mitad de lista.