14 lines
520 B
Prolog
14 lines
520 B
Prolog
middle_3_digits(Number, [D1,D2,D3]) :-
|
|
verify_middle_3_able(Number, Digits),
|
|
append(FrontDigits, [D1,D2,D3| BackDigits], Digits),
|
|
same_length(FrontDigits, BackDigits).
|
|
|
|
verify_middle_3_able(Number, Digits) :-
|
|
must_be(number, Number),
|
|
AbsNumber is abs(Number),
|
|
number_chars(AbsNumber, Digits),
|
|
length(Digits, NumDigits),
|
|
( 3 > NumDigits -> domain_error('at least 3 digits', Number)
|
|
; 0 is NumDigits mod 2 -> domain_error('odd number of digits', Number)
|
|
; true
|
|
).
|