Funções agregadoras

Segunda, 4 de maio de 2020

Atenção: Esta tarefa não será corrigida manualmente, mas você deve tentar respondê-la genuinamente. Se tiver alguma dúvida se ela está ou não correta, procure os monitores. Tentativas de passar no teste automático sem responder as questões serão consideradas fraude.

Números primos

Python tem funções predefinidas que permitem filtrar, mapear e reduzir listas. Nesta tarefa, você deve implementar suas próprias funções que fazem essas operações.

Você deve definir uma função chamada filtra que aplica uma função f a cada elemento de um lista e retorna os elementos para os quais o retorno de f é True. A função e a lista são parâmetros de filtra.

Em seguida, você deve definir uma função chamada mapeia que aplica para cada elemento de uma lista uma dada função e devolve uma nova lista. Os parâmetros de mapeia são a lista e a função a ser aplicada.

A outra função que você deve implementar é a reduz. Essa operação acumula os valores de uma lista de forma que produz um único valor. Essa acumulação é feita deslizando-se sobre a lista e aplicando uma computação a elementos sequenciais. Dessa forma, os parâmetros de reduzsão uma lista e uma função que recebe dois valores e retorna um valor.

Após definir essas três funções (filtra, mapeia e reduz), você deve fazer um programa que recebe uma sequência de números inteiros positivos e retorna a soma dos quadrados dos números primos dessa sequência. Você deve usar as filtra, mapeia e reduz que você definiu. É provável que você precise definir outras funções. O nome do seu programa deve ser primos.py.

Se a sequência for vazia ou não tiver nenhum número primo, a saída deve ser $0$.

Entrada

Uma sequencia de números inteiros positivos.

2 3 5 5 8

Saída

A soma dos quadrados dos números primos da sequência dada na entrada.

63