Prolog Def Conjuntos Disjuntos Dos conjuntos A y
- Slides: 12
Prolog Def. Conjuntos Disjuntos. - Dos conjuntos A y B son disjuntos si A B = Def. Recursiva disjuntos([], _). disjuntos([X|Y], Z) : -not (pert(X, Z)), disjuntos(Y, Z). Def. Iterativa disjuntos_iter(X, Y) : -not( (pert(Z, X), pert(Z, Y))).
Ejercicio Def. Subconjunto. Sean A y B dos conjuntos tal que cada elemento de A es también elemento de B. Entonces, se dice que: A es subconjunto de B, y se denota A B Def. Recursiva subconjunto([], _). subconjunto([X|Y], Z): -pert(X, Z), subconjunto(Y, Z). Def. Iterativa subconj_iter([], _). subconj_iter(X, Y): -not((pert(Z, X), not(pert(Z, Y)))).
Otra ver. de Subconjunto subconjunto([], []). subconjunto([X|L 1], [X|L 2]): -subconjunto(L 1, L 2). subconjunto(L 1, [_|L 2]): -subconjunto(L 1, L 2).
Combinatoria ? - combinacion([a, b, c], 2, L). L = [a, b] ; L = [a, c] ; L = [b, c] ; false
Def. Combinatoria combinacion(L 1, N, L 2): -combinacion_1(L 1, N, L 2): -subconjunto(L 2, L 1), length(L 2, N). combinacion(L 1, N, L 2): -combinacion_2(L 1, N, L 2): -length(L 2, N), subconjunto(L 2, L 1).
Permutaciones ? - select(X, [a, b, c], L). X = a L = [b, c] ; X = b L = [a, c] ; X = c L = [a, b] ; false ? - select(a, L, [b, c]). L = [a, b, c] ; L = [b, a, c] ; L = [b, c, a] ; false
Implementaciones permuta([], []). permuta(L 1, [X|L 2]): -select(X, L 1, L 3), permuta(L 3, L 2).
Cuadrado Mágico Enunciado: Colocar los números 1, 2, 3, 4, 5, 6, 7, 8, 9 en un cuadrado 3 x 3 de forma que todas líneas (filas, columnas y diagonales) sumen igual.
Implementación cuadrado_1([A, B, C, D, E, F, G, H, I]) : permutación([1, 2, 3, 4, 5, 6, 7, 8, 9], [A, B, C, D, E, F, G, H, I]), A+B+C =: = 15, D+E+F =: = 15, G+H+I =: = 15, A+D+G =: = 15, B+E+H =: = 15, C+F+I =: = 15, A+E+I =: = 15, C+E+G =: = 15.
Solución Cuadrado Mágico
Solución Cuadrado Mágico
Planeación d(a, b). d(b, e). d(b, c). d(d, e). d(c, d). d(e, f). d(g, e). go(X, X, T). Go(X, Y, T)