aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubos Kolouch <lubos@kolouch.net>2024-04-09 09:32:26 +0200
committerLubos Kolouch <lubos@kolouch.net>2024-04-09 09:32:26 +0200
commita9582e8b2b386ae6d25febffa71ab7b21a9ca119 (patch)
tree401aa459cb7df616a194ec69e4f1498c390d8b53
parentf14e99c374e42f272a7e43324e5ac195996c9a54 (diff)
downloadperlweeklychallenge-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.pl31
-rw-r--r--challenge-264/lubos-kolouch/perl/ch-2.pl19
-rw-r--r--challenge-264/lubos-kolouch/python/ch-1.py17
-rw-r--r--challenge-264/lubos-kolouch/python/ch-2.py12
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]