#!/usr/local/bin/perl use strict; use warnings; use AI::Prolog 0.65; my @numbers = grep { ! ($_ % 2) || ! ($_ % 5) } 1 .. 100; my $numbers = AI::Prolog->make_list(@numbers); my $prolog = AI::Prolog->new(<<"END_PROLOG"); member(X,[X|Tail]). member(X,[Head|Tail]) :- member(X, Tail). one_hundred(A,B,C,D,E) :- member(A, [$numbers]), member(B, [$numbers]), member(C, [$numbers]), member(D, [$numbers]), member(E, [$numbers]), is(100, plus(A, plus(B, plus(C, plus(D, E))))). END_PROLOG $prolog->query('one_hundred(A,B,C,D,E).'); while (my $results = $prolog->results) { print join(',' =>@{$results}[1 .. 5]), $/; } #### $prolog->query('one_hundred(4,B,C,45,E).'); while (my $results = $prolog->results) { print join(',' =>@{$results}[1 .. 5]), $/; }