Contains element

1 10 2007

Um problema que tive enquanto fazia o Catalogador de discos (CD) foi na inexistência de uma função que verificasse se todos os elementos de um determinado conjunto faziam parte de um outro conjunto, interessando a ordem.

Exemplificando:

Imaginando que existe uma função f temos,

f [1,9,8,5] [3,4,5,1,3,4,7,8,94,3,1,9,8,5,2,2,2,15,24] terá que originar o resultado

True

.

Encontrei esta solução, se tiverem uma ideia melhor estou receptivo.

{-# OPTIONS -fglasgow-exts #-}
module Main where
import List
contain :: (Eq [a] , Eq a) => [a] -> [a] -> Bool
contain s1 s2 | null s1 || null s2 = False
contain s1@(h:_) s2 =
        let len   = length s1
            elems = elemIndices h s2
        in  (or . map (==s1)) [take len $ drop n s2 | n <- elems ]

código aqui

Advertisements




Disk catalogue

23 02 2007

Bom… infelizmente não tenho tido muito tempo para dedicar ao haskell como pretendia, mas já á uns meses que tinha ideia de fazer um programa que guardasse toda a informação contida em vários CD’s e DVD’s afim de fazer uma base de dados dos mesmos e mais tarde facilitar-me nas pesquisas do “tal ficheiro que já nao me lembro onde está…”.

Confesso que a cadeira de MP1 lecionada pelo Professor José Nuno Oliveira me ajudou em muito para a idealização deste projecto…

Todo o código referente ao projecto pode ser encontrado no meu site do Centro de Apoio Open Source do CeSIUM