Menu Close

Á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

    atomosClausula :: Clausula -> [Atomo]
    atomosFNC      :: FNC -> [Atomo]

tales que

  • (atomosClausula c) es el conjunto de los átomos de la cláusula c. Por ejemplo,
     atomosClausula [3,1,-3] == [1,3]
  • (atomosFNC f) es el conjunto de los átomos de la FNC f. Por ejemplo,
   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

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.”

Georg Cantor.

3 soluciones de “Átomos de FNC (fórmulas en forma normal conjuntiva)

  1. anthormol
    import Evaluacion_de_FNC
    import Data.List
     
    atomosClausula :: Clausula -> [Atomo]
    atomosClausula xs = sort (nub [abs x | x <- xs])
     
    atomosFNC :: FNC -> [Atomo]
    atomosFNC f = sort (nub (concat [atomosClausula xs | xs <- f]))
  2. rebgongor
    module Atomos_de_FNC where
     
    import Evaluacion_de_FNC (Clausula, Atomo, FNC)
    import Data.List (sort, nub)
     
    atomosClausula :: Clausula -> [Atomo]
    atomosClausula = sort . nub . map abs 
     
    atomosFNC :: FNC -> [Atomo]
    atomosFNC  = sort . nub . concat . map atomosClausula
  3. javjimord
    module Atomos_de_FNC where
     
    import Evaluacion_de_FNC 
    import Data.List 
     
    atomosClausula :: Clausula -> [Atomo]
    atomosClausula c = (nub . sort) (map (abs) c)
     
    atomosFNC :: FNC -> [Atomo]
    atomosFNC f = (nub . sort . concat) [atomosClausula c | c <- f]

Leave a Reply

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.