From d617f08c5be0e712a1de617c2ea6ef1d4d7ff64b Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Wed, 2 Aug 2023 14:06:15 +0100 Subject: - Added solutions by Matthew Neleigh. - Added solutions by Packy Anderson. - Added solutions by Robbie Hatley. - Added solutions by Mark Anderson. - Added solutions by Laurent Rosenfeld. --- challenge-227/packy-anderson/README.md | 18 +- challenge-227/packy-anderson/perl/ch-1.pl | 36 + challenge-227/packy-anderson/perl/ch-2.pl | 79 ++ challenge-227/packy-anderson/perl/task-1.pl | 36 - challenge-227/packy-anderson/perl/task-2.pl | 79 -- challenge-227/packy-anderson/raku/ch-1.raku | 29 + challenge-227/packy-anderson/raku/ch-2.raku | 106 ++ challenge-227/packy-anderson/raku/task-1.raku | 29 - challenge-227/packy-anderson/raku/task-2.raku | 106 -- challenge-228/laurent-rosenfeld/blog1.txt | 1 + challenge-228/laurent-rosenfeld/perl/ch-2.pl | 26 + challenge-228/laurent-rosenfeld/raku/ch-2.raku | 15 + challenge-228/packy-anderson/README.md | 30 +- challenge-228/packy-anderson/blog.txt | 1 + challenge-228/packy-anderson/perl/ch-1.pl | 36 + challenge-228/packy-anderson/perl/ch-2.pl | 34 + challenge-228/packy-anderson/perl/task-1.pl | 36 - challenge-228/packy-anderson/perl/task-2.pl | 34 - challenge-228/packy-anderson/raku/ch-1.raku | 34 + challenge-228/packy-anderson/raku/ch-2.raku | 32 + challenge-228/packy-anderson/raku/task-1.raku | 34 - challenge-228/packy-anderson/raku/task-2.raku | 32 - stats/pwc-current.json | 225 ++-- stats/pwc-language-breakdown-summary.json | 62 +- stats/pwc-language-breakdown.json | 1590 ++++++++++++------------ stats/pwc-leaders.json | 758 +++++------ stats/pwc-summary-1-30.json | 94 +- stats/pwc-summary-121-150.json | 108 +- stats/pwc-summary-151-180.json | 54 +- stats/pwc-summary-181-210.json | 56 +- stats/pwc-summary-211-240.json | 102 +- stats/pwc-summary-241-270.json | 94 +- stats/pwc-summary-271-300.json | 42 +- stats/pwc-summary-31-60.json | 52 +- stats/pwc-summary-61-90.json | 100 +- stats/pwc-summary-91-120.json | 104 +- stats/pwc-summary.json | 48 +- 37 files changed, 2228 insertions(+), 2124 deletions(-) create mode 100755 challenge-227/packy-anderson/perl/ch-1.pl create mode 100755 challenge-227/packy-anderson/perl/ch-2.pl delete mode 100755 challenge-227/packy-anderson/perl/task-1.pl delete mode 100755 challenge-227/packy-anderson/perl/task-2.pl create mode 100755 challenge-227/packy-anderson/raku/ch-1.raku create mode 100755 challenge-227/packy-anderson/raku/ch-2.raku delete mode 100755 challenge-227/packy-anderson/raku/task-1.raku delete mode 100755 challenge-227/packy-anderson/raku/task-2.raku create mode 100644 challenge-228/laurent-rosenfeld/blog1.txt create mode 100644 challenge-228/laurent-rosenfeld/perl/ch-2.pl create mode 100644 challenge-228/laurent-rosenfeld/raku/ch-2.raku create mode 100644 challenge-228/packy-anderson/blog.txt create mode 100755 challenge-228/packy-anderson/perl/ch-1.pl create mode 100755 challenge-228/packy-anderson/perl/ch-2.pl delete mode 100755 challenge-228/packy-anderson/perl/task-1.pl delete mode 100755 challenge-228/packy-anderson/perl/task-2.pl create mode 100755 challenge-228/packy-anderson/raku/ch-1.raku create mode 100755 challenge-228/packy-anderson/raku/ch-2.raku delete mode 100755 challenge-228/packy-anderson/raku/task-1.raku delete mode 100755 challenge-228/packy-anderson/raku/task-2.raku diff --git a/challenge-227/packy-anderson/README.md b/challenge-227/packy-anderson/README.md index 1b230ba294..1090bbe2aa 100644 --- a/challenge-227/packy-anderson/README.md +++ b/challenge-227/packy-anderson/README.md @@ -2,19 +2,19 @@ ## Perl -* [Task 1](perl/task-1.pl) +* [Task 1](perl/ch-1.pl) Sample output ``` -$ perl/task-1.pl 2023 +$ perl/ch-1.pl 2023 Input: $year = 2023 Output: 2 ``` -* [Task 2](perl/task-2.pl) +* [Task 2](perl/ch-2.pl) Sample output ``` -$ perl/task-2.pl < task-2-input.txt +$ perl/ch-2.pl < task-2-input.txt IV + V => IX M - I => CMXCIX X / II => V @@ -34,20 +34,20 @@ $ echo "X + Y" | perl/task-2.pl ## Raku -* [Task 1](raku/task-1.raku) +* [Task 1](raku/ch-1.raku) Sample output ``` -$ raku/task-1.raku 2023 +$ raku/ch-1.raku 2023 Input: $year = 2023 Output: 2 ``` -* [Task 2](raku/task-2.raku) +* [Task 2](raku/ch-2.raku) Sample output ``` -$ raku/task-2.raku < task-2-input.txt +$ raku/ch-2.raku < task-2-input.txt IV + V => IX M - I => CMXCIX X / II => V @@ -65,4 +65,4 @@ V - X => non potest (they didn't do negative numbers) ## Blog Post -[Perl Weekly Challenge 227](http://packy.dardan.com/2023/07/27/perl-weekly-challenge-227/) \ No newline at end of file +[Perl Weekly Challenge 227](http://packy.dardan.com/2023/07/27/perl-weekly-challenge-227/) diff --git a/challenge-227/packy-anderson/perl/ch-1.pl b/challenge-227/packy-anderson/perl/ch-1.pl new file mode 100755 index 0000000000..1bfd2a1d13 --- /dev/null +++ b/challenge-227/packy-anderson/perl/ch-1.pl @@ -0,0 +1,36 @@ +#!/usr/bin/env perl +use v5.38; + +# let's use the core modules for date manipulation +use Time::Piece; +use Time::Seconds qw( ONE_DAY ); + +# get the year from the command line +my $year = shift @ARGV + or die "usage: $0 year\n"; + +# do bounds checking as specified in the problem +if ($year < 1753 || $year > 9999) { + die "Only years between 1753 to 9999 are allowed ($year is out of range)\n"; +} + +# create an object for Jan 01 of the given year +my $t = Time::Piece->strptime("$year-01-01", "%Y-%m-%d") + ->truncate(to => 'day'); + +# find the first friday +# in Time::Piece->wday, 1 = Sunday, 6 = Friday +while ( $t->wday != 6) { + $t += ONE_DAY; # add 1 day +} + +# now keep adding 7 days to the date until the year changes, +# noting how many times the day of the month is 13 +my $thirteen_count = 0; +while ( $t->year == $year ) { + $thirteen_count++ if $t->mday == 13; + $t += ONE_DAY * 7; +} + +say "Input: \$year = $year"; +say "Output: $thirteen_count"; \ No newline at end of file diff --git a/challenge-227/packy-anderson/perl/ch-2.pl b/challenge-227/packy-anderson/perl/ch-2.pl new file mode 100755 index 0000000000..425a4341ea --- /dev/null +++ b/challenge-227/packy-anderson/perl/ch-2.pl @@ -0,0 +1,79 @@ +#!/usr/bin/env perl +use v5.38; + +use Roman; # there's a module for handling Roman Numerals! + +sub do_arithmetic { + my $line = shift; + # split the inout line into the three parts: + # the two operands and the infix operator + my($operand1r, $operator, $operand2r) = split /\s+/, $line; + unless (defined $operand1r && + defined $operator && + defined $operand2r) { + say q{Lines must be of the form "operand1 operator operand2"}; + say q{where both operands are valid roman numerals and the}; + say q{operator is one of the following: + - * / **}; + return; + } + + my($operand1a, $operand2a); + + # check that the first operand is a roman numeral + if (isroman($operand1r)) { + # it is a roman numeral, convert it + $operand1a = arabic($operand1r); + } + else { + say "'$operand1r' is not a roman numberal!"; + return; + } + + # check that the second operand is a roman numeral + if (isroman($operand2r)) { + # it is a roman numeral, convert it + $operand2a = arabic($operand2r); + } + else { + say "'$operand2r' is not a roman numberal!"; + return; + } + + # calculate the results + my $result; + if ($operator eq '+') { $result = $operand1a + $operand2a; } + elsif ($operator eq '-') { $result = $operand1a - $operand2a; } + elsif ($operator eq '*') { $result = $operand1a * $operand2a; } + elsif ($operator eq '/') { $result = $operand1a / $operand2a; } + elsif ($operator eq '**') { $result = $operand1a ** $operand2a; } + else { + die "Unknown operator '$operator'; valid operators are + - * / **\n"; + } + + # handle all the special output cases + if ($result == 0) { + say "$operand1r $operator $operand2r => nulla " + . "(they knew about zero but didn't have a symbol)"; + } + elsif (int($result) != $result) { + say "$operand1r $operator $operand2r => non potest " + . "(they didn't do fractions)"; + } + elsif ($result > 3999) { + say "$operand1r $operator $operand2r => non potest " + . "(they only went up to 3999)"; + } + elsif ($result < 0) { + say "$operand1r $operator $operand2r => non potest " + . "(they didn't do negative numbers)"; + } + else { + say "$operand1r $operator $operand2r => " . uc roman($result); + } +} + +# while we have input on STDIN, process the calculations +while (my $line = <>) { + chomp $line; + do_arithmetic($line); +} \ No newline at end of file diff --git a/challenge-227/packy-anderson/perl/task-1.pl b/challenge-227/packy-anderson/perl/task-1.pl deleted file mode 100755 index 1bfd2a1d13..0000000000 --- a/challenge-227/packy-anderson/perl/task-1.pl +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env perl -use v5.38; - -# let's use the core modules for date manipulation -use Time::Piece; -use Time::Seconds qw( ONE_DAY ); - -# get the year from the command line -my $year = shift @ARGV - or die "usage: $0 year\n"; - -# do bounds checking as specified in the problem -if ($year < 1753 || $year > 9999) { - die "Only years between 1753 to 9999 are allowed ($year is out of range)\n"; -} - -# create an object for Jan 01 of the given year -my $t = Time::Piece->strptime("$year-01-01", "%Y-%m-%d") - ->truncate(to => 'day'); - -# find the first friday -# in Time::Piece->wday, 1 = Sunday, 6 = Friday -while ( $t->wday != 6) { - $t += ONE_DAY; # add 1 day -} - -# now keep adding 7 days to the date until the year changes, -# noting how many times the day of the month is 13 -my $thirteen_count = 0; -while ( $t->year == $year ) { - $thirteen_count++ if $t->mday == 13; - $t += ONE_DAY * 7; -} - -say "Input: \$year = $year"; -say "Output: $thirteen_count"; \ No newline at end of file diff --git a/challenge-227/packy-anderson/perl/task-2.pl b/challenge-227/packy-anderson/perl/task-2.pl deleted file mode 100755 index 425a4341ea..0000000000 --- a/challenge-227/packy-anderson/perl/task-2.pl +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env perl -use v5.38; - -use Roman; # there's a module for handling Roman Numerals! - -sub do_arithmetic { - my $line = shift; - # split the inout line into the three parts: - # the two operands and the infix operator - my($operand1r, $operator, $operand2r) = split /\s+/, $line; - unless (defined $operand1r && - defined $operator && - defined $operand2r) { - say q{Lines must be of the form "operand1 operator operand2"}; - say q{where both operands are valid roman numerals and the}; - say q{operator is one of the following: + - * / **}; - return; - } - - my($operand1a, $operand2a); - - # check that the first operand is a roman numeral - if (isroman($operand1r)) { - # it is a roman numeral, convert it - $operand1a = arabic($operand1r); - } - else { - say "'$operand1r' is not a roman numberal!"; - return; - } - - # check that the second operand is a roman numeral - if (isroman($operand2r)) { - # it is a roman numeral, convert it - $operand2a = arabic($operand2r); - } - else { - say "'$operand2r' is not a roman numberal!"; - return; - } - - # calculate the results - my $result; - if ($operator eq '+') { $result = $operand1a + $operand2a; } - elsif ($operator eq '-') { $result = $operand1a - $operand2a; } - elsif ($operator eq '*') { $result = $operand1a * $operand2a; } - elsif ($operator eq '/') { $result = $operand1a / $operand2a; } - elsif ($operator eq '**') { $result = $operand1a ** $operand2a; } - else { - die "Unknown operator '$operator'; valid operators are + - * / **\n"; - } - - # handle all the special output cases - if ($result == 0) { - say "$operand1r $operator $operand2r => nulla " - . "(they knew about zero but didn't have a symbol)"; - } - elsif (int($result) != $result) { - say "$operand1r $operator $operand2r => non potest " - . "(they didn't do fractions)"; - } - elsif ($result > 3999) { - say "$operand1r $operator $operand2r => non potest " - . "(they only went up to 3999)"; - } - elsif ($result < 0) { - say "$operand1r $operator $operand2r => non potest " - . "(they didn't do negative numbers)"; - } - else { - say "$operand1r $operator $operand2r => " . uc roman($result); - } -} - -# while we have input on STDIN, process the calculations -while (my $line = <>) { - chomp $line; - do_arithmetic($line); -} \ No newline at end of file diff --git a/challenge-227/packy-anderson/raku/ch-1.raku b/challenge-227/packy-anderson/raku/ch-1.raku new file mode 100755 index 0000000000..d9fef52c0d --- /dev/null +++ b/challenge-227/packy-anderson/raku/ch-1.raku @@ -0,0 +1,29 @@ +#!/usr/bin/env raku + +sub MAIN($year) { + # do bounds checking as specified in the problem + if ($year < 1753 || $year > 9999) { + say "Only years between 1753 to 9999 are allowed ($year is out of range)"; + exit 1; + } + + # create an object for Jan 01 of the given year + my $t = Date.new($year, 1, 1); + + # find the first friday + # in Date.day-of-week, 0 = Sunday, 5 = Friday + while ( $t.day-of-week != 5) { + $t++; # add 1 day + } + + # now keep adding 7 days to the date until the year changes, + # noting how many times the day of the month is 13 + my $thirteen_count = 0; + while ( $t.year == $year ) { + $thirteen_count++ if $t.day == 13; + $t += 7; + } + + say "Input: \$year = $year"; + say "Output: $thirteen_count"; +} \ No newline at end of file diff --git a/challenge-227/packy-anderson/raku/ch-2.raku b/challenge-227/packy-anderson/raku/ch-2.raku new file mode 100755 index 0000000000..252340956f --- /dev/null +++ b/challenge-227/packy-anderson/raku/ch-2.raku @@ -0,0 +1,106 @@ +#!/usr/bin/env raku +use Math::Roman; # it's v0.0.1, but usable + +sub isroman ( $var ) { + # Math::Roman doesn't have a test to see if a string is + # a Roman numeral, but it does throw an exception if it + # cannot convert it + my $result; + try { + CATCH { + default { + return False; + } + } + $result = Math::Roman.new: $var; + } + # Math::Roman also doesn't respect the maximum of 3999 + if ($result.as-arabic > 3999) { + return False; + } + + return True; +} + +sub do_arithmetic (Str $line) { + # split the inout line into the three parts: + # the two operands and the infix operator + my ($operand1, $operator, $operand2) = $line.split(/\s+/); + + unless (defined $operand1 && + defined $operator && + defined $operand2) { + say q{Lines must be of the form "operand1 operator operand2"}; + say q{where both operands are valid roman numerals and the}; + say q{operator is one of the following: + - * / **}; + return; + } + + # check that the first operand is a roman numeral + if (isroman($operand1)) { + # it is a roman numeral, convert it + $operand1 = Math::Roman.new: $operand1; + } + else { + say "'$operand1' is not a roman numberal!"; + return; + } + + # check that the second operand is a roman numeral + if (isroman($operand2)) { + # it is a roman numeral, convert it + $operand2 = Math::Roman.new: $operand2; + } + else { + say "'$operand2' is not a roman numberal!"; + return; + } + + # # calculate the results + my $result; + if ($operator eq '+') { + $result = $operand1.as-arabic + $operand2.as-arabic; + } + elsif ($operator eq '-') { + $result = $operand1.as-arabic - $operand2.as-arabic; + } + elsif ($operator eq '*') { + $result = $operand1.as-arabic * $operand2.as-arabic; + } + elsif ($operator eq '/') { + $result = $operand1.as-arabic / $operand2.as-arabic; + } + elsif ($operator eq '**') { + $result = $operand1.as-arabic ** $operand2.as-arabic; + } + else { + die "Unknown operator '$operator'; valid operators are + - * / **\n"; + } + + # handle all the special output cases + if ($result == 0) { + say "$operand1 $operator $operand2 => nulla " + ~ "(they knew about zero but didn't have a symbol)"; + } + elsif ($result.truncate != $result) { + say "$operand1 $operator $operand2 => non potest " + ~ "(they didn't do fractions)"; + } + elsif ($result > 3999) { + say "$operand1 $operator $operand2 => non potest " + ~ "(they only went up to 3999)"; + } + elsif ($result < 0) { + say "$operand1 $operator $operand2 => non potest " + ~ "(they didn't do negative numbers)"; + } + else { + $result = Math::Roman.new: value => $result.Int; + say "$operand1 $operator $operand2 => $result"; + } +} + +# while we have input on STDIN, process the calculations +for $*IN.lines -> $line { + do_arithmetic($line); +} \ No newline at end of file diff --git a/challenge-227/packy-anderson/raku/task-1.raku b/challenge-227/packy-anderson/raku/task-1.raku deleted file mode 100755 index d9fef52c0d..0000000000 --- a/challenge-227/packy-anderson/raku/task-1.raku +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env raku - -sub MAIN($year) { - # do bounds checking as specified in the problem - if ($year < 1753 || $year > 9999) { - say "Only years between 1753 to 9999 are allowed ($year is out of range)"; - exit 1; - } - - # create an object for Jan 01 of the given year - my $t = Date.new($year, 1, 1); - - # find the first friday - # in Date.day-of-week, 0 = Sunday, 5 = Friday - while ( $t.day-of-week != 5) { - $t++; # add 1 day - } - - # now keep adding 7 days to the date until the year changes, - # noting how many times the day of the month is 13 - my $thirteen_count = 0; - while ( $t.year == $year ) { - $thirteen_count++ if $t.day == 13; - $t += 7; - } - - say "Input: \$year = $year"; - say "Output: $thirteen_count"; -} \ No newline at end of file diff --git a/challenge-227/packy-anderson/raku/task-2.raku b/challenge-227/packy-anderson/raku/task-2.raku deleted file mode 100755 index 252340956f..0000000000 --- a/challenge-227/packy-anderson/raku/task-2.raku +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env raku -use Math::Roman; # it's v0.0.1, but usable - -sub isroman ( $var ) { - # Math::Roman doesn't have a test to see if a string is - # a Roman numeral, but it does throw an exception if it - # cannot convert it - my $result; - try { - CATCH { - default { - return False; - } - } - $result = Math::Roman.new: $var; - } - # Math::Roman also doesn't respect the maximum of 3999 - if ($result.as-arabic > 3999) { - return False; - } - - return True; -} - -sub do_arithmetic (Str $line) { - # split the inout line into the three parts: - # the two operands and the infix operator - my ($operand1, $operator, $operand2) = $line.split(/\s+/); - - unless (defined $operand1 && - defined $operator && - defined $operand2) { - say q{Lines must be of the form "operand1 operator operand2"}; - say q{where both operands are valid roman numerals and the}; - say q{operator is one of the following: + - * / **}; - return; - } - - # check that the first operand is a roman numeral - if (isroman($operand1)) { - # it is a roman numeral, convert it - $operand1 = Math::Roman.new: $operand1; - } - else { - say "'$operand1' is not a roman numberal!"; - return; - } - - # check that the second operand is a roman numeral - if (isroman($operand2)) { - # it is a roman numeral, convert it - $operand2 = Math::Roman.new: $operand2; - } - else { - say "'$operand2' is not a roman numberal!"; - return; - } - - # # calculate the results - my $result; - if ($operator eq '+') { - $result = $operand1.as-arabic + $operand2.as-arabic; - } - elsif ($operator eq '-') { - $result = $operand1.as-arabic - $operand2.as-arabic; - } - elsif ($operator eq '*') { - $result = $operand1.as-arabic * $operand2.as-arabic; - } - elsif ($operator eq '/') { - $result = $operand1.as-arabic / $operand2.as-arabic; - } - elsif ($operator eq '**') { - $result = $operand1.as-arabic ** $operand2.as-arabic; - } - else { - die "Unknown operator '$operator'; valid operators are + - * / **\n"; - } - - # handle all the special output cases - if ($result == 0) { - say "$operand1 $operator $operand2 => nulla " - ~ "(they knew about zero but didn't have a symbol)"; - } - elsif ($result.truncate != $result) { - say "$operand1 $operator $operand2 => non potest " - ~ "(they didn't do fractions)"; - } - elsif ($result > 3999) { - say "$operand1 $operator $operand2 => non potest " - ~ "(they only went up to 3999)"; - } - elsif ($result < 0) { - say "$operand1 $operator $operand2 => non potest " - ~ "(they didn't do negative numbers)"; - } - else { - $result = Math::Roman.new: value => $result.Int; - say "$operand1 $operator $operand2 => $result"; - } -} - -# while we have input on STDIN, process the calculations -for $*IN.lines -> $line { - do_arithmetic($line); -} \ No newline at end of file diff --git a/challenge-228/laurent-rosenfeld/blog1.txt b/challenge-228/laurent-rosenfeld/blog1.txt new file mode 100644 index 0000000000..316b67dac8 --- /dev/null +++ b/challenge-228/laurent-rosenfeld/blog1.txt @@ -0,0 +1 @@ +https://blogs.perl.org/users/laurent_r/2023/08/perl-weekly-challenge-228-empty-array.html diff --git a/challenge-228/laurent-rosenfeld/perl/ch-2.pl b/challenge-228/laurent-rosenfeld/perl/ch-2.pl new file mode 100644 index 0000000000..dda950f48a --- /dev/null +++ b/challenge-228/laurent-rosenfeld/perl/ch-2.pl @@ -0,0 +1,26 @@ +use strict; +use warnings; +use feature 'say'; + +sub empty_array { + my @in = @_; + my $count = 0; + while (1) { + my $val = shift @in; + my $pushback = 0; + for my $item (@in) { + $pushback = 1 if $val > $item; + last if $pushback; + } + push @in, $val if $pushback; + $count++; + last unless @in; + } + return $count; +} + +for my $test ( [<3 4 2>], [<1 2 3>], + [<3 2 1>], [<4 7 2 9 1>] ) { + printf "%-10s => ", "@$test"; + say empty_array @$test; +} diff --git a/challenge-228/laurent-rosenfeld/raku/ch-2.raku b/challenge-228/laurent-rosenfeld/raku/ch-2.raku new file mode 100644 index 0000000000..605985b94f --- /dev/null +++ b/challenge-228/laurent-rosenfeld/raku/ch-2.raku @@ -0,0 +1,15 @@ +sub empty-array (@in is copy) { + my $count = 0; + loop { + my $val = shift @in; + push @in, $val if $val > @in.any; + $count++; + last unless @in; + } + return $count; +} + +for <3 4 2>, <1 2 3>, <3 2 1>, <4 7 2 9 1> -> @test { + printf "%-10s => ", "@test[]"; + say empty-array @test; +} diff --git a/challenge-228/packy-anderson/README.md b/challenge-228/packy-anderson/README.md index 481e8b2ced..c1bffd1725 100644 --- a/challenge-228/packy-anderson/README.md +++ b/challenge-228/packy-anderson/README.md @@ -2,33 +2,33 @@ ## Perl -* [Task 1](perl/task-1.pl) +* [Task 1](perl/ch-1.pl) Sample output ``` -$ perl/task-1.pl 2 1 3 2 +$ perl/ch-1.pl 2 1 3 2 Input: @int = (2, 1, 3, 2) Output: 4 In the given array we have 2 unique elements (1, 3). -$ perl/task-1.pl 1 1 1 1 +$ perl/ch-1.pl 1 1 1 1 Input: @int = (1, 1, 1, 1) Output: 0 In the given array no unique element found. -$ perl/task-1.pl 2 1 3 4 +$ perl/ch-1.pl 2 1 3 4 Input: @int = (2, 1, 3, 4) Output: 10 In the given array every element is unique. ``` -* [Task 2](perl/task-2.pl) +* [Task 2](perl/ch-2.pl) Sample output ``` -$ perl/task-2.pl 3 4 2 +$ perl/ch-2.pl 3 4 2 Input: @int = (3, 4, 2) Output: 5 @@ -38,7 +38,7 @@ Operation 3: remove element 2: (3,4) Operation 4: remove element 3: (4) Operation 5: remove element 4: () -$ perl/task-2.pl 1 2 3 +$ perl/ch-2.pl 1 2 3 Input: @int = (1, 2, 3) Output: 3 @@ -49,34 +49,34 @@ Operation 3: remove element 3: () ## Raku -* [Task 1](raku/task-1.raku) +* [Task 1](raku/ch-1.raku) Sample output ``` -$ raku/task-1.raku 2 1 3 2 +$ raku/ch-1.raku 2 1 3 2 Input: @int = (2, 1, 3, 2) Output: 4 In the given array we have 2 unique elements (1, 3). -$ raku/task-1.raku 1 1 1 1 +$ raku/ch-1.raku 1 1 1 1 Input: @int = (1, 1, 1, 1) Output: 0 In the given array no unique element found. -$ raku/task-1.raku 2 1 3 4 +$ raku/ch-1.raku 2 1 3 4 Input: @int = (2, 1, 3, 4) Output: 10 In the given array every element is unique. ``` -* [Task 2](raku/task-2.raku) +* [Task 2](raku/ch-2.raku) Sample output ``` -$ raku/task-2.raku 3 4 2 +$ raku/ch-2.raku 3 4 2 Input: @int = (3, 4, 2) Output: 5 @@ -86,7 +86,7 @@ Operation 3: remove element 2: (3, 4) Operation 4: remove element 3: (4) Operation 5: remove element 4: () -$ raku/task-2.raku 1 2 3 +$ raku/ch-2.raku 1 2 3 Input: @int = (1, 2, 3) Output: 3 @@ -97,4 +97,4 @@ Operation 3: remove element 3: () ## Blog Post -[Perl Weekly Challenge: Unique Sums and Empty Arrays](http://packy.dardan.com/2023/08/02/perl-weekly-challenge-unique-sums-and-empty-arrays/) \ No newline at end of file +[Perl Weekly Challenge: Unique Sums and Empty Arrays](http://packy.dardan.com/2023/08/02/perl-weekly-challenge-unique-sums-and-empty-arrays/) diff --git a/challenge-228/packy-anderson/blog.txt b/challenge-228/packy-anderson/blog.txt new file mode 100644 index 0000000000..70a36d6de6 --- /dev/null +++ b/challenge-228/packy-anderson/blog.txt @@ -0,0 +1 @@ +http://packy.dardan.com/2023/08/02/perl-weekly-challenge-unique-sums-and-empty-arrays/ diff --git a/challenge-228/packy-anderson/perl/ch-1.pl b/challenge-228/packy-anderson/perl/ch-1.pl new file mode 100755 index 0000000000..c92826b80d --- /dev/null +++ b/challenge-228/packy-anderson/perl/ch-1.pl @@ -0,0 +1,36 @@ +#!/usr/bin/env perl + +use v5.38; + +use List::Util qw( sum ); + +my @ints = @ARGV; # just accept the list of integers on the command line + +# find the unique elements +my %unique; +foreach my $int ( @ints ) { + $unique{$int}++; +} + +# make a list of ONLY the unique ints +my @unique_ints = grep { $unique{$_} == 1 } @ints; + +# sum the unique elements +my $sum = sum(@unique_ints) // 0; + +# produce the output +say "Input: \@int = (" . join(', ', @ints) . ")"; +say "Output: $sum"; +say ""; + +print "In the given array "; +if ( scalar(@unique_ints) == scalar(@ints) ) { + say "every element is unique."; +} +elsif ( scalar(@unique_ints) == 0 ) { + say "no unique element found."; +} +else { + say "we have " . scalar(@unique_ints) . " unique elements (" + . join(', ', @unique_ints) . ")."; +} \ No newline at end of file diff --git a/challenge-228/packy-anderson/perl/ch-2.pl b/challenge-228/packy-anderson/perl/ch-2.pl new file mode 100755 index 0000000000..079c1391bb --- /dev/null +++ b/challenge-228/packy-anderson/perl/ch-2.pl @@ -0,0 +1,34 @@ +#!/usr/bin/env perl + +use v5.38; + +use List::Util qw( min ); + +my @ints = @ARGV; # just accept the list of integers on the command line + +my @operations; +my $count = 1; +while ( scalar(@ints) > 0 ) { + my $min = min @ints; + + # in either case, we're removing the first element from the list + my $first = shift @ints; + + if ($min == $first) { + # the first element is the minimum, discard it + push @operations, "Operation $count: remove element $min: (" . join(',', @ints) . ")"; + } + else { + # the first element is NOT the minimum, add it to the end + push @ints, $first; + push @operations, "Operation $count: move $first to the end: (" . join(',', @ints) . ")"; + } + $count++; +} + +# produce the output +# let's use @ARGV again, since we modify @ints as we go along +say "Input: \@int = (" . join(', ', @ARGV) . ")"; +say "Output: " . scalar(@operations); +say ""; +say join "\n", @operations; diff --git a/challenge-228/packy-anderson/perl/task-1.pl b/challenge-228/packy-anderson/perl/task-1.pl deleted file mode 100755 index c92826b80d..0000000000 --- a/challenge-228/packy-anderson/perl/task-1.pl +++ /dev/null @@ -1,36 +0,0 @@ -#!/usr/bin/env perl - -use v5.38; - -use List::Util qw( sum ); - -my @ints = @ARGV; # just accept the list of integers on the command line - -# find the unique elements -my %unique; -foreach my $int ( @ints ) { - $unique{$int}++; -} - -# make a list of ONLY the unique ints -my @unique_ints = grep { $unique{$_} == 1 } @ints; - -# sum the unique elements -my $sum = sum(@unique_ints) // 0; - -# produce the output -say "Input: \@int = (" . join(', ', @ints) . ")"; -say "Output: $sum"; -say ""; - -print "In the given array "; -if ( scalar(@unique_ints) == scalar(@ints) ) { - say "every element is unique."; -} -elsif ( scalar(@unique_ints) == 0 ) { - say "no unique element found."; -} -else { - say "we have " . scalar(@unique_ints) . " unique elements (" - . join(', ', @unique_ints) . ")."; -} \ No newline at end of file diff --git a/challenge-228/packy-anderson/perl/task-2.pl b/challenge-228/packy-anderson/perl/task-2.pl deleted file mode 100755 index 079c1391bb..0000000000 --- a/challenge-228/packy-anderson/perl/task-2.pl +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env perl - -use v5.38; - -use List::Util qw( min ); - -my @ints = @ARGV; # just accept the list of integers on the command line - -my @operations; -my $count = 1; -while ( scalar(@ints) > 0 ) { - my $min = min @ints; - - # in either case, we're removing the first element from the list - my $first = shift @ints; - - if ($min == $first) { - # the first element is the minimum, discard it - push @operations, "Operation $count: remove element $min: (" . join(',', @ints) . ")"; - } - else { - # the first element is NOT the minimum, add it to the end - push @ints, $first; - push @operations, "Operation $count: move $first to the end: (" . join(',', @ints) . ")"; - } - $count++; -} - -# produce the output -# let's use @ARGV again, since we modify @ints as we go along -say "Input: \@int = (" . join(', ', @ARGV) . ")"; -say "Output: " . scalar(@operations); -say ""; -say join "\n", @operations; diff --git a/challenge-228/packy-anderson/raku/ch-1.raku b/challenge-228/packy-anderson/raku/ch-1.raku new file mode 100755 index 0000000000..f5221b310a --- /dev/null +++ b/challenge-228/packy-anderson/raku/ch-1.raku @@ -0,0 +1,34 @@ +#!/usr/bin/env raku + +use v6; + +my @ints = @*ARGS; # just accept the list of integers on the command line + +# find the unique elements +my %unique; +for @ints -> $int { + %unique{$int}++; +} + +# make a list of ONLY the unique ints +my @unique_ints = grep { %unique{$_} == 1 }, @ints; + +# sum the unique elements +my $sum = [+] @unique_ints; + +# produce the output +say "Input: \@int = (" ~ @ints.join(', ') ~ ")"; +say "Output: $sum"; +say ""; + +print "In the given array "; +if ( @unique_ints.elems == @ints.elems ) { + say "every element is unique."; +} +elsif ( @unique_ints.elems == 0 ) { + say "no unique element found."; +} +else { + say "we have " ~ @unique_ints.elems ~ " unique elements (" + ~ @unique_ints.join(', ') ~ ")."; +} diff --git a/challenge-228/packy-anderson/raku/ch-2.raku b/challenge-228/packy-anderson/raku/ch-2.raku new file mode 100755 index 0000000000..a7c75860bc --- /dev/null +++ b/challenge-228/packy-anderson/raku/ch-2.raku @@ -0,0 +1,32 @@ +#!/usr/bin/env raku + +use v6; + +my @ints = @*ARGS; # just accept the list of integers on the command line + +my @operations; +my $count = 1; +while ( @ints.elems > 0 ) { + my $min = @ints.min; + + # in either case, we're removing the first element from the list + my $first = @ints.shift; + + if ($min == $first) { + # the first element is the minimum, discard it + push @operations, "Operation $count: remove element $min: (" ~ @ints.join(', ') ~ ")"; + } + else { + # the first element is NOT the minimum, add it to the end + push @ints, $first; + push @operations, "Operation $count: move $first to the end: (" ~ @ints.join(', ') ~ ")"; + } + $count++; +} + +# produce the output +# let's use @ARGV again, since we modify @ints as we go along +say "Input: \@int = (" ~ @*ARGS.join(', ') ~ ")"; +say "Output: " ~ @operations.elems; +say ""; +say join "\n", @operations; \ No newline at end of file diff --git a/challenge-228/packy-anderson/raku/task-1.raku b/challenge-228/packy-anderson/raku/task-1.raku deleted file mode 100755 index f5221b310a..0000000000 --- a/challenge-228/packy-anderson/raku/task-1.raku +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/env raku - -use v6; - -my @ints = @*ARGS; # just accept the list of integers on the command line - -# find the unique elements -my %unique; -for @ints -> $int { - %unique{$int}++; -} - -# make a list of ONLY the unique ints -my @unique_ints = grep { %unique{$_} == 1 }, @ints; - -# sum the unique elements -my $sum = [+] @unique_ints; - -# produce the output -say "Input: \@int = (" ~ @ints.join(', ') ~ ")"; -say "Output: $sum"; -say ""; - -print "In the given array "; -if ( @unique_ints.elems == @ints.elems ) { - say "every element is unique."; -} -elsif ( @unique_ints.elems == 0 ) { - say "no unique element found."; -} -else { - say "we have " ~ @unique_ints.elems ~ " unique elements (" - ~ @unique_ints.join(', ') ~ ")."; -} diff --git a/challenge-228/packy-anderson/raku/task-2.raku b/challenge-228/packy-anderson/raku/task-2.raku deleted file mode 100755 index a7c75860bc..0000000000 --- a/challenge-228/packy-anderson/raku/task-2.raku +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env raku - -use v6; - -my @ints = @*ARGS; # just accept the list of integers on the command line - -my @operations; -my $count = 1; -while ( @ints.elems > 0 ) { - my $min = @ints.min; - - # in either case, we're removing the first element from the list - my $first = @ints.shift; - - if ($min == $first) { - # the first element is the minimum, discard it - push @operations, "Operation $count: remove element $min: (" ~ @ints.join(', ') ~ ")"; - } - else { - # the first element is NOT the minimum, add it to the end - push @ints, $first; - push @operations, "Operation $count: move $first to the end: (" ~ @ints.join(', ') ~ ")"; - } - $count++; -} - -# produce the output -# let's use @ARGV again, since we modify @ints as we go along -say "Input: \@int = (" ~ @*ARGS.join(', ') ~ ")"; -say "Output: " ~ @operations.elems; -say ""; -say join "\n", @operations; \ No newline at end of file diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 1d87e5b5e9..2f231d7134 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,43 +1,33 @@ { "subtitle" : { - "text" : "[Champions: 20] Last updated at 2023-08-01 17:47:54 GMT" + "text" : "[Champions: 23] Last updated at 2023-08-02 12:52:17 GMT" }, - "xAxis" : { - "type" : "category" - }, - "chart" : { - "type" : "column" + "legend" : { + "enabled" : 0 }, - "tooltip" : { - "headerFormat" : "{series.name}
", - "pointFormat" : "{point.name}: {point.y:f}
", - "followPointer" : 1 + "title" : { + "text" : "The Weekly Challenge - 228" }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "enabled" : 1, - "format" : "{point.y}" - }, - "borderWidth" : 0 - } + "xAxis" : { + "type" : "category" }, "series" : [ { + "name" : "The Weekly Challenge - 228", "data" : [ { - "y" : 5, "drilldown" : "Ali Moradi", + "y" : 5, "name" : "Ali Moradi" }, { - "y" : 2, "drilldown" : "Andreas Voegele", + "y" : 2, "name" : "Andreas Voegele" }, { - "name" : "Bob Lied", "y" : 2, + "name" : "Bob Lied", "drilldown" : "Bob Lied" }, { @@ -51,49 +41,59 @@ "name" : "David Ferrone" }, { - "y" : 2, "drilldown" : "E. Choroba", - "name" : "E. Choroba" + "name" : "E. Choroba", + "y" : 2 }, { "y" : 5, - "drilldown" : "Jaldhar H. Vyas", - "name" : "Jaldhar H. Vyas" + "name" : "Jaldhar H. Vyas", + "drilldown" : "Jaldhar H. Vyas" }, { - "y" : 3, "drilldown" : "Laurent Rosenfeld", - "name" : "Laurent Rosenfeld" + "name" : "Laurent Rosenfeld", + "y" : 6 }, { - "name" : "Lubos Kolouch", "drilldown" : "Lubos Kolouch", - "y" : 2 + "y" : 2, + "name" : "Lubos Kolouch" }, { - "drilldown" : "Luca Ferrari", "y" : 8, - "name" : "Luca Ferrari" + "name" : "Luca Ferrari", + "drilldown" : "Luca Ferrari" }, { - "name" : "Mariano Spadaccini", "y" : 1, + "name" : "Mariano Spadaccini", "drilldown" : "Mariano Spadaccini" }, { + "drilldown" : "Mark Anderson", "name" : "Mark Anderson", - "y" : 2, - "drilldown" : "Mark Anderson" + "y" : 4 + }, + { + "drilldown" : "Matthew Neleigh", + "name" : "Matthew Neleigh", + "y" : 2 }, { - "y" : 2, "drilldown" : "Niels van Dijke", - "name" : "Niels van Dijke" + "name" : "Niels van Dijke", + "y" : 2 }, { + "name" : "Packy Anderson", + "y" : 5, + "drilldown" : "Packy Anderson" + }, + { + "y" : 3, "name" : "Peter Campbell Smith", - "drilldown" : "Peter Campbell Smith", - "y" : 3 + "drilldown" : "Peter Campbell Smith" }, { "name" : "Peter Meszaros", @@ -101,47 +101,48 @@ "drilldown" : "Peter Meszaros" }, { - "name" : "Robert DiCicco", + "drilldown" : "Robbie Hatley", + "y" : 3, + "name" : "Robbie Hatley" + }, + { "drilldown" : "Robert DiCicco", + "name" : "Robert DiCicco", "y" : 4 }, { - "name" : "Steven Wilson", + "drilldown" : "Steven Wilson", "y" : 2, - "drilldown" : "Steven Wilson" + "name" : "Steven Wilson" }, { - "y" : 4, "drilldown" : "Thomas Kohler", + "y" : 4, "name" : "Thomas Kohler" }, { + "y" : 4, "name" : "Ulrich Rieke", - "drilldown" : "Ulrich Rieke", - "y" : 4 + "drilldown" : "Ulrich Rieke" }, { - "name" : "W. Luis Mochan", + "drilldown" : "W. Luis Mochan", "y" : 3, - "drilldown" : "W. Luis Mochan" + "name" : "W. Luis Mochan" } ], - "colorByPoint" : 1, - "name" : "The Weekly Challenge - 228" + "colorByPoint" : 1 } ], - "title" : { - "text" : "The Weekly Challenge - 228" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" - } + "tooltip" : { + "pointFormat" : "{point.name}: {point.y:f}
", + "headerFormat" : "{series.name}
", + "followPointer" : 1 }, "drilldown" : { "series" : [ { - "name" : "Ali Moradi", + "id" : "Ali Moradi", "data" : [ [ "Perl", @@ -156,7 +157,7 @@ 1 ] ], - "id" : "Ali Moradi" + "name" : "Ali Moradi" }, { "id" : "Andreas Voegele", @@ -169,17 +170,18 @@ "name" : "Andreas Voegele" }, { - "id" : "Bob Lied", "data" : [ [ "Perl", 2 ] ], + "id" : "Bob Lied", "name" : "Bob Lied" }, { "name" : "Dave Jacoby", + "id" : "Dave Jacoby", "data" : [ [ "Perl", @@ -189,18 +191,17 @@ "Blog", 1 ] - ], - "id" : "Dave Jacoby" + ] }, { - "name" : "David Ferrone", + "id" : "David Ferrone", "data" : [ [ "Perl", 2 ] ], - "id" : "David Ferrone" + "name" : "David Ferrone" }, { "name" : "E. Choroba", @@ -213,7 +214,6 @@ "id" : "E. Choroba" }, { - "id" : "Jaldhar H. Vyas", "data" : [ [ "Perl", @@ -228,6 +228,7 @@ 1 ] ], + "id" : "Jaldhar H. Vyas", "name" : "Jaldhar H. Vyas" }, { @@ -235,15 +236,15 @@ "data" : [ [ "Perl", - 1 + 2 ], [ "Raku", - 1 + 2 ], [ "Blog", - 1 + 2 ] ], "name" : "Laurent Rosenfeld" @@ -259,6 +260,7 @@ "name" : "Lubos Kolouch" }, { + "name" : "Luca Ferrari", "id" : "Luca Ferrari", "data" : [ [ @@ -269,12 +271,11 @@ "Blog", 6 ] - ], - "name" : "Luca Ferrari" + ] }, { - "id" : "Mariano Spadaccini", "name" : "Mariano Spadaccini", + "id" : "Mariano Spadaccini", "data" : [ [ "Perl", @@ -284,13 +285,17 @@ }, { "data" : [ + [ + "Perl", + 2 + ], [ "Raku", 2 ] ], - "name" : "Mark Anderson", - "id" : "Mark Anderson" + "id" : "Mark Anderson", + "name" : "Mark Anderson" }, { "data" : [ @@ -299,12 +304,40 @@ 2 ] ], - "name" : "Niels van Dijke", - "id" : "Niels van Dijke" + "id" : "Matthew Neleigh", + "name" : "Matthew Neleigh" + }, + { + "id" : "Niels van Dijke", + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "Niels van Dijke" + }, + { + "name" : "Packy Anderson", + "id" : "Packy Anderson", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 1 + ] + ] }, { - "id" : "Peter Campbell Smith", "name" : "Peter Campbell Smith", + "id" : "Peter Campbell Smith", "data" : [ [ "Perl", @@ -323,8 +356,22 @@ 2 ] ], - "name" : "Peter Meszaros", - "id" : "Peter Meszaros" + "id" : "Peter Meszaros", + "name" : "Peter Meszaros" + }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ], + "id" : "Robbie Hatley", + "name" : "Robbie Hatley" }, { "name" : "Robert DiCicco", @@ -361,11 +408,11 @@ 2 ] ], - "name" : "Thomas Kohler", - "id" : "Thomas Kohler" + "id" : "Thomas Kohler", + "name" : "Thomas Kohler" }, { - "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke", "data" : [ [ "Perl", @@ -376,7 +423,7 @@ 2 ] ], - "name" : "Ulrich Rieke" + "id" : "Ulrich Rieke" }, { "name" : "W. Luis Mochan", @@ -394,7 +441,21 @@ } ] }, - "legend" : { - "enabled" : 0 + "chart" : { + "type" : "column" + }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 4a9d382fb8..76bf47bf08 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,63 +1,63 @@ { - "legend" : { - "enabled" : "false" - }, "yAxis" : { + "min" : 0, "title" : { "text" : null - }, - "min" : 0 + } + }, + "tooltip" : { + "pointFormat" : "{point.y:.0f}" }, "series" : [ { - "dataLabels" : { - "enabled" : "true", - "align" : "right", - "color" : "#FFFFFF", - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - }, - "format" : "{point.y:.0f}", - "y" : 10, - "rotation" : -90 - }, "data" : [ [ "Blog", - 3805 + 3808 ], [ "Perl", - 11672 + 11681 ], [ "Raku", - 6705 + 6708 ] ], - "name" : "Contributions" + "name" : "Contributions", + "dataLabels" : { + "y" : 10, + "align" : "right", + "rotation" : -90, + "format" : "{point.y:.0f}", + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + }, + "color" : "#FFFFFF", + "enabled" : "true" + } } ], + "chart" : { + "type" : "column" + }, "title" : { "text" : "The Weekly Challenge Contributions [2019 - 2023]" }, - "tooltip" : { - "pointFormat" : "{point.y:.0f}" - }, - "chart" : { - "type" : "column" + "legend" : { + "enabled" : "false" }, "xAxis" : { + "type" : "category", "labels" : { "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" } - }, - "type" : "category" + } }, "subtitle" : { - "text" : "Last updated at 2023-08-01 17:47:54 GMT" + "text" : "Last updated at 2023-08-02 12:52:16 GMT" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 828acaae00..a85c2f1c4e 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,19 +1,22 @@ { - "chart" : { - "type" : "column" - }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2023-08-01 17:47:54 GMT" - }, - "xAxis" : { - "type" : "category" + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } }, - "legend" : { - "enabled" : "false" + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } }, "drilldown" : { "series" : [ { + "name" : "001", "data" : [ [ "Perl", @@ -28,10 +31,11 @@ 11 ] ], - "name" : "001", "id" : "001" }, { + "name" : "002", + "id" : "002", "data" : [ [ "Perl", @@ -45,12 +49,11 @@ "Blog", 10 ] - ], - "name" : "002", - "id" : "002" + ] }, { "name" : "003", + "id" : "003", "data" : [ [ "Perl", @@ -64,10 +67,10 @@ "Blog", 9 ] - ], - "id" : "003" + ] }, { + "id" : "004", "data" : [ [ "Perl", @@ -82,8 +85,7 @@ 10 ] ], - "name" : "004", - "id" : "004" + "name" : "004" }, { "id" : "005", @@ -104,7 +106,7 @@ "name" : "005" }, { - "name" : "006", + "id" : "006", "data" : [ [ "Perl", @@ -119,7 +121,7 @@ 7 ] ], - "id" : "006" + "name" : "006" }, { "id" : "007", @@ -154,11 +156,10 @@ 12 ] ], - "name" : "008", - "id" : "008" + "id" : "008", + "name" : "008" }, { - "name" : "009", "data" : [ [ "Perl", @@ -173,10 +174,10 @@ 13 ] ], - "id" : "009" + "id" : "009", + "name" : "009" }, { - "id" : "010", "data" : [ [ "Perl", @@ -191,6 +192,7 @@ 11 ] ], + "id" : "010", "name" : "010" }, { @@ -208,11 +210,10 @@ 10 ] ], - "name" : "011", - "id" : "011" + "id" : "011", + "name" : "011" }, { - "id" : "012", "name" : "012", "data" : [ [ @@ -227,7 +228,8 @@ "Blog", 11 ] - ] + ], + "id" : "012" }, { "data" : [ @@ -244,11 +246,10 @@ 13 ] ], - "name" : "013", - "id" : "013" + "id" : "013", + "name" : "013" }, { - "name" : "014", "data" : [ [ "Perl", @@ -263,7 +264,8 @@ 15 ] ], - "id" : "014" + "id" : "014", + "name" : "014" }, { "data" : [ @@ -280,11 +282,11 @@ 15 ] ], - "name" : "015", - "id" : "015" + "id" : "015", + "name" : "015" }, { - "name" : "016", + "id" : "016", "data" : [ [ "Perl", @@ -299,7 +301,7 @@ 13 ] ], - "id" : "016" + "name" : "016" }, { "data" : [ @@ -316,10 +318,11 @@ 12 ] ], - "name" : "017", - "id" : "017" + "id" : "017", + "name" : "017" }, { + "id" : "018", "data" : [ [ "Perl", @@ -334,10 +337,10 @@ 14 ] ], - "name" : "018", - "id" : "018" + "name" : "018" }, { + "id" : "019", "data" : [ [ "Perl", @@ -352,11 +355,10 @@ 13 ] ], - "name" : "019", - "id" : "019" + "name" : "019" }, { - "name" : "020", + "id" : "020", "data" : [ [ "Perl", @@ -371,11 +373,11 @@ 13 ] ], - "id" : "020" + "name" : "020" }, { - "id" : "021", "name" : "021", + "id" : "021", "data" : [ [ "Perl", @@ -393,6 +395,7 @@ }, { "name" : "022", + "id" : "022", "data" : [ [ "Perl", @@ -406,8 +409,7 @@ "Blog", 10 ] - ], - "id" : "022" + ] }, { "data" : [ @@ -424,11 +426,11 @@ 12 ] ], - "name" : "023", - "id" : "023" + "id" : "023", + "name" : "023" }, { - "id" : "024", + "name" : "024", "data" : [ [ "Perl", @@ -443,7 +445,7 @@ 11 ] ], - "name" : "024" + "id" : "024" }, { "data" : [ @@ -460,8 +462,8 @@ 12 ] ], - "name" : "025", - "id" : "025" + "id" : "025", + "name" : "025" }, { "id" : "026", @@ -482,7 +484,6 @@ "name" : "026" }, { - "name" : "027", "data" : [ [ "Perl", @@ -497,7 +498,8 @@ 9 ] ], - "id" : "027" + "id" : "027", + "name" : "027" }, { "name" : "028", @@ -518,6 +520,7 @@ "id" : "028" }, { + "id" : "029", "data" : [ [ "Perl", @@ -532,8 +535,7 @@ 12 ] ], - "name" : "029", - "id" : "029" + "name" : "029" }, { "name" : "030", @@ -554,8 +556,8 @@ "id" : "030" }, { - "id" : "031", "name" : "031", + "id" : "031", "data" : [ [ "Perl", @@ -604,8 +606,8 @@ 10 ] ], - "name" : "033", - "id" : "033" + "id" : "033", + "name" : "033" }, { "id" : "034", @@ -627,6 +629,7 @@ }, { "name" : "035", + "id" : "035", "data" : [ [ "Perl", @@ -640,11 +643,10 @@ "Blog", 9 ] - ], - "id" : "035" + ] }, { - "name" : "036", + "id" : "036", "data" : [ [ "Perl", @@ -659,11 +661,10 @@ 11 ] ], - "id" : "036" + "name" : "036" }, { "id" : "037", - "name" : "037", "data" : [ [ "Perl", @@ -677,11 +678,11 @@ "Blog", 9 ] - ] + ], + "name" : "037" }, { "id" : "038", - "name" : "038", "data" : [ [ "Perl", @@ -695,9 +696,12 @@ "Blog", 12 ] - ] + ], + "name" : "038" }, { + "name" : "039", + "id" : "039", "data" : [ [ "Perl", @@ -711,13 +715,9 @@ "Blog", 12 ] - ], - "name" : "039", - "id" : "039" + ] }, { - "id" : "040", - "name" : "040", "data" : [ [ "Perl", @@ -731,9 +731,12 @@ "Blog", 10 ] - ] + ], + "id" : "040", + "name" : "040" }, { + "name" : "041", "data" : [ [ "Perl", @@ -748,11 +751,9 @@ 9 ] ], - "name" : "041", "id" : "041" }, { - "id" : "042", "name" : "042", "data" : [ [ @@ -767,7 +768,8 @@ "Blog", 11 ] - ] + ], + "id" : "042" }, { "data" : [ @@ -784,10 +786,11 @@ 11 ] ], - "name" : "043", - "id" : "043" + "id" : "043", + "name" : "043" }, { + "name" : "044", "data" : [ [ "Perl", @@ -802,10 +805,10 @@ 11 ] ], - "name" : "044", "id" : "044" }, { + "name" : "045", "data" : [ [ "Perl", @@ -820,11 +823,10 @@ 11 ] ], - "name" : "045", "id" : "045" }, { - "id" : "046", + "name" : "046", "data" : [ [ "Perl", @@ -839,11 +841,9 @@ 10 ] ], - "name" : "046" + "id" : "046" }, { - "id" : "047", - "name" : "047", "data" : [ [ "Perl", @@ -857,11 +857,12 @@ "Blog", 10 ] - ] + ], + "id" : "047", + "name" : "047" }, { "id" : "048", - "name" : "048", "data" : [ [ "Perl", @@ -875,7 +876,8 @@ "Blog", 12 ] - ] + ], + "name" : "048" }, { "name" : "049", @@ -896,6 +898,7 @@ "id" : "049" }, { + "id" : "050", "data" : [ [ "Perl", @@ -910,12 +913,11 @@ 12 ] ], - "name" : "050", - "id" : "050" + "name" : "050" }, { - "id" : "051", "name" : "051", + "id" : "051", "data" : [ [ "Perl", @@ -932,6 +934,7 @@ ] }, { + "name" : "052", "id" : "052", "data" : [ [ @@ -946,11 +949,10 @@ "Blog", 14 ] - ], - "name" : "052" + ] }, { - "name" : "053", + "id" : "053", "data" : [ [ "Perl", @@ -965,9 +967,11 @@ 15 ] ], - "id" : "053" + "name" : "053" }, { + "name" : "054", + "id" : "054", "data" : [ [ "Perl", @@ -981,9 +985,7 @@ "Blog", 18 ] - ], - "name" : "054", - "id" : "054" + ] }, { "name" : "055", @@ -1018,11 +1020,10 @@ 17 ] ], - "name" : "056", - "id" : "056" + "id" : "056", + "name" : "056" }, { - "name" : "057", "data" : [ [ "Perl", @@ -1037,9 +1038,11 @@ 15 ] ], - "id" : "057" + "id" : "057", + "name" : "057" }, { + "name" : "058", "id" : "058", "data" : [ [ @@ -1054,10 +1057,10 @@ "Blog", 13 ] - ], - "name" : "058" + ] }, { + "name" : "059", "data" : [ [ "Perl", @@ -1072,11 +1075,9 @@ 16 ] ], - "name" : "059", "id" : "059" }, { - "id" : "060", "name" : "060", "data" : [ [ @@ -1091,9 +1092,11 @@ "Blog", 16 ] - ] + ], + "id" : "060" }, { + "id" : "061", "data" : [ [ "Perl", @@ -1108,11 +1111,9 @@ 14 ] ], - "name" : "061", - "id" : "061" + "name" : "061" }, { - "name" : "062", "data" : [ [ "Perl", @@ -1127,7 +1128,8 @@ 11 ] ], - "id" : "062" + "id" : "062", + "name" : "062" }, { "id" : "063", @@ -1148,7 +1150,6 @@ "name" : "063" }, { - "id" : "064", "name" : "064", "data" : [ [ @@ -1163,7 +1164,8 @@ "Blog", 16 ] - ] + ], + "id" : "064" }, { "name" : "065", @@ -1184,6 +1186,7 @@ "id" : "065" }, { + "name" : "066", "id" : "066", "data" : [ [ @@ -1198,8 +1201,7 @@ "