aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlancew <lw@judocoach.com>2024-04-25 21:23:37 +0100
committerlancew <lw@judocoach.com>2024-04-25 21:23:37 +0100
commit986d18b253d16bca41cc47f03f39721af1694fd4 (patch)
tree332b81c950611e8de8d523f6a30cfeb09945b514
parent015c1ba8fabea2d943bea0e884eab89f5279e99e (diff)
downloadperlweeklychallenge-club-986d18b253d16bca41cc47f03f39721af1694fd4.tar.gz
perlweeklychallenge-club-986d18b253d16bca41cc47f03f39721af1694fd4.tar.bz2
perlweeklychallenge-club-986d18b253d16bca41cc47f03f39721af1694fd4.zip
Task One, Perl
-rw-r--r--challenge-266/lance-wicks/perl/lib/UCW.pm38
-rw-r--r--challenge-266/lance-wicks/perl/t/01-ucw.t24
2 files changed, 62 insertions, 0 deletions
diff --git a/challenge-266/lance-wicks/perl/lib/UCW.pm b/challenge-266/lance-wicks/perl/lib/UCW.pm
new file mode 100644
index 0000000000..58f81a66b7
--- /dev/null
+++ b/challenge-266/lance-wicks/perl/lib/UCW.pm
@@ -0,0 +1,38 @@
+package UCW;
+
+=pod
+
+> A word is uncommon if it appears exactly once
+> in one of the sentences and doesn’t appear in
+> other sentence.
+
+Example 1
+
+Input: $line1 = 'Mango is sweet'
+ $line2 = 'Mango is sour'
+Output: ('sweet', 'sour')
+=cut
+
+sub words {
+ my $self = shift;
+ my $line1 = shift;
+ my $line2 = shift;
+
+ my @line1_words = split( /\s+/, $line1 );
+ my @line2_words = split( /\s+/, $line2 );
+
+ my %words;
+ for ( @line1_words, @line2_words ) {
+ $words{$_}++;
+ }
+
+ my @words;
+ for ( keys %words ) {
+ if ( $words{$_} == 1 ) {
+ push @words, $_;
+ }
+ }
+ return [ sort @words ];
+}
+
+1; \ No newline at end of file
diff --git a/challenge-266/lance-wicks/perl/t/01-ucw.t b/challenge-266/lance-wicks/perl/t/01-ucw.t
new file mode 100644
index 0000000000..270d4039b4
--- /dev/null
+++ b/challenge-266/lance-wicks/perl/t/01-ucw.t
@@ -0,0 +1,24 @@
+use Test2::V0 -target => 'UCW';
+
+subtest 'Example 1' => sub {
+ my $line1 = 'Mango is sweet';
+ my $line2 = 'Mango is sour';
+
+ is $CLASS->words( $line1, $line2 ), [ 'sour', 'sweet' ];
+};
+
+subtest 'Example 2' => sub {
+ my $line1 = 'Mango Mango';
+ my $line2 = 'Orange';
+
+ is $CLASS->words( $line1, $line2 ), ['Orange'];
+};
+
+subtest 'Example 3' => sub {
+ my $line1 = 'Mango is Mango';
+ my $line2 = 'Orange is Orange';
+
+ is $CLASS->words( $line1, $line2 ), [];
+};
+
+done_testing; \ No newline at end of file