diff options
| -rw-r--r-- | challenge-050/lubos-kolouch/perl/ch-1.pl | 39 | ||||
| -rw-r--r-- | challenge-050/lubos-kolouch/perl/ch-2.pl | 28 | ||||
| -rw-r--r-- | challenge-050/lubos-kolouch/python/ch-1.py | 36 | ||||
| -rw-r--r-- | challenge-050/lubos-kolouch/python/ch-2.py | 25 |
4 files changed, 128 insertions, 0 deletions
diff --git a/challenge-050/lubos-kolouch/perl/ch-1.pl b/challenge-050/lubos-kolouch/perl/ch-1.pl new file mode 100644 index 0000000000..012f7e9525 --- /dev/null +++ b/challenge-050/lubos-kolouch/perl/ch-1.pl @@ -0,0 +1,39 @@ +#!/usr/bin/perl +use strict; +use warnings; + +sub merge_intervals { + my @intervals = @_; + @intervals = sort { $a->[0] <=> $b->[0] } @intervals; + + my @merged_intervals; + my $current_interval = $intervals[0]; + + for (my $i = 1; $i < scalar @intervals; $i++) { + if ($current_interval->[1] >= $intervals[$i]->[0]) { + $current_interval->[1] = $intervals[$i]->[1] if $current_interval->[1] < $intervals[$i]->[1]; + } else { + push @merged_intervals, $current_interval; + $current_interval = $intervals[$i]; + } + } + push @merged_intervals, $current_interval; + + return \@merged_intervals; +} + +my @intervals = ( + [2, 7], + [3, 9], + [10, 12], + [15, 19], + [18, 22], +); + +my $merged_intervals = merge_intervals(@intervals); +print "Merged intervals: "; +foreach my $interval (@{$merged_intervals}) { + print "[" . $interval->[0] . ", " . $interval->[1] . "] "; +} +print "\n"; + diff --git a/challenge-050/lubos-kolouch/perl/ch-2.pl b/challenge-050/lubos-kolouch/perl/ch-2.pl new file mode 100644 index 0000000000..0d11f7e739 --- /dev/null +++ b/challenge-050/lubos-kolouch/perl/ch-2.pl @@ -0,0 +1,28 @@ +#!/usr/bin/perl +use strict; +use warnings; + +sub find_noble_integer { + my @list = @_; + @list = sort { $a <=> $b } @list; + + for (my $i = 0; $i < scalar @list - 1; $i++) { + if ($list[$i] == $list[$i + 1]) { + next; + } + if ($list[$i] == scalar(@list) - $i - 1) { + return $list[$i]; + } + } + return; +} + +my @L = (2, 6, 1, 3); +my $noble_integer = find_noble_integer(@L); + +if (defined $noble_integer) { + print "Noble Integer: $noble_integer\n"; +} else { + print "No Noble Integer found\n"; +} + diff --git a/challenge-050/lubos-kolouch/python/ch-1.py b/challenge-050/lubos-kolouch/python/ch-1.py new file mode 100644 index 0000000000..26fb8467da --- /dev/null +++ b/challenge-050/lubos-kolouch/python/ch-1.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from typing import List, Tuple + + +def merge_intervals(intervals: List[Tuple[int, int]]) -> List[Tuple[int, int]]: + intervals.sort(key=lambda x: x[0]) + + merged_intervals = [] + current_interval = intervals[0] + + for interval in intervals[1:]: + if current_interval[1] >= interval[0]: + current_interval = (current_interval[0], + max(current_interval[1], interval[1])) + else: + merged_intervals.append(current_interval) + current_interval = interval + + merged_intervals.append(current_interval) + + return merged_intervals + + +if __name__ == "__main__": + intervals = [ + (2, 7), + (3, 9), + (10, 12), + (15, 19), + (18, 22), + ] + + merged_intervals = merge_intervals(intervals) + print("Merged intervals:", merged_intervals) diff --git a/challenge-050/lubos-kolouch/python/ch-2.py b/challenge-050/lubos-kolouch/python/ch-2.py new file mode 100644 index 0000000000..c2820cbc4d --- /dev/null +++ b/challenge-050/lubos-kolouch/python/ch-2.py @@ -0,0 +1,25 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from typing import List, Union + + +def find_noble_integer(lst: List[int]) -> Union[int, None]: + lst.sort() + + for i in range(len(lst) - 1): + if lst[i] == lst[i + 1]: + continue + if lst[i] == len(lst) - i - 1: + return lst[i] + return None + + +if __name__ == "__main__": + L = [2, 6, 1, 3] + noble_integer = find_noble_integer(L) + + if noble_integer is not None: + print("Noble Integer:", noble_integer) + else: + print("No Noble Integer found") |
