Exercícios / Paradigma funcional / Streams e sequências

  1. Defina uma função multiplos que receba como parâmetro um inteiros positivo $n$ e devolva um stream com os múltiplos de $n$ maiores 0.

    > (stream->list (stream-take (multiplos 5) 4))
    (5 10 15 20)
    
  2. Defina um stream primos dos números primos.

    > (stream->list (stream-take primos 5))
    (2 3 5 7 11)
    
  3. Defina um função sub-sets que receba como parâmetro um lista e devolva um stream dos subconjuntos desta lista. Exemplo

    > (stream->list (stream-take (sub-sets '(7 3 4 2)) 6))
    '(() (7) (3) (4) (2) (7 3))
    
  4. [sicp 2.40] Refaça o seguinte exercícios da lista de funções usando list comprehension: Defina a função unique-pairs que, dado um inteiro $n$ gere a lista de pares $(i, j)$ com $1 \le j < i \le n$. Cada par é representado por uma lista com os dois elementos do par.

  5. [sicp 2.41] Refaça o seguinte exercícios da lista de funções usando list comprehension: Escreva uma função que encontre todas as triplas ordenadas de inteiros positivos distintos $i, j$ e $k$ menores ou iguais a um dado inteiro $n$ cuja a soma seja igual a um dado inteiro $s$.