aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--challenge-050/lubos-kolouch/perl/ch-1.pl39
-rw-r--r--challenge-050/lubos-kolouch/perl/ch-2.pl28
-rw-r--r--challenge-050/lubos-kolouch/python/ch-1.py36
-rw-r--r--challenge-050/lubos-kolouch/python/ch-2.py25
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")