diff options
Diffstat (limited to 'challenge-320')
63 files changed, 1689 insertions, 105 deletions
diff --git a/challenge-320/0rir/raku/ch-1.raku b/challenge-320/0rir/raku/ch-1.raku new file mode 100644 index 0000000000..c8fc36a119 --- /dev/null +++ b/challenge-320/0rir/raku/ch-1.raku @@ -0,0 +1,40 @@ +#!/usr/bin/env raku +# :vim ft=raku sw=4 expandtab # 🦋 ∅∪∩∋∈∉⊆ ≡ ≢ « » ∴ +use v6.d; +use Test; + +=begin comment +320-Task 1: Maximum Count Submitted by: Mohammad Sajid Anwar +You are given an array of integers. + +Write a script to return the maximum between the number of positive and negative integers. Zero is neither positive nor negative. + + +Example 1 +Input: @ints = (-3, -2, -1, 1, 2, 3) +Output: 3 + +… +=end comment + +my @Test = + # in exp + (-3, -2, -1, 1, 2, 3), 3, + (-2, -1, 0, 0, 1), 2, + (1, 2, 3, 4), 4, + (0,0), 0, + (9,), 1, + (-9,), 1, +; +plan @Test ÷ 2; + +sub task( @a) { max +@a.grep( * > 0), +@a.grep( * < 0) } + +for @Test -> @in, $exp { + is task( @in), $exp, "{$exp // $exp.^name()} <- @in.raku()"; +} +done-testing; + +my @int = -3, -2, -1, 1, 2, 3; + +say qq{\nInput: @int = @int.raku()\nOutput: }, task @int; diff --git a/challenge-320/0rir/raku/ch-2.raku b/challenge-320/0rir/raku/ch-2.raku new file mode 100644 index 0000000000..e8d6f180c4 --- /dev/null +++ b/challenge-320/0rir/raku/ch-2.raku @@ -0,0 +1,38 @@ +#!/usr/bin/env raku +# :vim ft=raku sw=4 expandtab # 🦋 ∅∪∩∋∈∉⊆ ≡ ≢ « » ∴ +use v6.d; +use Test; + +=begin comment +320-2: Sum Difference Submitted by: Mohammad Sajid Anwar +You are given an array of positive integers. + +Write a script to return the absolute difference between digit sum and element sum of the given array. + +Example 1 +Input: @ints = (1, 23, 4, 5) +Output: 18 +… +=end comment + +my @Test = + # in exp + (1, 23, 4, 5), 18, + (1, 2, 3, 4, 5), 0, + (1, 2, 34), 27, + (), 0, + (12,), 9, +; + +plan @Test ÷ 2; + +sub task( @a) { ( @a.sum - @a.join.comb.sum ).abs } + +for @Test -> @in, $exp { + is task( @in), $exp, "{$exp // $exp.^name()} <- @in.raku()"; +} +done-testing; + +my @int = 1, 23, 4, 5; + +say qq{\nInput: @int = @int.raku()\nOutput: }, task( @int); diff --git a/challenge-320/adam-russell/blog.txt b/challenge-320/adam-russell/blog.txt new file mode 100644 index 0000000000..e567a8bf44 --- /dev/null +++ b/challenge-320/adam-russell/blog.txt @@ -0,0 +1 @@ +http://rabbitfarm.com/cgi-bin/blosxom/perl/2025/05/10 diff --git a/challenge-320/adam-russell/blog1.txt b/challenge-320/adam-russell/blog1.txt new file mode 100644 index 0000000000..8610812f65 --- /dev/null +++ b/challenge-320/adam-russell/blog1.txt @@ -0,0 +1 @@ +http://rabbitfarm.com/cgi-bin/blosxom/prolog/2025/05/11 diff --git a/challenge-320/adam-russell/perl/ch-1.pl b/challenge-320/adam-russell/perl/ch-1.pl new file mode 100644 index 0000000000..40e4e23878 --- /dev/null +++ b/challenge-320/adam-russell/perl/ch-1.pl @@ -0,0 +1,23 @@ + + +use v5.40; + + + sub maximum_count{ + my @numbers = @_; + + my $negatives = 0 + grep {$_ < 0} @numbers; + + + my $positives = 0 + grep {$_ > 0} @numbers; + + return (sort {$b <=> $a} ($positives, $negatives))[0]; + } + + +MAIN:{ + say maximum_count -3, -2, -1, 1, 2, 3; + say maximum_count -2, -1, 0, 0, 1; + say maximum_count 1, 2, 3, 4; +} + diff --git a/challenge-320/adam-russell/perl/ch-2.pl b/challenge-320/adam-russell/perl/ch-2.pl new file mode 100644 index 0000000000..432cee8e70 --- /dev/null +++ b/challenge-320/adam-russell/perl/ch-2.pl @@ -0,0 +1,27 @@ + + +use v5.40; + + + sub sum_difference{ + my @numbers = @_; + + my @digits; + do{ + push @digits, split //, $_; + } for @numbers; + my $digit_sum = unpack(q/%32I*/, pack(q/I*/, @digits)); + + + my $element_sum = unpack(q/%32I*/, pack(q/I*/, @numbers)); + + return abs($digit_sum - $element_sum); + } + + +MAIN:{ + say sum_difference 1, 23, 4, 5; + say sum_difference 1, 2, 3, 4, 5; + say sum_difference 1, 2, 34; +} + diff --git a/challenge-320/adam-russell/prolog/ch-1.p b/challenge-320/adam-russell/prolog/ch-1.p new file mode 100644 index 0000000000..f8aa1b85c0 --- /dev/null +++ b/challenge-320/adam-russell/prolog/ch-1.p @@ -0,0 +1,27 @@ + + + identify_negatives(Number, 1):- + Number < 0. + identify_negatives(_, 0). + + + identify_positives(Number, 1):- + Number > 0. + identify_positives(_, 0). + + + count_negatives(Numbers, Count):- + maplist(identify_negatives, Numbers, Negatives), + sum_list(Negatives, Count). + + + count_positives(Numbers, Count):- + maplist(identify_positives, Numbers, Positives), + sum_list(Positives, Count). + + + maximum_count(Numbers, MaximumCount):- + count_negatives(Numbers, NegativesCount), + count_positives(Numbers, PositivesCount), + max_list([NegativesCount, PositivesCount], MaximumCount). + diff --git a/challenge-320/adam-russell/prolog/ch-2.p b/challenge-320/adam-russell/prolog/ch-2.p new file mode 100644 index 0000000000..16b545b640 --- /dev/null +++ b/challenge-320/adam-russell/prolog/ch-2.p @@ -0,0 +1,22 @@ + + + char_number(C, N):- + number_chars(N, [C]). + + + element_sum(Numbers, ElementSum):- + sum_list(Numbers, ElementSum). + + + digit_sum(Numbers, DigitSum):- + maplist(number_chars, Numbers, Characters), + flatten(Characters, CharactersFlattened), + maplist(char_number, CharactersFlattened, Digits), + sum_list(Digits, DigitSum). + + + sum_differences(Numbers, Differences):- + element_sum(Numbers, ElementSum), + digit_sum(Numbers, DigitSum), + Differences is abs(DigitSum - ElementSum). + diff --git a/challenge-320/arne-sommer/blog.txt b/challenge-320/arne-sommer/blog.txt new file mode 100644 index 0000000000..2126ca62de --- /dev/null +++ b/challenge-320/arne-sommer/blog.txt @@ -0,0 +1 @@ +https://raku-musings.com/count-difference.html diff --git a/challenge-320/arne-sommer/raku/ch-1.raku b/challenge-320/arne-sommer/raku/ch-1.raku new file mode 100755 index 0000000000..c681b0be63 --- /dev/null +++ b/challenge-320/arne-sommer/raku/ch-1.raku @@ -0,0 +1,11 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 1 && all(@ints) ~~ Int, + :v(:$verbose)); + +my $pos = @ints.grep( * > 0 ).elems; +my $neg = @ints.grep( * < 0 ).elems; + +say ": There are $pos positive integers\n: There are $neg negative integers" if $verbose; + +say ($pos, $neg).max; diff --git a/challenge-320/arne-sommer/raku/ch-2.raku b/challenge-320/arne-sommer/raku/ch-2.raku new file mode 100755 index 0000000000..09a472106b --- /dev/null +++ b/challenge-320/arne-sommer/raku/ch-2.raku @@ -0,0 +1,15 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ Int && all(@ints) > 0, + :v(:$verbose)); + +my $elem-sum = @ints.sum; +my $digit-sum = @ints>>.comb>>.sum.sum; + +if $verbose +{ + say ": Element sum: $elem-sum"; + say ": Digit sum: $digit-sum"; +} + +say abs($elem-sum - $digit-sum); diff --git a/challenge-320/arne-sommer/raku/maximum-count b/challenge-320/arne-sommer/raku/maximum-count new file mode 100755 index 0000000000..c681b0be63 --- /dev/null +++ b/challenge-320/arne-sommer/raku/maximum-count @@ -0,0 +1,11 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 1 && all(@ints) ~~ Int, + :v(:$verbose)); + +my $pos = @ints.grep( * > 0 ).elems; +my $neg = @ints.grep( * < 0 ).elems; + +say ": There are $pos positive integers\n: There are $neg negative integers" if $verbose; + +say ($pos, $neg).max; diff --git a/challenge-320/arne-sommer/raku/sum-difference b/challenge-320/arne-sommer/raku/sum-difference new file mode 100755 index 0000000000..09a472106b --- /dev/null +++ b/challenge-320/arne-sommer/raku/sum-difference @@ -0,0 +1,15 @@ +#! /usr/bin/env raku + +unit sub MAIN (*@ints where @ints.elems > 0 && all(@ints) ~~ Int && all(@ints) > 0, + :v(:$verbose)); + +my $elem-sum = @ints.sum; +my $digit-sum = @ints>>.comb>>.sum.sum; + +if $verbose +{ + say ": Element sum: $elem-sum"; + say ": Digit sum: $digit-sum"; +} + +say abs($elem-sum - $digit-sum); diff --git a/challenge-320/barroff/bqn/ch-1.bqn b/challenge-320/barroff/bqn/ch-1.bqn new file mode 100644 index 0000000000..6d4c23aaf0 --- /dev/null +++ b/challenge-320/barroff/bqn/ch-1.bqn @@ -0,0 +1,7 @@ +#/usr/bin/env bqn + +MaximumCount ← (+´0⊸<)⌈(+´0⊸>) + +•Show MaximumCount ⟨-3, -2, -1, 1, 2, 3⟩ +•Show MaximumCount ⟨-2, -1, 0, 0, 1⟩ +•Show MaximumCount ⟨1, 2, 3, 4⟩ diff --git a/challenge-320/barroff/bqn/ch-2.bqn b/challenge-320/barroff/bqn/ch-2.bqn new file mode 100644 index 0000000000..242be9da5b --- /dev/null +++ b/challenge-320/barroff/bqn/ch-2.bqn @@ -0,0 +1,9 @@ +#/usr/bin/env bqn + +DigitSum ← { (10|𝕩) + (0⊸<)◶ 0‿𝕊 𝕩(⌊∘÷)10 } +SumDifference ← +´-(+´ DigitSum¨) + +•Show SumDifference 1‿23‿4‿5 +•Show SumDifference 1‿2‿3‿4‿5 +•Show SumDifference 1‿2‿34 +•Show SumDifference 236‿416‿336‿350 diff --git a/challenge-320/barroff/raku/ch-1.p6 b/challenge-320/barroff/raku/ch-1.p6 new file mode 100644 index 0000000000..6a4395921b --- /dev/null +++ b/challenge-320/barroff/raku/ch-1.p6 @@ -0,0 +1,25 @@ +#!/usr/bin/env raku + +use v6.d; + +sub maximum-count(@ints --> Int) { + my $p-digits = grep({ $_ > 0 }, @ints).elems; + my $n-digits = grep({ $_ < 0 }, @ints).elems; + return max($p-digits, $n-digits); +} + +#| Run test cases +multi sub MAIN('test') { + use Test; + plan 3; + + is maximum-count([-3, -2, -1, 1, 2, 3]), 3, + 'works for "[-3, -2, -1, 1, 2, 3]"'; + is maximum-count([-2, -1, 0, 0, 1]), 2, 'works for "[-2, -1, 0, 0, 1]"'; + is maximum-count([1, 2, 3, 4]), 4, 'works for "[1, 2, 3, 4]"'; +} + +#| Take user provided numbers like 3, 30, 34, 5, 9 +multi sub MAIN(*@ints) { + say maximum-count(@ints); +} diff --git a/challenge-320/barroff/raku/ch-2.p6 b/challenge-320/barroff/raku/ch-2.p6 new file mode 100644 index 0000000000..9d7fd3a16c --- /dev/null +++ b/challenge-320/barroff/raku/ch-2.p6 @@ -0,0 +1,24 @@ +#!/usr/bin/env raku + +use v6.d; + +sub sum-difference(@ints --> Int) { + my Int $es = sum(@ints); + my Int $ds = sum(@ints.join.comb); + return abs($es - $ds); +} + +#| Run test cases +multi sub MAIN('test') { + use Test; + plan 3; + + is sum-difference([1, 23, 4, 5]), 18, 'works for "[1, 23, 4, 5]"'; + is sum-difference([1, 2, 3, 4, 5]), 0, 'works for "[1, 2, 3, 4, 5]"'; + is sum-difference([1, 2, 34]), 27, 'works for "[1, 2, 34]"'; +} + +#| Take user provided numbers like 3, 30, 34, 5, 9 +multi sub MAIN(*@ints) { + say sum-difference(@ints); +} diff --git a/challenge-320/hvukman/k/320_p1.k b/challenge-320/hvukman/k/320_p1.k new file mode 100644 index 0000000000..be98670e20 --- /dev/null +++ b/challenge-320/hvukman/k/320_p1.k @@ -0,0 +1,7 @@ +test: {|/(+/)'(0>x;0<x)} +inp: -3 -2 -1 1 2 3 +inp2: -2 -1 0 0 1 +inp3: 1 2 3 4 +test inp +test inp2 +test inp3 diff --git a/challenge-320/hvukman/k/320_p2.k b/challenge-320/hvukman/k/320_p2.k new file mode 100644 index 0000000000..08c706c213 --- /dev/null +++ b/challenge-320/hvukman/k/320_p2.k @@ -0,0 +1,8 @@ +ints: 1 23 4 5 +split: {.'(#x;1)#x } +abs:{x|-x} +abs(+/,//split'$ints)-(+/ints) +ints: 1 2 3 4 5 +abs(+/,//split'$ints)-(+/ints) +ints: 1 2 34 +abs(+/,//split'$ints)-(+/ints) diff --git a/challenge-320/hvukman/retro/320_p1.retro b/challenge-320/hvukman/retro/320_p1.retro new file mode 100644 index 0000000000..e782015472 --- /dev/null +++ b/challenge-320/hvukman/retro/320_p1.retro @@ -0,0 +1,12 @@ +Part 1
+bi to get two arrays bigger than zero and less
+than count the length and print the bigger one
+~~~
+'Part_1 s:put nl
+:choosemax (a-n) [ [ #0 lt? ] a:filter a:length ] [ [ #0 gt? ] a:filter a:length ] bi dup-pair gt? [ drop n:put nl ] [ n:put nl ] choose ;
+
+{ #-3 #-2 #-1 #1 #2 #3 } choosemax
+{ #-2 #-1 #0 #0 #1 } choosemax
+{ #1 #2 #3 #4 } choosemax
+
+~~~
\ No newline at end of file diff --git a/challenge-320/hvukman/retro/320_p2.retro b/challenge-320/hvukman/retro/320_p2.retro new file mode 100644 index 0000000000..bdab0ecc91 --- /dev/null +++ b/challenge-320/hvukman/retro/320_p2.retro @@ -0,0 +1,20 @@ +Part 2
+make number to strings, and then chars to numbers
+put in array and then reduce
+~~~
+'Part_2 s:put nl
+
+:inp1 (-a) { #1 #23 #4 #5 } ;
+:inp2 (-a) { #1 #2 #3 #4 #5 } ;
+:inp3 (-a) { #1 #2 #34 } ;
+:stringtonum (-q) [ [ c:to-number ] s:for-each ] ;
+
+
+:sum (a-n) #0 [ + ] a:reduce ;
+inp1 sum
+{ inp1 [ n:to-string ] a:map stringtonum a:for-each } sum - n:abs n:put nl
+inp2 sum
+{ inp2 [ n:to-string ] a:map stringtonum a:for-each } sum - n:abs n:put nl
+inp3 sum
+{ inp3 [ n:to-string ] a:map stringtonum a:for-each } sum - n:abs n:put nl
+~~~
\ No newline at end of file diff --git a/challenge-320/jeanluc2020/blog-1.txt b/challenge-320/jeanluc2020/blog-1.txt new file mode 100644 index 0000000000..305c891870 --- /dev/null +++ b/challenge-320/jeanluc2020/blog-1.txt @@ -0,0 +1 @@ +http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/perl/theweeklychallenge-320-1.html diff --git a/challenge-320/jeanluc2020/blog-2.txt b/challenge-320/jeanluc2020/blog-2.txt new file mode 100644 index 0000000000..d1550725b1 --- /dev/null +++ b/challenge-320/jeanluc2020/blog-2.txt @@ -0,0 +1 @@ +http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/perl/theweeklychallenge-320-2.html diff --git a/challenge-320/jeanluc2020/perl/ch-1.pl b/challenge-320/jeanluc2020/perl/ch-1.pl new file mode 100755 index 0000000000..113a336843 --- /dev/null +++ b/challenge-320/jeanluc2020/perl/ch-1.pl @@ -0,0 +1,72 @@ +#!/usr/bin/env perl +# https://theweeklychallenge.org/blog/perl-weekly-challenge-320/#TASK1 +# +# Task 1: Maximum Count +# ===================== +# +# You are given an array of integers. +# +# Write a script to return the maximum between the number of positive and +# negative integers. Zero is neither positive nor negative. +# +## Example 1 +## +## Input: @ints = (-3, -2, -1, 1, 2, 3) +## Output: 3 +## +## There are 3 positive integers. +## There are 3 negative integers. +## The maximum between 3 and 3 is 3. +# +# +## Example 2 +## +## Input: @ints = (-2, -1, 0, 0, 1) +## Output: 2 +## +## There are 1 positive integers. +## There are 2 negative integers. +## The maximum between 2 and 1 is 2. +# +# +## Example 3 +## +## Input: @ints = (1, 2, 3, 4) +## Output: 4 +## +## There are 4 positive integers. +## There are 0 negative integers. +## The maximum between 4 and 0 is 4. +# +############################################################ +## +## discussion +## +############################################################ +# +# We just count the positive and the negative integers. +# Then we look which of these two numbers is bigger. + +use v5.36; + +maximum_count(-3, -2, -1, 1, 2, 3); +maximum_count(-2, -1, 0, 0, 1); +maximum_count(1, 2, 3, 4); + +sub maximum_count(@ints) { + say "Input: (" . join(", ", @ints) . ")"; + my $neg = 0; + my $pos = 0; + foreach my $elem (@ints) { + if($elem > 0) { + $pos++; + } elsif ( $elem < 0 ) { + $neg++; + } + } + if($neg > $pos) { + say "Output: $neg"; + } else { + say "Output: $pos"; + } +} diff --git a/challenge-320/jeanluc2020/perl/ch-2.pl b/challenge-320/jeanluc2020/perl/ch-2.pl new file mode 100755 index 0000000000..ad575b21db --- /dev/null +++ b/challenge-320/jeanluc2020/perl/ch-2.pl @@ -0,0 +1,70 @@ +#!/usr/bin/env perl +# https://theweeklychallenge.org/blog/perl-weekly-challenge-320/#TASK2 +# +# Task 2: Sum Difference +# ====================== +# +# You are given an array of positive integers. +# +# Write a script to return the absolute difference between digit sum and +# element sum of the given array. +# +## Example 1 +## +## Input: @ints = (1, 23, 4, 5) +## Output: 18 +## +## Element sum: 1 + 23 + 4 + 5 => 33 +## Digit sum: 1 + 2 + 3 + 4 + 5 => 15 +## Absolute difference: | 33 - 15 | => 18 +# +# +## Example 2 +## +## Input: @ints = (1, 2, 3, 4, 5) +## Output: 0 +## +## Element sum: 1 + 2 + 3 + 4 + 5 => 15 +## Digit sum: 1 + 2 + 3 + 4 + 5 => 15 +## Absolute difference: | 15 - 15 | => 0 +# +# +## Example 3 +## +## Input: @ints = (1, 2, 34) |
