aboutsummaryrefslogtreecommitdiff
path: root/challenge-252
diff options
context:
space:
mode:
authorLubos Kolouch <lubos@kolouch.net>2024-01-20 11:11:49 +0100
committerLubos Kolouch <lubos@kolouch.net>2024-01-20 11:11:49 +0100
commit3a62439baa9defd7b6ca58a1dfde6da97a61e0e9 (patch)
tree3e6df8004aec953073ae2273941f13cbf9342c24 /challenge-252
parent8ae3d3895abc47167d4e768a2efe60616d25db60 (diff)
downloadperlweeklychallenge-club-3a62439baa9defd7b6ca58a1dfde6da97a61e0e9.tar.gz
perlweeklychallenge-club-3a62439baa9defd7b6ca58a1dfde6da97a61e0e9.tar.bz2
perlweeklychallenge-club-3a62439baa9defd7b6ca58a1dfde6da97a61e0e9.zip
feat(challenge-252/lubos-kolouch/perl,python,raku/): Challenge 252 Perl Python Raku
Diffstat (limited to 'challenge-252')
-rw-r--r--challenge-252/lubos-kolouch/perl/ch-1.pl18
-rw-r--r--challenge-252/lubos-kolouch/perl/ch-2.pl32
-rw-r--r--challenge-252/lubos-kolouch/python/ch-1.py18
-rw-r--r--challenge-252/lubos-kolouch/python/ch-2.py25
-rw-r--r--challenge-252/lubos-kolouch/raku/ch-1.raku10
-rw-r--r--challenge-252/lubos-kolouch/raku/ch-2.raku17
6 files changed, 120 insertions, 0 deletions
diff --git a/challenge-252/lubos-kolouch/perl/ch-1.pl b/challenge-252/lubos-kolouch/perl/ch-1.pl
new file mode 100644
index 0000000000..ad6c4d0544
--- /dev/null
+++ b/challenge-252/lubos-kolouch/perl/ch-1.pl
@@ -0,0 +1,18 @@
+use strict;
+use warnings;
+
+sub sum_of_special_squares {
+ my (@ints) = @_;
+ my $n = scalar @ints;
+ my $sum = 0;
+
+ for my $i ( 1 .. $n ) {
+ $sum += $ints[ $i - 1 ]**2 if $n % $i == 0;
+ }
+ return $sum;
+}
+
+# Tests
+use Test::More tests => 2;
+is( sum_of_special_squares( 1, 2, 3, 4 ), 21, 'Test Example 1' );
+is( sum_of_special_squares( 2, 7, 1, 19, 18, 3 ), 63, 'Test Example 2' );
diff --git a/challenge-252/lubos-kolouch/perl/ch-2.pl b/challenge-252/lubos-kolouch/perl/ch-2.pl
new file mode 100644
index 0000000000..b19e29559c
--- /dev/null
+++ b/challenge-252/lubos-kolouch/perl/ch-2.pl
@@ -0,0 +1,32 @@
+use strict;
+use warnings;
+
+sub unique_sum_zero {
+ my ($n) = @_;
+
+ # Generate a list of `n` unique integers that sum to zero.
+
+ my @result = map { $_, -$_ } ( 1 .. ( $n / 2 ) );
+ push @result, 0 if $n % 2 != 0;
+ return @result;
+}
+
+# Tests
+my @test1 = unique_sum_zero(5);
+print "Test 1 (5): @test1\n";
+die "Test 1 failed" unless sum(@test1) == 0;
+
+my @test2 = unique_sum_zero(3);
+print "Test 2 (3): @test2\n";
+die "Test 2 failed" unless sum(@test2) == 0;
+
+my @test3 = unique_sum_zero(1);
+print "Test 3 (1): @test3\n";
+die "Test 3 failed" unless sum(@test3) == 0;
+
+sub sum {
+ my @arr = @_;
+ my $total = 0;
+ $total += $_ for @arr;
+ return $total;
+}
diff --git a/challenge-252/lubos-kolouch/python/ch-1.py b/challenge-252/lubos-kolouch/python/ch-1.py
new file mode 100644
index 0000000000..ab82a6eb2d
--- /dev/null
+++ b/challenge-252/lubos-kolouch/python/ch-1.py
@@ -0,0 +1,18 @@
+#!/usr/bin/env python
+
+
+def sum_of_special_squares(ints: list[int]) -> int:
+ """
+ Calculates the sum of squares of all special elements in the array.
+ A special element is defined as one whose 1-based index divides the length of the array.
+
+ :param ints: List of integers
+ :return: Sum of squares of special elements
+ """
+ n = len(ints)
+ return sum(ints[i - 1] ** 2 for i in range(1, n + 1) if n % i == 0)
+
+
+# Tests
+assert sum_of_special_squares([1, 2, 3, 4]) == 21
+assert sum_of_special_squares([2, 7, 1, 19, 18, 3]) == 63
diff --git a/challenge-252/lubos-kolouch/python/ch-2.py b/challenge-252/lubos-kolouch/python/ch-2.py
new file mode 100644
index 0000000000..6bdc162db2
--- /dev/null
+++ b/challenge-252/lubos-kolouch/python/ch-2.py
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+
+
+def unique_sum_zero(n: int) -> list:
+ """
+ Generates a list of `n` unique integers that sum to zero.
+
+ Parameters:
+ n (int): The size of the list.
+
+ Returns:
+ list: A list of `n` unique integers that add up to zero.
+ """
+ # For even n, use symmetric pairs; for odd n, include 0 and symmetric pairs
+ return (
+ [i for i in range(1, n // 2 + 1)]
+ + [-i for i in range(1, n // 2 + 1)]
+ + ([0] if n % 2 != 0 else [])
+ )
+
+
+# Tests
+assert sum(unique_sum_zero(5)) == 0
+assert sum(unique_sum_zero(3)) == 0
+assert sum(unique_sum_zero(1)) == 0
diff --git a/challenge-252/lubos-kolouch/raku/ch-1.raku b/challenge-252/lubos-kolouch/raku/ch-1.raku
new file mode 100644
index 0000000000..4ecb42d8ec
--- /dev/null
+++ b/challenge-252/lubos-kolouch/raku/ch-1.raku
@@ -0,0 +1,10 @@
+sub sum-of-special-squares(@ints --> Int) {
+ my $n = @ints.elems;
+ return [+] @ints.grep(* %% $n).map({ $_ ** 2 });
+}
+
+# Tests
+use Test;
+plan 2;
+is sum-of-special-squares(1, 2, 3, 4), 21, 'Test Example 1';
+is sum-of-special-squares(2, 7, 1, 19, 18, 3), 63, 'Test Example 2';
diff --git a/challenge-252/lubos-kolouch/raku/ch-2.raku b/challenge-252/lubos-kolouch/raku/ch-2.raku
new file mode 100644
index 0000000000..edb7887efe
--- /dev/null
+++ b/challenge-252/lubos-kolouch/raku/ch-2.raku
@@ -0,0 +1,17 @@
+sub unique-sum-zero(Int $n --> Array) {
+ # Generate an array of `n` unique integers that sum to zero.
+
+ my @result = flat (1 ..^ ($n div 2 + 1)), (-1 ...^ -($n div 2 + 1));
+ @result.push(0) if $n % 2 != 0;
+ return @result;
+}
+
+# Tests
+say "Test 1 (5): ", unique-sum-zero(5);
+die "Test 1 failed" unless unique-sum-zero(5).sum == 0;
+
+say "Test 2 (3): ", unique-sum-zero(3);
+die "Test 2 failed" unless unique-sum-zero(3).sum == 0;
+
+say "Test 3 (1): ", unique-sum-zero(1);
+die "Test 3 failed" unless unique-sum-zero(1).sum == 0;