aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-09-04 19:21:40 +0100
committerGitHub <noreply@github.com>2022-09-04 19:21:40 +0100
commit9248cbebc36b2efab36655bbabbc54f2f0f8b077 (patch)
tree38468a81930556b18f5cd7761cbc006ae8790753
parent63fb232da613d50a6b28166cec620d3738f24e20 (diff)
parentda25ccd5e0a44350c38ced981192339ece78424e (diff)
downloadperlweeklychallenge-club-9248cbebc36b2efab36655bbabbc54f2f0f8b077.tar.gz
perlweeklychallenge-club-9248cbebc36b2efab36655bbabbc54f2f0f8b077.tar.bz2
perlweeklychallenge-club-9248cbebc36b2efab36655bbabbc54f2f0f8b077.zip
Merge pull request #6692 from oWnOIzRi/week180
add solution week 180 task 1 and 2 in perl
-rw-r--r--challenge-180/steven-wilson/perl/ch-01.pl33
-rw-r--r--challenge-180/steven-wilson/perl/ch-02.pl28
2 files changed, 61 insertions, 0 deletions
diff --git a/challenge-180/steven-wilson/perl/ch-01.pl b/challenge-180/steven-wilson/perl/ch-01.pl
new file mode 100644
index 0000000000..60bf86968e
--- /dev/null
+++ b/challenge-180/steven-wilson/perl/ch-01.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/env perl
+# Week 180 Task 1
+# Write a script to find out the first unique character in the given string
+# and print its index (0-based).
+
+use strict;
+use warnings;
+use Test::More;
+
+ok(first_unique_character("Perl Weekly Challenge") == 0, "First");
+ok(first_unique_character("Long Live Perl") == 1, "Second");
+ok(first_unique_character("LOLOLx") == 5, "Last");
+ok(!defined(first_unique_character("LOLO")), "None");
+done_testing();
+
+sub first_unique_character {
+ my $s = shift;
+ my $len = length $s;
+ my $index = 0;
+ while ( $index < $len) {
+ my $c = substr $s, $index, 1;
+ my $number = () = $s =~ /$c/gi;
+ if ( $number == 1){
+ last;
+ }
+ $index++;
+ if ($index == $len) {
+ undef $index;
+ last;
+ }
+ }
+ return $index;
+} \ No newline at end of file
diff --git a/challenge-180/steven-wilson/perl/ch-02.pl b/challenge-180/steven-wilson/perl/ch-02.pl
new file mode 100644
index 0000000000..f68652e646
--- /dev/null
+++ b/challenge-180/steven-wilson/perl/ch-02.pl
@@ -0,0 +1,28 @@
+#!/usr/bin/env perl
+# Week 180 Task 2
+# You are given list of numbers, @n and an integer $i.
+# Write a script to trim the given list where element is less than or equal to
+# the given integer.
+
+use strict;
+use warnings;
+use Test::More;
+
+my @n_t1 = ( 1, 4, 2, 3, 5 );
+my $i_t1 = 3;
+my @r_t1 = ( 4, 5 );
+
+my @n_t2 = ( 9, 0, 6, 2, 3, 8, 5 );
+my $i_t2 = 4;
+my @r_t2 = ( 9, 6, 8, 5 );
+
+is_deeply( trim_list( $i_t1, \@n_t1 ), \@r_t1 );
+is_deeply( trim_list( $i_t2, \@n_t2 ), \@r_t2 );
+done_testing();
+
+sub trim_list {
+ my $i = shift;
+ my $n_ref = shift;
+ my @r = grep { $_ > $i } @{$n_ref};
+ return \@r;
+}