Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/11/2006, 13:07
Avatar de landa02
landa02
 
Fecha de Ingreso: junio-2006
Ubicación: Xalapa, Veracruz, México
Mensajes: 42
Antigüedad: 18 años, 5 meses
Puntos: 0
El problema de las n reinas consiste en disponer n reinas en un tablero de ajedrez de forma que no se ataquen entre sí.

Si se representan las reinas mediante una lista que indica la altura de cada reina, la siguiente función chequea que las reinas no se atacan entre sí:

> noSeAtacan [] = success
> noSeAtacan (y:ys) = noAtaca (1,y) ys & noSeAtacan ys

> noAtaca (x,y) [] = success
> noAtaca (x,y) (y':ys) = y =/= y'
> & abs (y' - y) =/= x
> & noAtaca (x+1,y) ys

> abs x | x < 0 = -x
> | otherwise = x

Definir una función nReinas :: Int -> [Int] que genere una lista con las posiciones que deben tomar n reinas en un tablero de ajedrez sin que se ataquen entre sí.

?-nReinas 8
[5,2,6,1,7,4,8,3]

este algoritmo está en internet anexo la página suerte.
http://www.di.uniovi.es/~labra/PDec/.../ListasND.html
__________________
Lo mejor es vivir la vida minuto a minuto