Haskell — Collatz

En aquest problema es proposen algunes funcions referents a la coneguda conjectura de Collatz.

Considereu el procés següent: donat un natural, si és parell es divideix per dos, altrament es multiplica per tres i se li suma una unitat.

La conjectura de Collatz diu que aplicant iterativament aquest procés a qualsevol natural finalment s’arriba a u.

Definim una relació d’equivalència: dos naturals estan relacionats si i només si la longitud de les respectives sèries de Collatz és la mateixa.

  1. Feu una funció serieCollatz :: Integer -> [Integer] que, donat un natural, retorni la seva sèrie de Collatz.

  2. Feu una funció collatzMesLlarga :: Integer -> Integer que, donat natural nn, digui quina és la longitud de la sèrie més llarga dels naturals menors o iguals a nn.

  3. Feu una funció representantsCollatz :: [Integer] -> [Integer] que retorni un representant, el mínim, de cada classe, ordenades creixentment per longitud de sèrie, del conjunt de naturals donats

  4. Feu una funció classeCollatz :: Integer -> Either Int [Integer] que, donat el representant d’una classe, retorni la longitud de la seva sèrie de Collatz si aquesta és major a trenta-cinc o altrament retorni la classe ordenada creixentment.

Puntuació

Cada funció puntua 25 punts.

Informació del problema

Autoria: Jan Mas Rovira

Generació: 2026-02-03T17:00:52.401Z

© Jutge.org, 2006–2026.
https://jutge.org