diff options
| author | Lubos Kolouch <lubos@kolouch.net> | 2024-04-09 09:32:26 +0200 |
|---|---|---|
| committer | Lubos Kolouch <lubos@kolouch.net> | 2024-04-09 09:32:26 +0200 |
| commit | a9582e8b2b386ae6d25febffa71ab7b21a9ca119 (patch) | |
| tree | 401aa459cb7df616a194ec69e4f1498c390d8b53 | |
| parent | f14e99c374e42f272a7e43324e5ac195996c9a54 (diff) | |
| download | perlweeklychallenge-club-a9582e8b2b386ae6d25febffa71ab7b21a9ca119.tar.gz perlweeklychallenge-club-a9582e8b2b386ae6d25febffa71ab7b21a9ca119.tar.bz2 perlweeklychallenge-club-a9582e8b2b386ae6d25febffa71ab7b21a9ca119.zip | |
Challenge 264 LK Perl Python
| -rw-r--r-- | challenge-264/lubos-kolouch/perl/ch-1.pl | 31 | ||||
| -rw-r--r-- | challenge-264/lubos-kolouch/perl/ch-2.pl | 19 | ||||
| -rw-r--r-- | challenge-264/lubos-kolouch/python/ch-1.py | 17 | ||||
| -rw-r--r-- | challenge-264/lubos-kolouch/python/ch-2.py | 12 |
4 files changed, 79 insertions, 0 deletions
diff --git a/challenge-264/lubos-kolouch/perl/ch-1.pl b/challenge-264/lubos-kolouch/perl/ch-1.pl new file mode 100644 index 0000000000..32978f285a --- /dev/null +++ b/challenge-264/lubos-kolouch/perl/ch-1.pl @@ -0,0 +1,31 @@ +use strict; +use warnings; + +sub greatest_english_letter { + my ($str) = @_; + my %seen; + + # Mark the occurrence of each letter in uppercase and lowercase + foreach my $char (split //, $str) { + if ($char =~ /[A-Z]/) { + $seen{lc $char}{'upper'} = 1; + } elsif ($char =~ /[a-z]/) { + $seen{lc $char}{'lower'} = 1; + } + } + + # Identify the greatest letter that appears in both cases + my $greatest_letter = ''; + foreach my $letter (keys %seen) { + if ($seen{$letter}{'upper'} && $seen{$letter}{'lower'}) { + $greatest_letter = $letter if $letter gt $greatest_letter; + } + } + + return uc $greatest_letter; +} + +# Test the function +die "Error" unless greatest_english_letter('PeRlwEeKLy') eq 'L'; +die "Error" unless greatest_english_letter('ChaLlenge') eq 'L'; +die "Error" unless greatest_english_letter('The') eq ''; diff --git a/challenge-264/lubos-kolouch/perl/ch-2.pl b/challenge-264/lubos-kolouch/perl/ch-2.pl new file mode 100644 index 0000000000..ed5cdcbe1d --- /dev/null +++ b/challenge-264/lubos-kolouch/perl/ch-2.pl @@ -0,0 +1,19 @@ +use strict; +use warnings; + +sub create_target_array { + my ($source, $indices) = @_; + my @target; + + for my $i (0..$#$source) { + splice(@target, $indices->[$i], 0, $source->[$i]); + } + + return \@target; +} + +# Test the function +use Test::More tests => 3; +is_deeply(create_target_array([0, 1, 2, 3, 4], [0, 1, 2, 2, 1]), [0, 4, 1, 3, 2]); +is_deeply(create_target_array([1, 2, 3, 4, 0], [0, 1, 2, 3, 0]), [0, 1, 2, 3, 4]); +is_deeply(create_target_array([1], [0]), [1]); diff --git a/challenge-264/lubos-kolouch/python/ch-1.py b/challenge-264/lubos-kolouch/python/ch-1.py new file mode 100644 index 0000000000..45fb2d6e7c --- /dev/null +++ b/challenge-264/lubos-kolouch/python/ch-1.py @@ -0,0 +1,17 @@ +def greatest_english_letter(s: str) -> str: + # Create sets for lowercase and uppercase letters + lower_set = set(filter(str.islower, s)) + upper_set = set(filter(str.isupper, s)) + + # Find letters that appear in both sets + common_letters = {l.lower() for l in lower_set} & {u.lower() for u in upper_set} + + # Return the greatest letter or an empty string + greatest_letter = max(common_letters, default='') + return greatest_letter.upper() + + +# Test the function +assert greatest_english_letter('PeRlwEeKLy') == 'L' +assert greatest_english_letter('ChaLlenge') == 'L' +assert greatest_english_letter('The') == '' diff --git a/challenge-264/lubos-kolouch/python/ch-2.py b/challenge-264/lubos-kolouch/python/ch-2.py new file mode 100644 index 0000000000..64b092793c --- /dev/null +++ b/challenge-264/lubos-kolouch/python/ch-2.py @@ -0,0 +1,12 @@ +from typing import List + +def create_target_array(source: List[int], indices: List[int]) -> List[int]: + target = [] + for s, i in zip(source, indices): + target.insert(i, s) + return target + +# Test the function +assert create_target_array([0, 1, 2, 3, 4], [0, 1, 2, 2, 1]) == [0, 4, 1, 3, 2] +assert create_target_array([1, 2, 3, 4, 0], [0, 1, 2, 3, 0]) == [0, 1, 2, 3, 4] +assert create_target_array([1], [0]) == [1] |
