Átomos de FNC (fórmulas en forma normal conjuntiva)
Nota: En este ejercicio usaremos las mismas notaciones que en el anterior importando el módulo Evaluacion_de_FNC.
Definir las siguientes funciones
1 2 |
atomosClausula :: Clausula -> [Atomo] atomosFNC :: FNC -> [Atomo] |
tales que
- (atomosClausula c) es el conjunto de los átomos de la cláusula c. Por ejemplo,
1 |
atomosClausula [3,1,-3] == [1,3] |
- (atomosFNC f) es el conjunto de los átomos de la FNC f. Por ejemplo,
1 |
atomosFNC [[4,5],[1,-2],[-4,-1,-5]] == [1,2,4,5] |
Nota: Escribir la solución en el módulo Atomos_de_FNC para poderlo usar en los siguientes ejercicios.
Soluciones
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
module Atomos_de_FNC where import Evaluacion_de_FNC import Data.List (sort, nub) -- 1ª definición de atomosClausula atomosClausula :: Clausula -> [Atomo] atomosClausula c = sort (nub (map abs c)) -- 2ª definición de atomosClausula atomosClausula2 :: Clausula -> [Atomo] atomosClausula2 = sort . nub . map abs -- 1ª definición de atomosFNC atomosFNC :: FNC -> [Atomo] atomosFNC f = sort (nub (concat [atomosClausula c | c <- f])) -- 2ª definición atomosFNC2 :: FNC -> [Atomo] atomosFNC2 f = sort (nub (concatMap atomosClausula f)) -- 3ª definición atomosFNC3 :: FNC -> [Atomo] atomosFNC3 = sort . nub . concatMap atomosClausula |
Otras soluciones
- Se pueden escribir otras soluciones en los comentarios.
- El código se debe escribir entre una línea con <pre lang=»haskell»> y otra con </pre>
Pensamiento
«La esencia de las matemáticas es su libertad.»