aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels van Dijke <perlboy@cpan.org>2020-07-24 20:04:12 +0000
committerNiels van Dijke <perlboy@cpan.org>2020-07-24 20:04:12 +0000
commitb0b28cbe09ab4be76672c77dba376bbb3321069c (patch)
treeda602ba58e9e3c92350e4efe8939063a08b852b4
parentb1fc2dc2d779f100fb444bc509881dd34c6ac88e (diff)
downloadperlweeklychallenge-club-b0b28cbe09ab4be76672c77dba376bbb3321069c.tar.gz
perlweeklychallenge-club-b0b28cbe09ab4be76672c77dba376bbb3321069c.tar.bz2
perlweeklychallenge-club-b0b28cbe09ab4be76672c77dba376bbb3321069c.zip
Task 1
-rwxr-xr-xchallenge-070/perlboy1967/perl/ch-1.pl61
1 files changed, 61 insertions, 0 deletions
diff --git a/challenge-070/perlboy1967/perl/ch-1.pl b/challenge-070/perlboy1967/perl/ch-1.pl
new file mode 100755
index 0000000000..0e860062fe
--- /dev/null
+++ b/challenge-070/perlboy1967/perl/ch-1.pl
@@ -0,0 +1,61 @@
+#!/usr/bin/perl
+
+# Perl Weekly Challenge - 070
+#
+# Task 1 - Character Swapping
+#
+# Author: Niels 'PerlBoy' van Dijke
+
+use strict;
+use warnings;
+
+sub characterSwapping($$$);
+
+die "Minimal arguments is three"
+ unless scalar(@ARGV) >=3 ;
+
+my ($S, $C, $O) = @ARGV;
+my $N = length($S);
+
+die "Invalid arguments given"
+ unless ($C >= 1 and
+ $O >= 1 and
+ $C <= $O and
+ $C +$O <= $N and
+ $C <= $O);
+
+printf q{
+Input:
+ $S = '%s'
+ $C = %d
+ $O = %d
+
+}, $S, $C, $O;
+
+my $s = characterSwapping($S, $C, $O);
+
+print qq{
+Output:
+ $s
+};
+
+
+sub characterSwapping($$$) {
+ my ($S, $C, $O) = @_;
+
+ my @s = split(//, $S);
+
+ print "Character Swapping:\n";
+
+ foreach my $i (1 .. $C) {
+ my @i = ($i % $N, ($i + $O) % $N);
+
+ print " swap: $s[$i[0]] <=> $s[$i[1]] = ";
+
+ @s[@i] = @s[reverse @i];
+
+ print join('', @s)."\n";
+ }
+
+ return join('', @s);
+}