Task1
For each pair we check if the last character of first one is equal to first of second:
#!/usr/bin/env perl
use strict;
use warnings;
sub circular{
for(my $i = 0; $i < $#{$_[0]}; $i++) {
my $l = substr($_[0]->[$i],-1);
my $f = substr($_[0]->[$i+1],0,1);
return 0 unless $l eq $f
}
1
}
printf "%d\n",circular(['perl','loves','scala']);
printf "%d\n",circular(['love','the','programming']);
printf "%d\n",circular(['java','awk','kotlin','node.js']);
Task2
We check if the characters of first string occur in the second in order:
#!/usr/bin/env perl
use strict;
use warnings;
sub subsequence{
my @idx = map{index $_[1],$_} split '',$_[0];
join('',@idx) eq join '',sort{$a <=> $b} @idx
}
printf "%d\n",subsequence('uvw','bcudvew');
printf "%d\n",subsequence('aec','abcde');
printf "%d\n",subsequence('sip','javascript');