mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
90 lines
1.7 KiB
Prolog
90 lines
1.7 KiB
Prolog
:- lib(ic).
|
|
|
|
/**
|
|
* Question 1.11
|
|
* vabs(?Val, ?AbsVal)
|
|
*/
|
|
vabs(Val, AbsVal):-
|
|
AbsVal #> 0,
|
|
(
|
|
Val #= AbsVal
|
|
;
|
|
Val #= -AbsVal
|
|
),
|
|
labeling([Val, AbsVal]).
|
|
|
|
/**
|
|
* vabsIC(?Val, ?AbsVal)
|
|
*/
|
|
vabsIC(Val, AbsVal):-
|
|
AbsVal #> 0,
|
|
Val #= AbsVal or Val #= -AbsVal,
|
|
labeling([Val, AbsVal]).
|
|
|
|
/**
|
|
* Question 1.12
|
|
*/
|
|
% X #:: -10..10, vabs(X, Y).
|
|
% X #:: -10..10, vabsIC(X, Y).
|
|
|
|
/**
|
|
* Question 1.13
|
|
* faitListe(?ListVar, ?Taille, +Min, +Max)
|
|
*/
|
|
faitListe([], 0, _, _):-!.
|
|
faitListe([First|Rest], Taille, Min, Max):-
|
|
First #:: Min..Max,
|
|
Taille1 #= Taille - 1,
|
|
faitListe(Rest, Taille1, Min, Max).
|
|
|
|
/**
|
|
* Question 1.14
|
|
* suite(?ListVar)
|
|
*/
|
|
suite([Xi, Xi1, Xi2]):-
|
|
checkRelation(Xi, Xi1, Xi2).
|
|
suite([Xi, Xi1, Xi2|Rest]):-
|
|
checkRelation(Xi, Xi1, Xi2),
|
|
suite([Xi1, Xi2|Rest]).
|
|
|
|
/**
|
|
* checkRelation(?Xi, ?Xi1, ?Xi2)
|
|
*/
|
|
checkRelation(Xi, Xi1, Xi2):-
|
|
vabs(Xi1, VabsXi1),
|
|
Xi2 #= VabsXi1 - Xi.
|
|
|
|
/**
|
|
* Question 1.15
|
|
* checkPeriode(+ListVar).
|
|
*/
|
|
% TODO Any better solution?
|
|
checkPeriode(ListVar):-
|
|
length(ListVar, Length),
|
|
Length < 10.
|
|
checkPeriode([X1, X2, X3, X4, X5, X6, X7, X8, X9, X10|Rest]):-
|
|
X1 =:= X10,
|
|
checkPeriode([X2, X3, X4, X5, X6, X7, X8, X9, X10|Rest]).
|
|
% faitListe(ListVar, 18, -9, 9), suite(ListVar), checkPeriode(ListVar). => 99 solutions
|
|
|
|
|
|
/**
|
|
* Tests
|
|
*/
|
|
/*
|
|
vabs(5, 5). => Yes
|
|
vabs(5, -5). => No
|
|
vabs(-5, 5). => Yes
|
|
vabs(X, 5).
|
|
vabs(X, AbsX).
|
|
vabsIC(5, 5). => Yes
|
|
vabsIC(5, -5). => No
|
|
vabsIC(-5, 5). => Yes
|
|
vabsIC(X, 5).
|
|
vabsIC(X, AbsX).
|
|
|
|
faitListe(ListVar, 5, 1, 3). => 243 solutions
|
|
faitListe([_, _, _, _, _], Taille, 1, 3). => Taille = 5 !!!!!!!!!!!!!!!!
|
|
|
|
faitListe(ListVar, 18, -9, 9), suite(ListVar). => 99 solutions
|
|
*/ |