Skip to content

Instantly share code, notes, and snippets.

@carlisgg
Created October 16, 2011 20:20
Show Gist options
  • Save carlisgg/1291371 to your computer and use it in GitHub Desktop.
Save carlisgg/1291371 to your computer and use it in GitHub Desktop.
7L7W - Prolog
% EXERCISE 1
writes('Cervantes', 'El Quijote').
writes('JRR Tolkien', 'El Hobbit').
% another book
writes('JRR Tolkien', 'La Comunidad del Anillo').
writes('JRR Tolkien', 'Las dos torres').
writes('JRR Tolkien', 'El retorno del rey').
writes('Kate Morton', 'El Jardin Olvidado').
% Now we ask for all JRR Tolkien books like this at interpreter
| ?- writes('JRR Tolkien', Book).
Book = 'El Hobbit' ? a
Book = 'La Comunidad del Anillo'
Book = 'Las dos torres'
Book = 'El retorno del rey'
yes
% EXERCISE 2
plays('Mozart', 'Piano').
plays('Mark Knopfler', 'Guitar').
plays('Carlos Nuñez', 'Bag Pipe').
plays('Hevia', 'Bag Pipe').
style('Mozart', 'Classic').
style('Mark Knopfler', 'Swing').
style('Carlos Nuñez', 'Folk').
style('Hevia', 'Folk').
% And then
| ?- plays(Musician, 'Guitar').
Musician = 'Mark Knopfler' ? a
no
| ?-
% or
| ?- plays(Musician, 'Bag Pipe').
Musician = 'Carlos Nuñez' ? a
Musician = 'Hevia'
yes
% EXERCISE 1
rev([], []).
rev([Head|Tail], Reversed) :- rev(Tail, RevTail), append(RevTail, [Head], Reversed).
% EXERCISE 2
smallest([Head|[]], Head).
smallest([Head|Tail], Smallest) :- smallest(Tail, TailSmall), Head =< TailSmall, Smallest = Head.
smallest([Head|Tail], Smallest) :- smallest(Tail, TailSmall), Head > TailSmall, Smallest = TailSmall.
% EXERCISE 3
ordenar([Head|[Head2|[]]], [Head, Head2]) :- Head =< Head2.
ordenar([Head|[Head2|[]]], [Head2, Head]) :- Head > Head2.
ordenar([Head|Tail], Ordenada) :- ordenar(Tail, OrdenadaTail), OrdenadaTail = [Head2|_], Head =< Head2, Ordenada = [Head|OrdenadaTail].
ordenar([Head|Tail], Ordenada) :- ordenar(Tail, OrdenadaTail), OrdenadaTail = [Head2|Tail2], Head > Head2, ordenar([Head|Tail2], Reordenada), Ordenada = [Head2|Reordenada].
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment