/
ch-2.pl
45 lines (42 loc) · 1.01 KB
/
ch-2.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/perl ;
use strict ;
use warnings ;
use feature 'say' ;
sub enterArray {
my @numbers ;
print "Enter a number ( end to end ) :\n" ;
my $number = <STDIN> ;
chomp $number ;
while ( $number ne "end" ) {
if ( $number =~ /\d+/ ) {
push (@numbers , $number ) ;
}
print "Enter a number ( end to end ) :\n" ;
$number = <STDIN> ;
chomp $number ;
}
return @numbers ;
}
sub leftRotate {
my $array = shift ;
my $rotateBy = shift ;
my $len = scalar @$array ;
my @rotated ;
if ( $rotateBy > $len - 1 ) {
return 0 ; #invalid operation, index too great
}
else {
my @subarray = @$array[$rotateBy .. $len - 1] ;
push( @rotated , @subarray ) ;
@subarray = @$array[0 .. $rotateBy - 1] ;
push( @rotated , @subarray ) ;
return @rotated ;
}
}
my @array = enterArray( ) ;
my @indices = enterArray( ) ;
for my $index ( @indices ) {
my @rotated = leftRotate( \@array , $index ) ;
my $line = '(' . join( " " , @rotated ) . ')' ;
say $line ;
}