Jump to content
AprendizZ

Dificuldade em exercicios com listas!

Recommended Posts

AprendizZ

Caros amigos,

Como sou novo nestas andanças do Haskell e como apesar de lá me ir safando sempre encalho

nalguma dificuldade, agradecia algum apoio em dois pequenos exercicios que não consigo desencalhar:

Pretendo criar uma rotina que crie uma lista de multiplos de x dentro de "periodo" de números.

Ora consegui criar o ciclo de ir incrementando o x acima do número mínimo e do máximo do periodo,

masnão consigo fechar a lista no final, ou seja, os multiplos que pretendo aparecem no resultado mas

o compilador não fecha a lista a continua a calcular o ciclo em background, até eu interromper a execução.

Para terem uma ideia aqui fica o código que fiz:

multi2 :: Int -> Int -> Int -> Int -> [int]

multi2 x w mi mx

| x == 0 = []

| x >= mi && x <= mx = x : multi2 (x + w) w mi mx

| otherwise = multi2 (x + w) w mi mx

x - valor do múltiplo

w - valor do múltiplo am ser incrementado no ciclo

mi - valor mínimo do periodo

mx - valor máximo do periodo

Como posso separar uma cadeia de algarismos em elementos de uma lista.

Exexmplo:

paraLista 2345678

resultado:

[2,3,4,5,6,7,8]

Agradeço mais uma vez o apoio e atenção dispensada.

AprendizZ

Share this post


Link to post
Share on other sites
Rui Carlos

Está a misturar o caso em que o x é menor que o mínimo, com o caso em que o x é maior, e não devias. No primeiro caso, deves continuar à procura de elementos, pois, admitindo que w é sempre positivo, ao incrementares o valor do x sabes que em algum momento vais obter um valor maior do que o mínimo, já no segundo caso deves devolver uma lista vazia, pois sabes que se o x é maior do que o máximo, nunca voltará a ser menor.

Já agora, o seguinte código faz o mesmo:

mult x inc mn mx = filter (>= mn) [x,x+inc..mx]

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.