0votos

Sistemas de Post en Haskell

por AverageUser hace 6 días

Aquí una solución más eficiente que con listas

Crear un simulador de sistemas de Post.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import qualified Data.Sequence as S 
import  Prelude hiding (Word) 
import  Data.Maybe (mapMaybe) 
 
type Word  = S.Seq Char 
type Pair  = (Word, Word) 
 
newWord :: Word -> Pair -> Maybe Word 
newWord w (u,v) 
  | S.null u                   = Just (w S.>< v) 
  | S.null w                   = Nothing 
  | S.index w 0 == S.index u 0 = newWord (S.drop 1 w) (S.drop 1 u, v) 
  | otherwise                  = Nothing 
 
postS :: Word -> [Pair] -> Word 
postS word pairs = f word 
  where 
    f w = case mapMaybe (newWord w) pairs of 
            (x:_) -> f x 
            []    -> w 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.