translate( 1 2 9 one two nine ) prolog programming

Prolog Program to Translate Numbers to Words

% Base case: translating 0 to zero
translate(0, zero).

% Translating single-digit numbers
translate(1, one).
translate(2, two).
translate(3, three).
translate(4, four).
translate(5, five).
translate(6, six).
translate(7, seven).
translate(8, eight).
translate(9, nine).

% Translating two-digit numbers
translate(N, Word) :-
    N >= 10, N =< 19,
    translate_teens(N, Word).

translate(N, Word) :-
    N >= 20, N =< 99,
    Tens is div(N, 10),
    Units is mod(N, 10),
    translate_tens(Tens, TensWord),
    translate(Units, UnitsWord),
    atomic_list_concat([TensWord, UnitsWord], ' ', Word).

% Translating two-digit numbers from 10 to 19
translate_teens(10, ten).
translate_teens(11, eleven).
translate_teens(12, twelve).
translate_teens(13, thirteen).
translate_teens(14, fourteen).
translate_teens(15, fifteen).
translate_teens(16, sixteen).
translate_teens(17, seventeen).
translate_teens(18, eighteen).
translate_teens(19, nineteen).

% Translating tens digits
translate_tens(2, twenty).
translate_tens(3, thirty).
translate_tens(4, forty).
translate_tens(5, fifty).
translate_tens(6, sixty).
translate_tens(7, seventy).
translate_tens(8, eighty).
translate_tens(9, ninety).

This Prolog program translates numbers to words. It defines rules for translating single-digit numbers, two-digit numbers, and numbers from 10 to 19. The translate predicate is used to translate a given number to its corresponding word. The program uses recursion and arithmetic operations to handle two-digit numbers.

To use this program, you can consult it in a Prolog interpreter and then query the translate predicate with a number as the first argument and a variable as the second argument. For example, translate(12, Word) will unify Word with the atom twelve.