AprendizZ 0 Posted January 2, 2011 Report Share Posted January 2, 2011 Pretendo criar uma pequena função que recursivamente procura verificar se todos os elementos de uma 1ª lista, um a um, existente numa 2ª lista. Tendo por resultado True ou False. Por exemplo: procurar [1,2,3] [1..10], resulta True, procurar [1,2,3] [1,1,1,1,1,1,1,1], resulta False. Já fiz uma coisa inicial que é (que deve ser possível melhorar num formato melhor): teste xs ys | null xs = [] | elem (head xs) ys == True = True | otherwise = False mas não estou a ver como faço a recursividade de forma a comparar todos os elementos da 1ª lista. Obrigado por qualquer ajuda. Link to post Share on other sites
brunoais 65 Posted January 2, 2011 Report Share Posted January 2, 2011 teste xs ys | null xs = [] | elem (head xs) ys == True = True | otherwise = False Isso está mal pensado em relação ao que queres. Isso seria mais eficiente se fizesses assim: searchFor _ [] = False searchFor elem (listElem:list) = elem == listElem || searchFor elem list This code is used to search an element in a list. Now... Can you make code to test each element from the 1st list into the 2nd list? Edit: Desc... Escrevi em inglês Este código é usado para procurar um elemento numa lista... Consegues fazer um para testar cada elemento da 1ª lista e testar isso na 2ª lista? "[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31 Life is a genetically transmitted disease, induced by sex, with death rate of 100%. Link to post Share on other sites
Baderous 31 Posted January 2, 2011 Report Share Posted January 2, 2011 Consegues resolver isso numa linha usando estas 3 funções: elem, map e and. Link to post Share on other sites
kurayama 0 Posted January 2, 2011 Report Share Posted January 2, 2011 Se a intersecção entre as duas listas for igual à primeira.. Tambem dá numa linha Link to post Share on other sites
AprendizZ 0 Posted January 6, 2011 Author Report Share Posted January 6, 2011 Caros amigos, Desculpem a minha ignorância, mas ainda sou novato no Haskell. Estive a tentar arranjar alguma coisa com o que o Baderous disse: map, elem e and (mas sinceramente o meu conhecimento não ajudou muito, até agora). A solução de intersecção também me parece boa, mas não sei como chegar lá. Eu sei que tenho ainda de "partir bastante pedra", mas poderiam ser um pouquinho mais explícitos. Muito obrigado (e já agora um bom ano novo para todos). Link to post Share on other sites
Baderous 31 Posted January 6, 2011 Report Share Posted January 6, 2011 A função intersect já existe definida. Link to post Share on other sites
AprendizZ 0 Posted January 7, 2011 Author Report Share Posted January 7, 2011 Obrigado. Valeu as ajudas. Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now