LI2011-12: Comienzo del curso
Las clases del curso Lógica informática (2011-12) comenzarán el lunes 26 de septiembre.
Las clases del curso Lógica informática (2011-12) comenzarán el lunes 26 de septiembre.
Un problema en el que se muestra la capacidad deductiva de Prolog es el siguiente problema de Langford.
Se dice que L es una sucesión de Langford si L es una lista de longitud 27 en la cual aparecen 3 veces cada uno de los dígitos del 1 al 9 y que además cumple la propiedad de que entre dos 1 siempre hay un dígito, entre dos 2 hay dos dígitos, entre dos 3 hay tres dígitos, etc. Por ejemplo,
[1,9,1,2,1,8,2,4,6,2,7,9,4,5,8,6,3,4,7,5,3,9,6,8,3,5,7]
es una sucesión de Langford.
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 |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Definir la relación langford tal que langford(?L) se verifique si % L es una sucesión de Langford. Por ejemplo, % ?- langford(L). % L = [1,9,1,2,1,8,2,4,6,2,7,9,4,5,8,6,3,4,7,5,3,9,6,8,3,5,7] ; % L = [1,8,1,9,1,5,2,6,7,2,8,5,2,9,6,4,7,5,3,8,4,6,3,9,7,4,3] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% langford(L) :- length(L,27), sublista([1,_,1,_,1],L), sublista([2,_,_,2,_,_,2],L), sublista([3,_,_,_,3,_,_,_,3],L), sublista([4,_,_,_,_,4,_,_,_,_,4],L), sublista([5,_,_,_,_,_,5,_,_,_,_,_,5],L), sublista([6,_,_,_,_,_,_,6,_,_,_,_,_,_,6],L), sublista([7,_,_,_,_,_,_,_,7,_,_,_,_,_,_,_,7],L), sublista([8,_,_,_,_,_,_,_,_,8,_,_,_,_,_,_,_,_,8],L), sublista([9,_,_,_,_,_,_,_,_,_,9,_,_,_,_,_,_,_,_,_,9],L). % sublista(?L1,+L2) se verifica si L1 es una sublista de L2. sublista(L1,L2):- append(_,L3,L2), append(L1,_,L3). |