0votos

Edificio de 5 pisos en Haskell

por josejuan hace 8 meses

La típica en Haskell para este tipo de problemas (backtracking).

Resolver esta especie de acertijo con programación.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import Control.Monad 
import Data.List 
 
 
 
pisos = do 
  adam <- [1..4] 
  bill <- [2..5] \\ [adam] 
  cora <- [2..4] \\ [adam, bill] 
  guard (abs (bill - cora) > 1) 
  dale <- [1..5] \\ [adam, bill, cora] 
  guard (dale > bill) 
  erin <- [1..5] \\ [adam, bill, cora, dale] 
  guard (abs (erin - cora) > 1) 
  return [adam, bill, cora, dale, erin] 
 
 
 
 
 
 
 
printSolutions = mapM_ printSolution pisos 
 
printSolution ps = do 
  putStrLn "== Solución ====" 
  mapM_ (\(p, n) -> putStrLn $ "  " ++ show p ++ ". " ++ n) $ 
    sort $ zip ps ["adam", "bill", "cora", "dale", "erin"] 
 
 
{- 
 
> printSolutions 
== Solución ==== 
  1. erin 
  2. bill 
  3. adam 
  4. cora 
  5. dale 
 
-} 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.