Skip to content

Instantly share code, notes, and snippets.

@mariochavez
Created October 14, 2014 17:26
Show Gist options
  • Save mariochavez/9b8eb33af98842a2c103 to your computer and use it in GitHub Desktop.
Save mariochavez/9b8eb33af98842a2c103 to your computer and use it in GitHub Desktop.
Covalente
require 'ruby-prolog'
context = RubyProlog::Core.new
context.instance_eval do
friend['Mateo', 'Daniela'].fact
friend['Diego', 'Gabriela'].fact
friend['Tomas', 'Emma'].fact
friend['David', 'Martina'].fact
friend['Daniel', 'Daniela'].fact
friend['Mateo', 'Julieta'].fact
friend['Matías', 'Samantha'].fact
friend['Daniel', 'Valentina'].fact
friend['Mateo', 'Samantha'].fact
friend['Daniel', 'Sara'].fact
friend['Valeria', 'Agustín'].fact
friend['Samantha', 'Emmanuel'].fact
friend['Sara', 'Lucas'].fact
friend['Isabella', 'Jerónimo'].fact
friend['Martina', 'Tomas'].fact
friend['Valeria', 'Mateo'].fact
friend['Valeria', 'Matías'].fact
friend['Maria', 'Lucas'].fact
friend['Martina', 'Santiago'].fact
friend['Maria', 'Samuel'].fact
friend['Catalina', 'Valeria'].fact
friend['Emma', 'Valeria'].fact
friend['Maria', 'Camila'].fact
friend['Daniela', 'Emma'].fact
friend['Luciana', 'Gabriela'].fact
friend['Victoria', 'Valentina'].fact
friend['Isabella', 'Mariana'].fact
friend['Julieta', 'Martina'].fact
friend['Camila', 'Ximena'].fact
friend['Sofia', 'Daniela'].fact
friend['Martín', 'Samuel'].fact
friend['Tomas', 'David'].fact
friend['Diego', 'Gabriel'].fact
friend['Benjamín', 'Lucas'].fact
friend['Alejandro', 'Santiago'].fact
friend['Tomas', 'Sebastián'].fact
friend['Agustín', 'Emma'].fact
friend['Diego', 'Martín'].fact
friend['Daniel', 'Benjamín'].fact
friend['Agustín', 'Gabriel'].fact
male['Mateo'].fact
male['Diego'].fact
male['Tomas'].fact
male['David'].fact
male['Daniel'].fact
male['Matías'].fact
male['Martín'].fact
male['Benjamín'].fact
male['Alejandro'].fact
male['Agustín'].fact
male['Emmanuel'].fact
male['Lucas'].fact
male['Jerónimo'].fact
male['Lucas'].fact
male['Santiago'].fact
male['Samuel'].fact
male['Gabriel'].fact
male['Lucas'].fact
male['Sebastián'].fact
female['Valeria'].fact
female['Samantha'].fact
female['Sara'].fact
female['Isabella'].fact
female['Martina'].fact
female['Valeria'].fact
female['Maria'].fact
female['Catalina'].fact
female['Emma'].fact
female['Daniela'].fact
female['Luciana'].fact
female['Victoria'].fact
female['Julieta'].fact
female['Camila'].fact
female['Sofia'].fact
female['Gabriela'].fact
female['Valentina'].fact
female['Mariana'].fact
female['Ximena'].fact
available['Emma'].fact
available['Daniel'].fact
available['Mateo'].fact
available['Martina'].fact
available['Valeria'].fact
available['Emmanuel'].fact
available['Catalina'].fact
available['Lucas'].fact
available['Sara'].fact
interest['Mateo', 'Music'].fact
interest['Mateo', 'Movies'].fact
interest['Emma', 'Music'].fact
interest['Emma', 'Sports'].fact
interest['Martina', 'Books'].fact
interest['Martina', 'Photography'].fact
interest['Catalina', 'Movies'].fact
interest['Catalina', 'Sports'].fact
interest['Gabriela', 'Dance'].fact
interest['Gabriela', 'Movies'].fact
male_same_interests[:X, :Y, :Z] <<= [interest[:X, :Y], interest[:Z, :Y], male_candidates[:X, :Z], noteq[:X, :Z]]
female_same_interests[:X, :Y, :Z] <<= [interest[:X, :Y], interest[:Z, :Y], female_candidates[:X, :Z], noteq[:X, :Z]]
male_candidates[:X, :Y] <<= [connected_friends[:X, :Y], male[:Y], available[:Y]]
female_candidates[:X, :Y] <<= [connected_friends[:X, :Y], female[:Y], available[:Y]]
connected_friends[:X, :Y] <<= [friends[:X, :Z], friends[:Z, :Y], noteq[:X,:Y]]
friends[:X, :Y] <<= friend[:X, :Y]
friends[:X, :Y] <<= friend[:Y, :X]
query(female_same_interests['Mateo', :X, :Y]).inject([], :concat).uniq{|goal| goal.args}
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment