# RabbitFarm

## Part 1

You are given an array of integers @N and an integer \$A. Write a script to find find if there exists a pair of elements in the array whose difference is \$A. Print 1 if exists otherwise 0.

### Solution

``````
use strict;
use warnings;
##
# You are given an array of integers @N and an integer \$A.
# Write a script to find find if there exists a pair of elements
# in the array whose difference is \$A.
# Print 1 if exists otherwise 0.
##
use boolean;
use Math::Combinatorics;

sub build_constraints{
my @constraints;
my \$a_not_equal_b = sub { \$_[0] != \$_[1] };
my \$difference_equal_n = sub { \$_[0] - \$_[1] == \$_[2] };
return (
\$a_not_equal_b,
\$difference_equal_n
);
}

MAIN:{
my \$combinations = Math::Combinatorics->new(
count => 2,
data => [@ARGV[1 .. @ARGV - 1]],
);
my \$found = false;
my (\$check_equal, \$check_difference) = build_constraints();
while(my @combination = \$combinations->next_combination()){
if(\$check_equal->(@combination) && \$check_difference->(@combination, \$ARGV[0])){
\$found = true;
print "1\n"; last;
}
}
print "0\n" if(!\$found);
}
``````

### Sample Run

``````
\$ perl perl/ch-1.pl 15 10 30 20 50 40
0
\$ perl perl/ch-1.pl 7 10 8 12 15 5
1
``````

### Notes

This is a fairly silly use of the constraint programming approach I used last week. Like last time I generate all combinations and test them using a filtering approach. The filter is an array of constraint functions. Here we just have two simple constraints though!

## Part 2

You are given Sudoku puzzle (9x9). Write a script to complete the puzzle

### Notes

I didn’t have a chance to implement a solution in Perl. I would have used a similar constraint approach if I did. This is a natural use for Prolog and if you’re interested in reading in my Prolog implementation you can go here.

posted at: 23:49 by: Adam Russell | path: /perl | permanent link to this entry