Ferramentas de Utilizador

Ferramentas de Site


dev_geral:haskell:snippet:numeros_hamming

Números Hamming

Este código tem o intuito de calcular a sequência infinita de números Hamming. A sequência de Hamming começa pelo número 1, os restantes valores são obtidos pela multiplicação de 2, 3 ou 5 por um número Hamming.

hamming = 1 : merge h2 (merge h3 h5)
   where h2 = map (2*) hamming
         h3 = map (3*) hamming
         h5 = map (5*) hamming
 
-- Une as várias listas infinitas de números de hamming.
-- Em caso de igualdade, ignora 1 dos números para não aparecer repetidos.
merge a@(x:xs) b@(y:ys) | x < y = x : merge xs b
                        | x == y = x : merge xs ys
                        | otherwise = y : merge a ys
dev_geral/haskell/snippet/numeros_hamming.txt · Esta página foi modificada pela última vez em: 2018/05/14 21:37 (Edição externa)