Haskell - Llistes infinites P98957


Statement
 

pdf   zip

L’objectiu d’aquest problema és treballar la definició de llistes infinites. Concretament, es demana que implementeu funcions que generin llistes infinites per a:

  1. Generar la seqüència dels uns [1,1,1,1,1,1,1,1,][1,1,1,1,1,1,1,1,\dots].

  2. Generar la seqüència dels naturals [0,1,2,3,4,5,6,7][0,1,2,3,4,5,6,7\dots].

  3. Generar la seqüència dels enters [0,1,1,2,2,3,3,4][0,1,-1,2,-2,3,-3,4\dots].

  4. Generar la seqüència dels nombres triangulars: 0,1,3,6,10,15,21,28,]0,1,3,6,10,15,21,28,\dots].

  5. Generar la seqüència dels nombres factorials: [1,1,2,6,24,120,720,5040,][1,1,2,6,24,120,720,5040,\dots].

  6. Generar la seqüència dels nombres de Fibonacci: [0,1,1,2,3,5,8,13,][0,1,1,2,3,5,8,13,\dots].

  7. Generar la seqüència dels nombres primers: [2,3,5,7,11,13,17,19,][2,3,5,7,11,13,17,19,\dots].

  8. Generar la seqüència ordenada dels nombres de Hamming: [1,2,3,4,5,6,8,9,][1,2,3,4,5,6,8,9,\dots]. Els nombres de Hamming són aquells que només tenen 2, 3 i 5 com a divisors primers.

  9. Generar la seqüència mira i digues: [1,11,21,1211,111221,312211,13112221,1113213211,][1,11,21,1211,111221,312211,13112221,1113213211,\dots].

  10. Generar la seqüència de les files del triangle de Tartaglia (també anomenat triangle de Pascal): [[1],[1,1],[1,2,1],[1,3,3,1],][[1],[1,1],[1,2,1],[1,3,3,1],\dots].

Especificació

Heu de definir les funcions següents:

    ones :: [Integer]
    nats :: [Integer]
    ints :: [Integer]
    triangulars :: [Integer]
    factorials :: [Integer]
    fibs :: [Integer]
    primes :: [Integer]
    hammings :: [Integer]
    lookNsay :: [Integer]
    tartaglia :: [[Integer]]

Observació

En aquest problema no podeu utilitzar enumeracions infinites com ara [1..][1..], però és recomanable utilitzar funcions d’ordre superior com ara map, scanl, iterate, filter, ...

Puntuació

Cada funció puntua 10 punts.

Public test cases
  • Input

    take 8 ones
    take 8 nats
    take 8 ints
    take 8 triangulars
    take 8 factorials
    take 8 fibs
    take 8 primes
    take 8 hammings
    take 8 lookNsay
    take 6 tartaglia
    

    Output

    [1,1,1,1,1,1,1,1]
    [0,1,2,3,4,5,6,7]
    [0,1,-1,2,-2,3,-3,4]
    [0,1,3,6,10,15,21,28]
    [1,1,2,6,24,120,720,5040]
    [0,1,1,2,3,5,8,13]
    [2,3,5,7,11,13,17,19]
    [1,2,3,4,5,6,8,9]
    [1,11,21,1211,111221,312211,13112221,1113213211]
    [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1],[1,5,10,10,5,1]]
    
  • Information
    Author
    Albert Rubio / Jordi Petit
    Language
    Catalan
    Other languages
    English
    Official solutions
    Haskell
    User solutions
    Haskell