diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-04-05 01:03:42 +0100 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2021-04-05 01:03:42 +0100 |
| commit | 72e42f65a2da702d8f836bd6dca80de3ccdfc33b (patch) | |
| tree | 7ebfa2c7f0dff8550182f0d14e35ab9a59fef4c9 | |
| parent | bd67620d422d961956503492d5c165082c93c5a5 (diff) | |
| download | perlweeklychallenge-club-72e42f65a2da702d8f836bd6dca80de3ccdfc33b.tar.gz perlweeklychallenge-club-72e42f65a2da702d8f836bd6dca80de3ccdfc33b.tar.bz2 perlweeklychallenge-club-72e42f65a2da702d8f836bd6dca80de3ccdfc33b.zip | |
- Added solutions by Laurent Rosenfeld.
24 files changed, 1802 insertions, 1673 deletions
diff --git a/challenge-106/laurent-rosenfeld/blog.txt b/challenge-106/laurent-rosenfeld/blog.txt new file mode 100644 index 0000000000..78af73e81a --- /dev/null +++ b/challenge-106/laurent-rosenfeld/blog.txt @@ -0,0 +1 @@ +http://blogs.perl.org/users/laurent_r/2021/04/perl-weekly-challenge-106-maximum-gap-and-decimal-string.html diff --git a/challenge-106/laurent-rosenfeld/julia/ch-1.julia b/challenge-106/laurent-rosenfeld/julia/ch-1.julia new file mode 100644 index 0000000000..3e0ee382f0 --- /dev/null +++ b/challenge-106/laurent-rosenfeld/julia/ch-1.julia @@ -0,0 +1,4 @@ +tests = [17, 2, 9, 3, 5] +sorted = sort(tests) +gaps = map(i -> sorted[i] - sorted[i - 1], 2:length(sorted)) +@printf("Max gap is %i", maximum(gaps)) diff --git a/challenge-106/laurent-rosenfeld/perl/ch-1.pl b/challenge-106/laurent-rosenfeld/perl/ch-1.pl new file mode 100644 index 0000000000..28a96f1bc8 --- /dev/null +++ b/challenge-106/laurent-rosenfeld/perl/ch-1.pl @@ -0,0 +1,11 @@ +use strict; +use warnings; +use feature "say"; + +my @input = (2, 9, 3, 5); +my @sorted = sort { $a <=> $b} @input; +my $max = 0; +for my $i (1..$#sorted) { + $max = $sorted[$i] - $sorted[$i-1] if $sorted[$i] - $sorted[$i-1] > $max; +} +say "Max gap: $max"; diff --git a/challenge-106/laurent-rosenfeld/perl/ch-2.pl b/challenge-106/laurent-rosenfeld/perl/ch-2.pl new file mode 100644 index 0000000000..d490bed19b --- /dev/null +++ b/challenge-106/laurent-rosenfeld/perl/ch-2.pl @@ -0,0 +1,32 @@ +use strict; +use warnings; +use feature "say"; + +sub compute_dec_str { + my ($num, $den) = @_; + die "Please provide positive numbers" if $num < 0 or $den <= 0; + my $c = 10 * ($num % $den); + my $quotient = $num/$den; + # get the quotient leading 0s if any + $quotient =~ s/(^\d+\.?0*)\d*/$1/; + $c *= 10 for split " ", ($quotient =~ /\.(0+)/); + my (@digits, %passed); + my $i = 0; + while (1) { + if (exists $passed{$c}) { + my @repeated = @digits[$passed{$c}..$#digits]; + my $result = $quotient . join("", @digits[0..$passed{$c} - 1]); + if ( @repeated > 1 or $repeated[0] != 0) { + $result .= "(" . join("", @repeated) . ")"; + } + $result =~ s/\.$//; # remove trailing dot if any + return $result; + } + push @digits, int($c / $den); + $passed{$c} = $i; + $i++; + $c = 10 * ($c % $den); + } +} +my $result = compute_dec_str @ARGV; +say $result; diff --git a/challenge-106/laurent-rosenfeld/python/ch-1.py b/challenge-106/laurent-rosenfeld/python/ch-1.py new file mode 100644 index 0000000000..81c1610bef --- /dev/null +++ b/challenge-106/laurent-rosenfeld/python/ch-1.py @@ -0,0 +1,6 @@ +tests = [2, 9, 3, 5] +sorted = sorted(tests) +max = 0 if len(sorted) <= 1 else ( + max(map(lambda i: sorted[i] - sorted[i-1], + range(1, len(sorted) )))) +print("Max gap = ", max) diff --git a/challenge-106/laurent-rosenfeld/python/ch-2.py b/challenge-106/laurent-rosenfeld/python/ch-2.py new file mode 100644 index 0000000000..ec377908a7 --- /dev/null +++ b/challenge-106/laurent-rosenfeld/python/ch-2.py @@ -0,0 +1,19 @@ +def divide(m, n): + quotient, c = str(m // n) + ".", 10 * (m % n) + while c and c < n: + c *= 10 + quotient += "0" + digits = "" + passed = {} + i = 0 + while True: + if c in passed: + prefix = digits[:passed[c]] + cycle = digits[passed[c]:] + result = quotient + prefix + "(" + cycle + ")" + return result.replace("(0)", "").rstrip(".") + q, r = c // n, c % n + passed[c] = i + digits += str(q) + i += 1 + c = 10 * r diff --git a/challenge-106/laurent-rosenfeld/raku/ch-1.raku b/challenge-106/laurent-rosenfeld/raku/ch-1.raku new file mode 100644 index 0000000000..fcbfa6d509 --- /dev/null +++ b/challenge-106/laurent-rosenfeld/raku/ch-1.raku @@ -0,0 +1,9 @@ +use v6; + +my @input = 2, 9, 3, 5; +my @sorted = sort @input; +my $max = 0; +for 1..@sorted.end -> $i { + $max = @sorted[$i] - @sorted[$i-1] if @sorted[$i] - @sorted[$i-1] > $max; +} +say "Max gap: $max"; diff --git a/challenge-106/laurent-rosenfeld/raku/ch-2.raku b/challenge-106/laurent-rosenfeld/raku/ch-2.raku new file mode 100644 index 0000000000..24d35c57cc --- /dev/null +++ b/challenge-106/laurent-rosenfeld/raku/ch-2.raku @@ -0,0 +1,7 @@ +use v6; + +sub MAIN( Int $num, Int $den where $den != 0 ) { + my ($non-rep, $repeating) = ($num / $den).base-repeating; + my $suffix = $repeating ?? "($repeating)" !! ""; + printf '%s%s', $non-rep, $suffix; +} diff --git a/challenge-106/laurent-rosenfeld/ruby/ch-1.rb b/challenge-106/laurent-rosenfeld/ruby/ch-1.rb new file mode 100644 index 0000000000..ae3e442563 --- /dev/null +++ b/challenge-106/laurent-rosenfeld/ruby/ch-1.rb @@ -0,0 +1,4 @@ +test = [2, 9, 3, 5] +sorted = test.sort +gaps = (1.upto(sorted.length()-1)).map { |i| sorted[i] - sorted[i - 1] } +print "Max gap is: ", gaps.max diff --git a/challenge-106/laurent-rosenfeld/rust/ch-1.rs b/challenge-106/laurent-rosenfeld/rust/ch-1.rs new file mode 100644 index 0000000000..eb0132df7c --- /dev/null +++ b/challenge-106/laurent-rosenfeld/rust/ch-1.rs @@ -0,0 +1,6 @@ +fn main () { + let mut test = vec![2, 9, 3, 5]; + test.sort(); + let gaps: Vec<i32> = (1..test.len()).map(|i| test[i] - test[i-1]).collect(); + println!("Max gap is: {:?}", gaps.iter().max()); +} diff --git a/challenge-106/laurent-rosenfeld/scala/ch-1.scala b/challenge-106/laurent-rosenfeld/scala/ch-1.scala new file mode 100644 index 0000000000..b0f803ee3d --- /dev/null +++ b/challenge-106/laurent-rosenfeld/scala/ch-1.scala @@ -0,0 +1,7 @@ +object root extends App { + val tests = Seq(2, 9, 3, 5) + val sorted = tests.sorted + val max = if (sorted.size <= 1) 0 else + (1 to sorted.length - 1).map(i => sorted(i) - sorted(i - 1)).max + println("Max gap is: " + max) +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index dc0282c42e..bfd9aa725d 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,205 +1,18 @@ { - "legend" : { - "enabled" : 0 - }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, - "subtitle" : { - "text" : "[Champions: 31] Last updated at 2021-04-04 23:51:22 GMT" - }, - "tooltip" : { - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", - "followPointer" : 1 - }, - "xAxis" : { - "type" : "category" - }, "chart" : { "type" : "column" }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } - }, - "title" : { - "text" : "Perl Weekly Challenge - 106" + "xAxis" : { + "type" : "category" }, - "series" : [ - { - "colorByPoint" : 1, - "name" : "Perl Weekly Challenge - 106", - "data" : [ - { - "name" : "Aaron Smith", - "drilldown" : "Aaron Smith", - "y" : 3 - }, - { - "y" : 4, - "drilldown" : "Abigail", - "name" : "Abigail" - }, - { - "drilldown" : "Adam Russell", - "name" : "Adam Russell", - "y" : 3 - }, - { - "drilldown" : "Arne Sommer", - "name" : "Arne Sommer", - "y" : 3 - }, - { - "y" : 4, - "drilldown" : "Athanasius", - "name" : "Athanasius" - }, - { - "y" : 2, - "drilldown" : "Ben Davies", - "name" : "Ben Davies" - }, - { - "y" : 2, - "drilldown" : "Cheok-Yin Fung", - "name" : "Cheok-Yin Fung" - }, - { - "y" : 1, - "drilldown" : "Cristina Heredia", - "name" : "Cristina Heredia" - }, - { - "y" : 3, - "drilldown" : "Dave Jacoby", - "name" : "Dave Jacoby" - }, - { - "y" : 2, - "name" : "E. Choroba", - "drilldown" : "E. Choroba" - }, - { - "y" : 4, - "drilldown" : "Flavio Poletti", - "name" : "Flavio Poletti" - }, - { - "drilldown" : "James Smith", - "name" : "James Smith", - "y" : 2 - }, - { - "name" : "Jan Krnavek", - "drilldown" : "Jan Krnavek", - "y" : 2 - }, - { - "y" : 2, - "name" : "Joan Mimosinnet", - "drilldown" : "Joan Mimosinnet" - }, - { - "drilldown" : "Jorg Sommrey", - "name" : "Jorg Sommrey", - "y" : 2 - }, - { - "y" : 1, - "drilldown" : "Lance Wicks", - "name" : "Lance Wicks" - }, - { - "y" : 1, - "name" : "Lubos Kolouch", - "drilldown" : "Lubos Kolouch" - }, - { - "y" : 4, - "name" : "Luca Ferrari", - "drilldown" : "Luca Ferrari" - }, - { - "y" : 2, - "name" : "Mark Anderson", - "drilldown" : "Mark Anderson" - }, - { - "drilldown" : "Mohammad S Anwar", - "name" : "Mohammad S Anwar", - "y" : 2 - }, - { - "name" : "Niels van Dijke", - "drilldown" : "Niels van Dijke", - "y" : 2 - }, - { - "name" : "Paulo Custodio", - "drilldown" : "Paulo Custodio", - "y" : 2 - }, - { - "drilldown" : "Pete Houston", - "name" : "Pete Houston", - "y" : 2 - }, - { - "name" : "Peter Mayr", - "drilldown" : "Peter Mayr", - "y" : 1 - }, - { - "y" : 5, - "name" : "Roger Bell_West", - "drilldown" : "Roger Bell_West" - }, - { - "y" : 3, - "name" : "Simon Green", - "drilldown" : "Simon Green" - }, - { - "drilldown" : "Simon Proctor", - "name" : "Simon Proctor", - "y" : 1 - }, - { - "drilldown" : "Stuart Little", - "name" : "Stuart Little", - "y" : 4 - }, - { - "y" : 4, - "drilldown" : "Ulrich Rieke", - "name" : "Ulrich Rieke" - }, - { - "y" : 3, - "drilldown" : "W. Luis Mochan", - "name" : "W. Luis Mochan" - }, - { - "y" : 2, - "drilldown" : "Wanderdoc", - "name" : "Wanderdoc" - } - ] - } - ], "drilldown" : { "series" : [ { - "id" : "Aaron Smith", "data" : [ [ "Raku", @@ -210,7 +23,8 @@ 1 ] ], - "name" : "Aaron Smith" + "name" : "Aaron Smith", + "id" : "Aaron Smith" }, { "data" : [ @@ -227,8 +41,6 @@ "name" : "Abigail" }, { - "name" : "Adam Russell", - "id" : "Adam Russell", "data" : [ [ "Perl", @@ -238,7 +50,9 @@ "Blog", 1 ] - ] + ], + "id" : "Adam Russell", + "name" : "Adam Russell" }, { "data" : [ @@ -255,8 +69,6 @@ "name" : "Arne Sommer" }, { - "name" : "Athanasius", - "id" : "Athanasius", "data" : [ [ "Perl", @@ -266,41 +78,41 @@ "Raku", 2 ] - ] + ], + "name" : "Athanasius", + "id" : "Athanasius" }, { - "name" : "Ben Davies", - "id" : "Ben Davies", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Ben Davies", + "name" : "Ben Davies" }, { - "id" : "Cheok-Yin Fung", "data" : [ [ "Perl", 2 ] ], + "id" : "Cheok-Yin Fung", "name" : "Cheok-Yin Fung" }, { + "id" : "Cristina Heredia", + "name" : "Cristina Heredia", "data" : [ [ "Perl", 1 ] - ], - "id" : "Cristina Heredia", - "name" : "Cristina Heredia" + ] }, { - "name" : "Dave Jacoby", - "id" : "Dave Jacoby", "data" : [ [ "Perl", @@ -310,19 +122,23 @@ "Blog", 1 ] - ] + ], + "name" : "Dave Jacoby", + "id" : "Dave Jacoby" }, { - "name" : "E. Choroba", "data" : [ [ "Perl", 2 ] ], + "name" : "E. Choroba", "id" : "E. Choroba" }, { + "id" : "Flavio Poletti", + "name" : "Flavio Poletti", "data" : [ [ "Perl", @@ -332,18 +148,16 @@ "Blog", 2 ] - ], - "id" : "Flavio Poletti", - "name" : "Flavio Poletti" + ] }, { - "id" : "James Smith", "data" : [ [ "Perl", 2 ] ], + "id" : "James Smith", "name" : "James Smith" }, { @@ -357,24 +171,24 @@ "name" : "Jan Krnavek" }, { + "name" : "Joan Mimosinnet", + "id" : "Joan Mimosinnet", "data" : [ [ "Raku", 2 ] - ], - "id" : "Joan Mimosinnet", - "name" : "Joan Mimosinnet" + ] }, { "name" : "Jorg Sommrey", + "id" : "Jorg Sommrey", "data" : [ [ "Perl", 2 ] - ], - "id" : "Jorg Sommrey" + ] }, { "name" : "Lance Wicks", @@ -387,16 +201,36 @@ ] }, { - "name" : "Lubos Kolouch", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld" + }, + { "data" : [ [ "Perl", 1 ] ], + "name" : "Lubos Kolouch", "id" : "Lubos Kolouch" }, { + "name" : "Luca Ferrari", + "id" : "Luca Ferrari", "data" : [ [ "Raku", @@ -406,22 +240,19 @@ "Blog", 2 ] - ], - "id" : "Luca Ferrari", - "name" : "Luca Ferrari" + ] }, { "name" : "Mark Anderson", + "id" : "Mark Anderson", "data" : [ [ "Raku", 2 ] - ], - "id" : "Mark Anderson" + ] }, { - "name" : "Mohammad S Anwar", "data" : [ [ "Perl", @@ -432,6 +263,7 @@ 1 ] ], + "name" : "Mohammad S Anwar", "id" : "Mohammad S Anwar" }, { @@ -446,13 +278,13 @@ }, { "id" : "Paulo Custodio", + "name" : "Paulo Custodio", "data" : [ [ "Perl", 2 ] - ], - "name" : "Paulo Custodio" + ] }, { "name" : "Pete Houston", @@ -465,18 +297,16 @@ ] }, { - "name" : "Peter Mayr", "data" : [ [ "Perl", 1 ] ], + "name" : "Peter Mayr", "id" : "Peter Mayr" }, { - "name" : "Roger Bell_West", - "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -490,10 +320,11 @@ "Blog", 1 ] - ] + ], + "name" : "Roger Bell_West", + "id" : "Roger Bell_West" }, { - "name" : "Simon Green", "data" : [ [ "Perl", @@ -504,20 +335,22 @@ 1 ] ], - "id" : "Simon Green" + "id" : "Simon Green", + "name" : "Simon Green" }, { - "id" : "Simon Proctor", "data" : [ [ "Raku", 1 ] ], - "name" : "Simon Proctor" + "name" : "Simon Proctor", + "id" : "Simon Proctor" }, { "name" : "Stuart Little", + "id" : "Stuart Little", "data" : [ [ "Perl", @@ -527,10 +360,11 @@ "Raku", 2 ] - ], - "id" : "Stuart Little" + ] }, { + "name" : "Ulrich Rieke", + "id" : "Ulrich Rieke", "data" : [ [ "Perl", @@ -540,11 +374,11 @@ "Raku", 2 ] - ], - "id" : "Ulrich Rieke", - "name" : "Ulrich Rieke" + ] }, { + "name" : "W. Luis Mochan", + "id" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -554,20 +388,209 @@ "Blog", 1 ] - ], - "id" : "W. Luis Mochan", - "name" : "W. Luis Mochan" + ] }, { + "id" : "Wanderdoc", "name" : "Wanderdoc", "data" : [ [ "Perl", 2 ] - ], - "id" : "Wanderdoc" + ] } ] + }, + "legend" : { + "enabled" : 0 + }, + "tooltip" : { + "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", + "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>", + "followPointer" : 1 + }, + "subtitle" : { + "text" : "[Champions: 32] Last updated at 2021-04-05 00:01:13 GMT" + }, + "title" : { + "text" : "Perl Weekly Challenge - 106" + }, + "series" : [ + { + "data" : [ + { + "y" : 3, + "drilldown" : "Aaron Smith", + "name" : "Aaron Smith" + }, + { + "name" : "Abigail", + "drilldown" : "Abigail", + "y" : 4 + }, + { + "y" : 3, + "name" : "Adam Russell", + "drilldown" : "Adam Russell" + }, + { + "y" : 3, + "drilldown" : "Arne Sommer", + "name" : "Arne Sommer" + }, + { + "drilldown" : "Athanasius", + "name" : "Athanasius", + "y" : 4 + }, + { + "name" : "Ben Davies", + "drilldown" : "Ben Davies", + "y" : 2 + }, + { + "y" : 2, + "drilldown" : "Cheok-Yin Fung", + "name" : "Cheok-Yin Fung" + }, + { + "name" : "Cristina Heredia", + "drilldown" : "Cristina Heredia", + "y" : 1 + }, + { + "y" : 3, + "drilldown" : "Dave Jacoby", + "name" : "Dave Jacoby" + }, + { + "name" : "E. Choroba", + "drilldown" : "E. Choroba", + "y" : 2 + }, + { + "drilldown" : "Flavio Poletti", + "name" : "Flavio Poletti", + "y" : 4 + }, + { + "y" : 2, + "name" : "James Smith", + "drilldown" : "James Smith" + }, + { + "name" : "Jan Krnavek", + "drilldown" : "Jan Krnavek", + "y" : 2 + }, + { + "y" : 2, + "drilldown" : "Joan Mimosinnet", + "name" : "Joan Mimosinnet" + }, + { + "y" : 2, + "name" : "Jorg Sommrey", + "drilldown" : "Jorg Sommrey" + }, + { + "y" : 1, + "name" : "Lance Wicks", + "drilldown" : "Lance Wicks" + }, + { + "name" : "Laurent Rosenfeld", + "drilldown" : "Laurent Rosenfeld", + "y" : 5 + }, + { + "name" : "Lubos Kolouch", + "drilldown" : "Lubos Kolouch", + "y" : 1 + }, + { + "y" : 4, + "name" : "Luca Ferrari", + "drilldown" : "Luca Ferrari" + }, + { + "y" : 2, + "drilldown" : "Mark Anderson", + "name" : "Mark Anderson" + }, + { + "y" : 2, + "drilldown" : "Mohammad S Anwar", + "name" : "Mohammad S Anwar" + }, + { + "y" : 2, + "drilldown" : "Niels van Dijke", + "name" : "Niels van Dijke" + }, + { + "name" : "Paulo Custodio", + "drilldown" : "Paulo Custodio", + "y" : 2 + }, + { + "drilldown" : "Pete Houston", + "name" : "Pete Houston", + "y" : 2 + }, + { + "y" : 1, + "name" : "Peter Mayr", + "drilldown" : "Peter Mayr" + }, + { + "y" : 5, + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West" + }, + { + "drilldown" : "Simon Green", + "name" : "Simon Green", + "y" : 3 + }, + { + "y" : 1, + "name" : "Simon Proctor", + "drilldown" : "Simon Proctor" + }, + { + "y" : 4, + "drilldown" : "Stuart Little", + "name" : "Stuart Little" + }, + { + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke", + "y" : 4 + }, + { + "y" : 3, + "drilldown" : "W. Luis Mochan", + "name" : "W. Luis Mochan" + }, + { + "name" : "Wanderdoc", + "drilldown" : "Wanderdoc", + "y" : 2 + } + ], + "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 106" + } + ], + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 82b37323ab..cbb18072d0 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-s |
