Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

nana91

Problema de Haskell II

Mensagens Recomendadas

nana91

Olá a todos, mais uma vez estou aqui para vos pedir que simplesmente me expliquem este problema, é o seguinte:

a Maria quer alternar as cores das cortinas das sucessivas janelas (sucessivas no sentido da esquerda para a direita, quando se olha para a casa a partir do oceano): uma azul, outra amarela, etc. Acontece que nem todas as janelas são iguais. Acresce que o tecido azul é mais caro que o amarelo. O problema é calcular quanto tecido azul e quanto tecido amarelo é preciso comprar, dadas as dimensões de cada janela, de maneira a gastar menos. E a primeira janela pode ficar azul ou amarela, conforme for mais barato. O tecido para as cortinas é vendido ao centímetro quadrado.

O problema é escrever duas funções Haskell: azul e amarelo. A função azul calcula a quantidade de tecido azul a comprar e a função amarelo a de tecido amarelo. Ambas as funções têm como argumento uma lista de números inteiros onde o primeiro e o segundo números representam a largura e a altura da primeira janela, o terceiro e o quarto números representam a largura e a altura da segunda janela e assim sucessivamente. Todas as medidas são expressas em centímetros. O objetivo é minimizar o custo total das cortinas, sabendo que o tecido azul é mais caro que o amarelo.

O número de janelas é maior ou igual a 2. As dimensões são números inteiros positivos.

Eu só quero é que alguém me explique de uma outra forma o exercicio. Aqui ficam os resultados que têm de dar no WinHugs:

Main> azul [120,80,100,70,90,70,150,90,40,40]

17500

Main> amarelo [120,80,100,70,90,70,150,90,40,40]

20500

:)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Betovsky

[120,80,100,70,90,70,150,90,40,40] São as dimensões das janelas. Ou seja:

1ª janela: 120 por 80, o que dá 9600

2ª janela: 100x70 = 7000

3ª janela: 90x70 = 6300

4ª janela: 150x90 = 13500

5º janela: 40x40 = 1600

Portanto como as cores são alternadas, a 1ª cor fica com 9600 + 6300 + 1600 (Total: 17500). A 2ª cor fica com 7000 + 13500 (Total: 20500).

Como 17500 é menor que 20500, fica a 1ª cor como Azul e a 2ª cor como Amarelo.


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nana91

Finalmente compreendi alguma coisa deste problema, mas continuo com dificuldades na parte de multiplicar. Como é que eu consigo multiplicar as janelas sem multiplicar tudo?

Digam alguma coisa  :D

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.