Task1
We check the given condition for permutations of the sequence:
#!/usr/bin/env perl
use strict;
use warnings;
use Algorithm::Combinatorics qw(permutations);
sub beautiful_arrangement{
my $it = permutations([1..$_[0]]);
my $c = 0;
perm:
while(my $p = $it->next){
foreach my $i(1..$_[0]){
next perm if $p->[$i-1] % $i && $i % $p->[$i-1]
}
$c++
}
$c
}
printf "%d\n",beautiful_arrangement(2);
printf "%d\n",beautiful_arrangement(1);
printf "%d\n",beautiful_arrangement(10);
Task2
We check for the given condition and find out the maximum:
#!/usr/bin/env perl
use strict;
use warnings;
sub nested_array{
my ($arr) = @_;
my $max = 0;
foreach my $i(0..$#$arr){
my $len = 0;
my $set = $arr->[$i];
my %used;
while(!exists $used{$set}){
undef $used{$set};
$set = $arr->[$set];
++$len
}
$max = $len if $len > $max
}
$max
}
printf "%d\n",nested_array([5,4,0,3,1,6,2]);
printf "%d\n",nested_array([0,1,2]);