#!/usr/bin/perl -w use strict; # 0 4 1 5 3 2 my @values = (21, 25, 15, 12, 52, 51); for(my $mod = 6; $mod < 10; $mod++) { for(my $shift = 0; $shift < 10; $shift++) { my @outputs = (); push @outputs, 0 foreach @values; my $accepted_outputs = 0; foreach (@values) { my $mapped_value = ($_ + $shift) % $mod; last if $mapped_value < 0 || $mapped_value >= (scalar @values); last if $outputs[$mapped_value]; $outputs[$mapped_value] = 1; $accepted_outputs++; } if( $accepted_outputs == (scalar @values) ) { print "mod=$mod, shift=$shift\n"; } } }