para niños interseccion hallar hacer graficos ejercicios ejemplos diagramas conjuntos con complemento como prolog iso-prolog

prolog - niños - union de conjuntos ejemplos graficos



Unión de dos conjuntos de variables. (2)

Dadas dos listas de variables, ¿cuál es la forma más compacta y canónica en ISO Prolog para determinar la unión de ambas? Es decir, queremos una definición para los predicados (meta-lógicos)

varset_union(VarSet1, VarSet2, Union)

y para una lista de listas

varset_union(VarSets, Union)

donde Union es una lista de variables únicas del VarSet s dado.

Aquí hay una descripción general de los elementos incorporados en ISO / IEC 13211-1: 1995, incluyendo Cor.2: 2012.


Basándome en la gran respuesta de Tudor, he ideado una definición de varset_union/3 que es más compacta por 2 caracteres:

varset_union(VarSet1, VarSet2, Union):- term_variables(VarSet1+VarSet2, Union).

;-)


Solución utilizando term_variables/2 :

varset_union(VarSet1, VarSet2, Union):- term_variables([VarSet1|VarSet2], Union). varset_union(VarSets, Union):- term_variables(VarSets, Union).

Solución utilizando setof/3 :

varset_union(VarSet1, Varset2, Union):- varset_union([VarSet1, VarSet2], Union). varset_union([], []). varset_union(VarSets, Union):- setof(Var, VarSet^(member(VarSet, VarSets), member(Var, VarSet)), Union).