Skip to content

Commit 2f9387d

Browse files
authored
Merge pull request #9903 from LubosKolouch/master
Challenge 264 LK Perl Python
2 parents 529fc56 + a9582e8 commit 2f9387d

File tree

4 files changed

+79
-0
lines changed

4 files changed

+79
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
use strict;
2+
use warnings;
3+
4+
sub greatest_english_letter {
5+
my ($str) = @_;
6+
my %seen;
7+
8+
# Mark the occurrence of each letter in uppercase and lowercase
9+
foreach my $char (split //, $str) {
10+
if ($char =~ /[A-Z]/) {
11+
$seen{lc $char}{'upper'} = 1;
12+
} elsif ($char =~ /[a-z]/) {
13+
$seen{lc $char}{'lower'} = 1;
14+
}
15+
}
16+
17+
# Identify the greatest letter that appears in both cases
18+
my $greatest_letter = '';
19+
foreach my $letter (keys %seen) {
20+
if ($seen{$letter}{'upper'} && $seen{$letter}{'lower'}) {
21+
$greatest_letter = $letter if $letter gt $greatest_letter;
22+
}
23+
}
24+
25+
return uc $greatest_letter;
26+
}
27+
28+
# Test the function
29+
die "Error" unless greatest_english_letter('PeRlwEeKLy') eq 'L';
30+
die "Error" unless greatest_english_letter('ChaLlenge') eq 'L';
31+
die "Error" unless greatest_english_letter('The') eq '';
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
use strict;
2+
use warnings;
3+
4+
sub create_target_array {
5+
my ($source, $indices) = @_;
6+
my @target;
7+
8+
for my $i (0..$#$source) {
9+
splice(@target, $indices->[$i], 0, $source->[$i]);
10+
}
11+
12+
return \@target;
13+
}
14+
15+
# Test the function
16+
use Test::More tests => 3;
17+
is_deeply(create_target_array([0, 1, 2, 3, 4], [0, 1, 2, 2, 1]), [0, 4, 1, 3, 2]);
18+
is_deeply(create_target_array([1, 2, 3, 4, 0], [0, 1, 2, 3, 0]), [0, 1, 2, 3, 4]);
19+
is_deeply(create_target_array([1], [0]), [1]);
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
def greatest_english_letter(s: str) -> str:
2+
# Create sets for lowercase and uppercase letters
3+
lower_set = set(filter(str.islower, s))
4+
upper_set = set(filter(str.isupper, s))
5+
6+
# Find letters that appear in both sets
7+
common_letters = {l.lower() for l in lower_set} & {u.lower() for u in upper_set}
8+
9+
# Return the greatest letter or an empty string
10+
greatest_letter = max(common_letters, default='')
11+
return greatest_letter.upper()
12+
13+
14+
# Test the function
15+
assert greatest_english_letter('PeRlwEeKLy') == 'L'
16+
assert greatest_english_letter('ChaLlenge') == 'L'
17+
assert greatest_english_letter('The') == ''
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from typing import List
2+
3+
def create_target_array(source: List[int], indices: List[int]) -> List[int]:
4+
target = []
5+
for s, i in zip(source, indices):
6+
target.insert(i, s)
7+
return target
8+
9+
# Test the function
10+
assert create_target_array([0, 1, 2, 3, 4], [0, 1, 2, 2, 1]) == [0, 4, 1, 3, 2]
11+
assert create_target_array([1, 2, 3, 4, 0], [0, 1, 2, 3, 0]) == [0, 1, 2, 3, 4]
12+
assert create_target_array([1], [0]) == [1]

0 commit comments

Comments
 (0)