Skip to content

Instantly share code, notes, and snippets.

View DonaldKellett's full-sized avatar

Donald Sebastian Leung DonaldKellett

View GitHub Profile
@DonaldKellett
DonaldKellett / lpn-4-4p4.pl
Created December 22, 2018 09:42
Learn Prolog Now! - Chapter 4 - Exercise 4.4 - Swap first 2 elements of a list
swap12([X, Y | T], [Y, X | T]).
@DonaldKellett
DonaldKellett / lpn-4-4p5.pl
Created December 22, 2018 09:56
Learn Prolog Now! - Chapter 4 - Exercise 4.5 - Deutsch <-> English
% Deutsch <-> English translation of 1-9 (provided)
tran(eins,one).
tran(zwei,two).
tran(drei,three).
tran(vier,four).
tran(fuenf,five).
tran(sechs,six).
tran(sieben,seven).
tran(acht,eight).
tran(neun,nine).
@DonaldKellett
DonaldKellett / lpn-4-4p6.pl
Created December 22, 2018 10:02
Learn Prolog Now! - Chapter 4 - Exercise 4.6 - Repeat Twice
twice([], []).
twice([X | L1], [X, X | L2]) :- twice(L1, L2).
@DonaldKellett
DonaldKellett / lpn-4-practical-1.pl
Created December 22, 2018 10:10
Learn Prolog Now! - Chapter 4 - Practical Session - Programming Exercise 1 - Combine two lists
combine1([], [], []).
combine1([X | L1], [Y | L2], [X, Y | Result]) :- combine1(L1, L2, Result).
@DonaldKellett
DonaldKellett / lpn-4-practical-2.pl
Created December 22, 2018 10:16
Learn Prolog Now! - Chapter 4 - Practical Session - Programming Exercise 2 - Combine two lists II
combine2([], [], []).
combine2([X | L1], [Y | L2], [[X, Y] | Result]) :- combine2(L1, L2, Result).
@DonaldKellett
DonaldKellett / lpn-4-practical-3.pl
Created December 22, 2018 10:20
Learn Prolog Now! - Chapter 4 - Practical Session - Programming Exercise 3 - Combine two lists III
combine3([], [], []).
combine3([X | L1], [Y | L2], [j(X, Y) | Result]) :- combine3(L1, L2, Result).
@DonaldKellett
DonaldKellett / lpn-5-5p2.pl
Created December 22, 2018 16:33
Learn Prolog Now! - Chapter 5 - Exercise 5.2 - Increment and Sum
increment(X, Y) :- Y is X + 1.
sum(X, Y, Z) :- Z is X + Y.
@DonaldKellett
DonaldKellett / lpn-5-5p3.pl
Created December 22, 2018 16:40
Learn Prolog Now! - Chapter 5 - Exercise 5.3 - Increment each element in the list
addone([], []).
addone([X | L0], [Y | L1]) :- Y is X + 1, addone(L0, L1).
@DonaldKellett
DonaldKellett / lpn-5-practical-1.pl
Created December 22, 2018 16:51
Learn Prolog Now! - Chapter 5 - Practical Session - Programming Exercise 1 - Minimum of a list using tail recursion
accMin([H | T], A, Result) :- H < A, accMin(T, H, Result).
accMin([H | T], A, Result) :- H >= A, accMin(T, A, Result).
accMin([], A, A).
@DonaldKellett
DonaldKellett / lpn-5-practical-2.pl
Created December 22, 2018 16:59
Learn Prolog Now! - Chapter 5 - Practical Session - Programming Exercise 2 - Scalar multiplication of vectors
scalarMult(_, [], []).
scalarMult(C, [X | T], [Y | Result]) :- Y is C * X, scalarMult(C, T, Result).