diff options
| author | Lubos Kolouch <lubos@kolouch.net> | 2024-01-20 11:11:49 +0100 |
|---|---|---|
| committer | Lubos Kolouch <lubos@kolouch.net> | 2024-01-20 11:11:49 +0100 |
| commit | 3a62439baa9defd7b6ca58a1dfde6da97a61e0e9 (patch) | |
| tree | 3e6df8004aec953073ae2273941f13cbf9342c24 /challenge-252 | |
| parent | 8ae3d3895abc47167d4e768a2efe60616d25db60 (diff) | |
| download | perlweeklychallenge-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.pl | 18 | ||||
| -rw-r--r-- | challenge-252/lubos-kolouch/perl/ch-2.pl | 32 | ||||
| -rw-r--r-- | challenge-252/lubos-kolouch/python/ch-1.py | 18 | ||||
| -rw-r--r-- | challenge-252/lubos-kolouch/python/ch-2.py | 25 | ||||
| -rw-r--r-- | challenge-252/lubos-kolouch/raku/ch-1.raku | 10 | ||||
| -rw-r--r-- | challenge-252/lubos-kolouch/raku/ch-2.raku | 17 |
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; |
