Haskell - Llistes infinites P98957


Statement
 

pdf   zip

thehtml

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,…].
  2. Generar la seqüència dels naturals [0,1,2,3,4,5,6,7…].
  3. Generar la seqüència dels enters [0,1,−1,2,−2,3,−3,4…].
  4. Generar la seqüència dels nombres triangulars: 0,1,3,6,10,15,21,28,…].
  5. Generar la seqüència dels nombres factorials: [1,1,2,6,24,120,720,5040,…].
  6. Generar la seqüència dels nombres de Fibonacci: [0,1,1,2,3,5,8,13,…].
  7. Generar la seqüència dels nombres primers: [2,3,5,7,11,13,17,19,…].
  8. Generar la seqüència ordenada dels nombres de Hamming: [1,2,3,4,5,6,8,9,…]. 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,…].
  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],…].

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..], 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