diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2022-09-04 19:21:40 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-04 19:21:40 +0100 |
| commit | 9248cbebc36b2efab36655bbabbc54f2f0f8b077 (patch) | |
| tree | 38468a81930556b18f5cd7761cbc006ae8790753 | |
| parent | 63fb232da613d50a6b28166cec620d3738f24e20 (diff) | |
| parent | da25ccd5e0a44350c38ced981192339ece78424e (diff) | |
| download | perlweeklychallenge-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.pl | 33 | ||||
| -rw-r--r-- | challenge-180/steven-wilson/perl/ch-02.pl | 28 |
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; +} |
