Exercícios / Paradigma funcional / Sequências e streams

  1. [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.

  2. [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$.

  3. 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)
    
  4. Defina uma função cria-stream-primos que cria um stream dos números primos.

    > (stream->list (stream-take (cria-stream-primos) 5))
    '(2 3 5 7 11)
    
  5. 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))