Search This Blog

Thursday, July 15, 2021

Métodos Computacionais 2021: Aula 8 - Exercícios resolvidos e Outros

 Exercícios resolvidos:

Questão 1 

Questão 2

Questão 3 

Questão 4 

Questão 4


Exercícios de programação funcional do GitHub: https://gist.github.com/oskarkv/3168ea3f8d7530ccd94c97c19aafe266

Crie uma partição de função que receba os argumentos n, step e seq (número, número, sequência). Ele deve pegar n elementos de seq, agrupar isso em uma lista e avançar nas etapas de conforme o valor de step, depois pegar outros n elementos e assim por diante

Pede-se que seja criada uma função chamada "update" que recebe um mapa "m", uma chave "k", uma função "f" e um número arbitrário de argumentos adicionais "args". Ele especifica que a função deve retornar um novo mapa que seja semelhante a "m", mas com o valor para a chave "k" substituído pelo resultado da aplicação de "f" ao valor anterior e aos argumentos fornecidos.

Crie uma função zipwith que receba uma função f e um número arbitrário de sequências e retorne uma lista de f aplicada aos primeiros elementos das sequências fornecidas, seguida por f aplicada aos segundos elementos das sequências e assim por diante.

Crie uma função zip que pegue um número arbitrário de sequências e as compacte, ou seja, crie uma lista de listas, onde as listas internas consistem nos primeiros elementos das sequências fornecidas, depois nos segundos elementos das sequências fornecidas e assim por diante.

Crie uma função zipmap que receba duas sequências e forme um dicionário dos elementos da primeira sequência com os elementos da segunda sequência.

O objetivo desse exercício é criar uma função flatten que possa achatar uma árvore 

Crie uma função 'take' que receba um número 'n' e uma sequência 'seq' e retorne uma lista dos primeiros 'n' elementos de 'seq'.

Crie uma função "interleave" que pegue um número arbitrário de sequências e as intercale.

Crie uma função compose que receba 2 funções e faça a composição da função, ou seja, compose(double, negate) deve retornar uma função que primeiro chama negate e depois double em seu argumento.

Nesse exercício devemos criar uma função chamada "balanced" que recebe uma string "s" e retorna True se ela contiver apenas parênteses, colchetes e chaves balanceados ((), [], {}), caso contrário retorna False.