aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-284/ulrich-rieke/cpp/ch-1.cpp43
-rwxr-xr-xchallenge-284/ulrich-rieke/cpp/ch-2.cpp59
-rwxr-xr-xchallenge-284/ulrich-rieke/haskell/ch-1.hs19
-rwxr-xr-xchallenge-284/ulrich-rieke/haskell/ch-2.hs33
-rwxr-xr-xchallenge-284/ulrich-rieke/perl/ch-1.pl25
-rwxr-xr-xchallenge-284/ulrich-rieke/perl/ch-2.pl33
-rwxr-xr-xchallenge-284/ulrich-rieke/raku/ch-1.raku17
-rwxr-xr-xchallenge-284/ulrich-rieke/raku/ch-2.raku29
-rwxr-xr-xchallenge-284/ulrich-rieke/rust/ch-1.rs20
-rwxr-xr-xchallenge-284/ulrich-rieke/rust/ch-2.rs52
-rw-r--r--stats/pwc-current.json85
-rw-r--r--stats/pwc-language-breakdown-2019.json318
-rw-r--r--stats/pwc-language-breakdown-2020.json404
-rw-r--r--stats/pwc-language-breakdown-2021.json398
-rw-r--r--stats/pwc-language-breakdown-2022.json810
-rw-r--r--stats/pwc-language-breakdown-2023.json762
-rw-r--r--stats/pwc-language-breakdown-2024.json286
-rw-r--r--stats/pwc-language-breakdown-summary.json48
-rw-r--r--stats/pwc-leaders.json746
-rw-r--r--stats/pwc-summary-1-30.json94
-rw-r--r--stats/pwc-summary-121-150.json92
-rw-r--r--stats/pwc-summary-151-180.json100
-rw-r--r--stats/pwc-summary-181-210.json42
-rw-r--r--stats/pwc-summary-211-240.json108
-rw-r--r--stats/pwc-summary-241-270.json90
-rw-r--r--stats/pwc-summary-271-300.json38
-rw-r--r--stats/pwc-summary-301-330.json34
-rw-r--r--stats/pwc-summary-31-60.json98
-rw-r--r--stats/pwc-summary-61-90.json36
-rw-r--r--stats/pwc-summary-91-120.json100
-rw-r--r--stats/pwc-summary.json42
-rw-r--r--stats/pwc-yearly-language-summary.json98
32 files changed, 2754 insertions, 2405 deletions
diff --git a/challenge-284/ulrich-rieke/cpp/ch-1.cpp b/challenge-284/ulrich-rieke/cpp/ch-1.cpp
new file mode 100755
index 0000000000..1217a749db
--- /dev/null
+++ b/challenge-284/ulrich-rieke/cpp/ch-1.cpp
@@ -0,0 +1,43 @@
+#include <vector>
+#include <iostream>
+#include <sstream>
+#include <numeric>
+#include <algorithm>
+#include <string>
+
+std::vector<std::string> split( std::string text , const char delimiter ) {
+ std::stringstream instr { text } ;
+ std::vector<std::string> tokens ;
+ std::string word ;
+ while ( std::getline( instr, word , delimiter ) )
+ tokens.push_back( word ) ;
+ return tokens ;
+}
+
+int main( ) {
+ std::cout << "Enter some integers, separated by blanks!\n" ;
+ std::string line ;
+ std::getline( std::cin , line ) ;
+ auto numberline { split( line , ' ' ) } ;
+ std::vector<int> numbers ;
+ for ( auto s : numberline )
+ numbers.push_back( std::stoi( s ) ) ;
+ std::vector<int> selected ;
+ for ( int i : numbers ) {
+ if ( std::count( numbers.begin( ) , numbers.end( ) , i ) == i )
+ selected.push_back( i ) ;
+ }
+ int len = selected.size( ) ;
+ if ( len > 1 ) {
+ std::cout << *std::max_element( selected.begin( ) , selected.end( ) ) <<
+ '\n' ;
+ }
+ else if ( len == 1 ) {
+ std::cout << selected[0] << '\n' ;
+ }
+ else {
+ std::cout << -1 << '\n' ;
+ }
+ return 0 ;
+}
+
diff --git a/challenge-284/ulrich-rieke/cpp/ch-2.cpp b/challenge-284/ulrich-rieke/cpp/ch-2.cpp
new file mode 100755
index 0000000000..b1bab0811c
--- /dev/null
+++ b/challenge-284/ulrich-rieke/cpp/ch-2.cpp
@@ -0,0 +1,59 @@
+#include <vector>
+#include <sstream>
+#include <string>
+#include <map>
+#include <algorithm>
+#include <iostream>
+#include <iterator>
+#include <set>
+
+std::vector<std::string> split( std::string text , const char delimiter) {
+ std::stringstream instr { text } ;
+ std::vector<std::string> tokens ;
+ std::string word ;
+ while ( std::getline( instr , word , delimiter ) )
+ tokens.push_back( word ) ;
+ return tokens ;
+}
+
+int main( ) {
+ std::cout << "Enter a list of integers, separated by blanks!\n" ;
+ std::string line ;
+ std::getline( std::cin , line ) ;
+ std::vector<std::string> firstNums { split( line , ' ' ) } ,
+ secondNums ;
+ std::cout << "Enter a list of unique integers that are a subset of the "
+ << "first list!\n" ;
+ std::getline( std::cin , line ) ;
+ secondNums = split( line , ' ' ) ;
+ std::vector<int> firstNumbers , secondNumbers ;
+ for ( auto s : firstNums )
+ firstNumbers.push_back( std::stoi( s ) ) ;
+ for ( auto s : secondNums )
+ secondNumbers.push_back( std::stoi( s ) ) ;
+ std::map<int , int> frequencies ;
+ for ( int i : firstNumbers )
+ frequencies[i]++ ;
+ std::vector<int> result ; // final numbers for the output
+ for ( int n : secondNumbers ) {
+ for ( int i = 0 ; i < frequencies.find( n )->second ; i++ )
+ result.push_back( n ) ;
+ }
+ //we now look for the numbers in firstNumbers not in secondNumbers
+ std::vector<int> difference ;
+ std::set<int> firstSet { firstNumbers.begin( ) , firstNumbers.end( ) } ;
+ std::set<int> secondSet { secondNumbers.begin( ) , secondNumbers.end( ) } ;
+ auto pos = std::set_difference( firstSet.begin( ) ,
+ firstSet.end( ) , secondSet.begin( ) ,
+ secondSet.end( ) , std::inserter( difference ,
+ difference.begin( ) ) ) ;
+ for ( int i : difference ) {
+ for ( int n = 0 ; n < frequencies.find( i )->second ; n++ )
+ result.push_back( i ) ;
+ }
+ std::cout << '(' ;
+ std::copy( result.begin( ) , result.end( ) ,
+ std::ostream_iterator<int>( std::cout , " " ) ) ;
+ std::cout << ")\n" ;
+ return 0 ;
+}
diff --git a/challenge-284/ulrich-rieke/haskell/ch-1.hs b/challenge-284/ulrich-rieke/haskell/ch-1.hs
new file mode 100755
index 0000000000..580497c4dc
--- /dev/null
+++ b/challenge-284/ulrich-rieke/haskell/ch-1.hs
@@ -0,0 +1,19 @@
+module Challenge284
+ where
+import Data.List ( findIndices )
+
+solution :: [Int] -> Int
+solution list
+ |null selected = -1
+ |l == 1 = head selected
+ |otherwise = maximum selected
+ where
+ selected = map fst $ filter (\p -> fst p == (length $ snd p ) ) $
+ map (\i -> (i , findIndices (== i ) list ) ) list
+ l = length selected
+
+main :: IO ( )
+main = do
+ putStrLn "Enter some integers separated by blanks!"
+ numberline <- getLine
+ print $ solution $ map read $ words numberline
diff --git a/challenge-284/ulrich-rieke/haskell/ch-2.hs b/challenge-284/ulrich-rieke/haskell/ch-2.hs
new file mode 100755
index 0000000000..fc4afcb1d9
--- /dev/null
+++ b/challenge-284/ulrich-rieke/haskell/ch-2.hs
@@ -0,0 +1,33 @@
+module Challenge284_2
+ where
+import qualified Data.Set as S
+import Data.Maybe ( fromJust )
+import Data.List ( sort , (\\) )
+
+count :: Eq a => a -> [a] -> Int
+count _ [] = 0
+count d (x:xs)
+ |d == x = 1 + count d xs
+ |otherwise = count d xs
+
+findResult :: [Int] -> [Int] -> [Int]
+findResult firstList secondList =
+ let firstNumbers = S.toList $ S.fromList firstList
+ secondNumbers = S.toList $ S.fromList secondList
+ frequencies = map (\i -> ( i , count i firstList )) firstList
+ onlyFirst = firstNumbers \\ secondNumbers
+ firstPart = concat $ map (\i -> replicate ( fromJust $ lookup i
+ frequencies ) i ) secondList
+ secondPart = concat $ map (\i -> replicate ( fromJust $ lookup i
+ frequencies ) i ) $ sort onlyFirst
+ in firstPart ++ secondPart
+
+main :: IO ( )
+main = do
+ putStrLn "Enter some integers, separated by blanks!"
+ firstLine <- getLine
+ putStrLn "Enter some unique integers that are a subset of above!"
+ secondLine <- getLine
+ let firstNumbers = map read $ words firstLine
+ secondNumbers = map read $ words secondLine
+ print $ findResult firstNumbers secondNumbers
diff --git a/challenge-284/ulrich-rieke/perl/ch-1.pl b/challenge-284/ulrich-rieke/perl/ch-1.pl
new file mode 100755
index 0000000000..125a3619f2
--- /dev/null
+++ b/challenge-284/ulrich-rieke/perl/ch-1.pl
@@ -0,0 +1,25 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+use List::Util qw ( max ) ;
+
+say "Enter some integers, separated by blanks!" ;
+my $line = <STDIN> ;
+chomp $line ;
+my @numbers = split( /\s+/ , $line ) ;
+my %frequencies ;
+map { $frequencies{$_}++ } @numbers ;
+my @selected = grep { $frequencies{$_} == $_ } @numbers ;
+my $len = scalar( @selected ) ;
+if ( $len > 1 ) {
+ say max( @selected ) ;
+}
+elsif ( $len == 1 ) {
+ say $selected[0] ;
+}
+else {
+ say -1 ;
+}
+
+
diff --git a/challenge-284/ulrich-rieke/perl/ch-2.pl b/challenge-284/ulrich-rieke/perl/ch-2.pl
new file mode 100755
index 0000000000..d0cc983d48
--- /dev/null
+++ b/challenge-284/ulrich-rieke/perl/ch-2.pl
@@ -0,0 +1,33 @@
+#!/usr/bin/perl ;
+use strict ;
+use warnings ;
+use feature 'say' ;
+
+say "Enter some integers, separated by blanks!" ;
+my $line = <STDIN> ;
+chomp $line ;
+my @firstNumbers = split( /\s+/ , $line ) ;
+say "Enter some unique integers that are a subset of the first ones!" ;
+$line = <STDIN> ;
+chomp $line ;
+my @secondNumbers = split( /\s+/ , $line ) ;
+my @result ; #final result array
+my %firstFrequencies ; #frequencies of numbers in the first list
+my %secondFrequencies ; #frequencies of numbers in the second list , for
+#the determination of list difference
+map { $firstFrequencies{$_}++ } @firstNumbers ;
+map { $secondFrequencies{$_}++ } @secondNumbers ;
+for my $n ( @secondNumbers ) {
+ for my $i ( 1..$firstFrequencies{ $n } ) {
+ push( @result , $n ) ;
+ }
+}
+my @diffList = grep { not ( exists( $secondFrequencies{$_} ) ) } keys
+ %firstFrequencies ; #list of numbers in first list but not in second
+my @sorted = sort @diffList ;
+for my $num ( @sorted ) {
+ for my $i ( 1..$firstFrequencies{$num} ) {
+ push( @result , $num ) ;
+ }
+}
+say join( ',' , @result ) ;
diff --git a/challenge-284/ulrich-rieke/raku/ch-1.raku b/challenge-284/ulrich-rieke/raku/ch-1.raku
new file mode 100755
index 0000000000..bef1843f28
--- /dev/null
+++ b/challenge-284/ulrich-rieke/raku/ch-1.raku
@@ -0,0 +1,17 @@
+use v6 ;
+
+say "Enter some integers separated by blanks!" ;
+my $line = $*IN.get ;
+my @numbers = $line.words.map( {.Int} ) ;
+my %frequencies ;
+@numbers.map( {%frequencies{$_}++} ) ;
+my @selected = @numbers.grep( {%frequencies{$_} == $_} ) ;
+if ( @selected.elems > 1 ) {
+ say @selected.max ;
+}
+elsif ( @selected.elems == 1) {
+ say @selected[0] ;
+}
+else {
+ say -1 ;
+}
diff --git a/challenge-284/ulrich-rieke/raku/ch-2.raku b/challenge-284/ulrich-rieke/raku/ch-2.raku
new file mode 100755
index 0000000000..d8c4165da7
--- /dev/null
+++ b/challenge-284/ulrich-rieke/raku/ch-2.raku
@@ -0,0 +1,29 @@
+use v6 ;
+
+say "Enter some integers, separated by blanks!" ;
+my $line = $*IN.get ;
+my @firstNumbers = $line.words.map( {.Int} ) ;
+say "Enter some unique integers, which are a subset of the first integers!" ;
+$line = $*IN.get ;
+my @secondNumbers = $line.words.map( {.Int} ) ;
+my %frequencies ;
+@firstNumbers.map( {%frequencies{$_}++} ) ;
+my @result ;
+my $firstSet = @firstNumbers.Set ;
+my $secondSet = @secondNumbers.Set ;
+for (@secondNumbers) -> $n {
+ for (1..%frequencies{$n} ) -> $times {
+ @result.push( $n ) ;
+ }
+}
+my @difference ;
+for ( $firstSet (-) $secondSet ) -> $element {
+ @difference.push( $element.key ) ;
+}
+@difference .= sort ;
+for ( @difference ) -> $n {
+ for (1..%frequencies{$n} ) {
+ @result.push( $n ) ;
+ }
+}
+say join( ',' , @result ) ;
diff --git a/challenge-284/ulrich-rieke/rust/ch-1.rs b/challenge-284/ulrich-rieke/rust/ch-1.rs
new file mode 100755
index 0000000000..c9f773f4f9
--- /dev/null
+++ b/challenge-284/ulrich-rieke/rust/ch-1.rs
@@ -0,0 +1,20 @@
+use std::io ;
+
+fn main() {
+ println!("Enter a list of integers separated by blanks!");
+ let mut inline : String = String::new ( ) ;
+ io::stdin( ).read_line( &mut inline ).unwrap( ) ;
+ let entered_line : &str = inline.as_str( ).trim( ) ;
+ let numbers : Vec<i32> = entered_line.split_whitespace( ).map( | s |
+ s.parse::<i32>( ).unwrap( ) ).collect( ) ;
+ let luckies : Vec<&i32> = numbers.iter( ).filter( |&d| {
+ let ct : usize = numbers.iter( ).filter( | &n | *n == *d ).count( ) ;
+ ct as i32 == *d
+ } ).collect( ) ;
+ let result : i32 = match luckies.len( ) {
+ number if number > 1 => **luckies.iter( ).max( ).unwrap( ) ,
+ number if number == 1 => *luckies[0] ,
+ _ => -1
+ } ;
+ println!("{}" , result ) ;
+}
diff --git a/challenge-284/ulrich-rieke/rust/ch-2.rs b/challenge-284/ulrich-rieke/rust/ch-2.rs
new file mode 100755
index 0000000000..f84a70b44c
--- /dev/null
+++ b/challenge-284/ulrich-rieke/rust/ch-2.rs
@@ -0,0 +1,52 @@
+use std::io ;
+use std::collections::{HashMap , HashSet} ;
+
+fn main() {
+ println!("Enter some integers, separated by blanks!");
+ let mut inline : String = String::new( ) ;
+ io::stdin( ).read_line( &mut inline ).unwrap( ) ;
+ let first_line : &str = inline.as_str( ).trim( ) ;
+ println!("Enter some distinct integers, that are a subset of above!" ) ;
+ let mut sec_line : String = String::new( ) ;
+ io::stdin( ).read_line( &mut sec_line ).unwrap( ) ;
+ let second_line : &str = sec_line.as_str( ).trim( ) ;
+ let first_numbers : Vec<i32> = first_line.split_whitespace( ).map(
+ |s| s.parse::<i32>( ).unwrap( )).collect( ) ;
+ let second_numbers : Vec<i32> = second_line.split_whitespace( ).map(
+ |s| s.parse::<i32>( ).unwrap( ) ).collect( ) ;
+ //frequencies of the numbers first entered
+ let mut frequencies = HashMap::new( ) ;
+ for n in &first_numbers {
+ frequencies.entry( n ).and_modify( |counter| *counter += 1 ).
+ or_insert( 1 ) ;
+ }
+ //result holds the final number vector
+ let mut result : Vec<i32> = Vec::new( ) ;
+ //we now form a set of the second list of integers entered
+ //we do that while traversing second_numbers for adding as
+ //many copies to the result set as in the first_numbers vector
+ let mut second_set : HashSet<i32> = HashSet::new( ) ;
+ for n in second_numbers {
+ let f = frequencies.get( &n ).unwrap( ) ;
+ for _ in 0..*f {
+ result.push( n ) ;
+ }
+ second_set.insert( n ) ;
+ }
+ let mut first_set : HashSet<i32> = HashSet::new( ) ;
+ for n in &first_numbers {
+ first_set.insert( *n ) ;
+ }
+ let mut diff_vec : Vec<i32> = Vec::new( ) ;//difference vector
+ for d in first_set.difference( &second_set ) {
+ diff_vec.push( *d ) ;
+ }
+ diff_vec.sort( ) ;
+ diff_vec.into_iter( ).for_each( | i | {
+ let f = frequencies.get( &i ).unwrap( ) ;
+ for _ in 0..*f {
+ result.push( i ) ;
+ }
+ }) ;
+ println!("{:?}" , result ) ;
+}
diff --git a/stats/pwc-current.json b/stats/pwc-current.json
index 6e6aa4100d..98a68025ea 100644
--- a/stats/pwc-current.json
+++ b/stats/pwc-current.json
@@ -1,59 +1,67 @@
{
- "subtitle" : {
- "text" : "[Champions: 4] Last updated at 2024-08-26 16:13:54 GMT"
- },
"legend" : {
"enabled" : 0
},
- "yAxis" : {
- "title" : {
- "text" : "Total Solutions"
- }
+ "title" : {
+ "text" : "The Weekly Challenge - 284"
},
"tooltip" : {
- "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>",
"headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>",
- "followPointer" : 1
- },
- "title" : {
- "text" : "The Weekly Challenge - 284"
+ "followPointer" : 1,
+ "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>"
},
- "xAxis" : {
- "type" : "category"
+ "chart" : {
+ "type" : "column"
},
"series" : [
{
+ "name" : "The Weekly Challenge - 284",
"data" : [
{
+ "drilldown" : "Feng Chang",
"y" : 2,
- "name" : "Feng Chang",
- "drilldown" : "Feng Chang"
+ "name" : "Feng Chang"
},
{
+ "drilldown" : "Niels van Dijke",
"name" : "Niels van Dijke",
- "y" : 2,
- "drilldown" : "Niels van Dijke"
+ "y" : 2
},
{
- "drilldown" : "Paulo Custodio",
"name" : "Paulo Custodio",
- "y" : 2
+ "y" : 2,
+ "drilldown" : "Paulo Custodio"
},
{
- "y" : 2,
"name" : "Torgny Lyon",
+ "y" : 2,
"drilldown" : "Torgny Lyon"
+ },
+ {
+ "name" : "Ulrich Rieke",
+ "y" : 4,
+ "drilldown" : "Ulrich Rieke"
}
],
- "name" : "The Weekly Challenge - 284",
"colorByPoint" : 1
}
],
+ "xAxis" : {
+ "type" : "category"
+ },
+ "yAxis" : {
+ "title" : {
+ "text" : "Total Solutions"
+ }
+ },
+ "subtitle" : {
+ "text" : "[Champions: 5] Last updated at 2024-08-26 16:20:22 GMT"
+ },
"plotOptions" : {
"series" : {
"dataLabels" : {
- "format" : "{point.y}",
- "enabled" : 1
+ "enabled" : 1,
+ "format" : "{point.y}"
},
"borderWidth" : 0
}
@@ -61,48 +69,59 @@
"drilldown" : {
"series" : [
{
+ "id" : "Feng Chang",
"name" : "Feng Chang",
"data" : [
[
"Raku",
2
]
- ],
- "id" : "Feng Chang"
+ ]
},
{
- "id" : "Niels van Dijke",
"data" : [
[
"Perl",
2
]
],
+ "id" : "Niels van Dijke",
"name" : "Niels van Dijke"
},
{
"name" : "Paulo Custodio",
+ "id" : "Paulo Custodio",
+ "data" : [
+ [
+ "Perl",
+ 2
+ ]
+ ]
+ },
+ {
"data" : [
[
"Perl",
2
]
],
- "id" : "Paulo Custodio"
+ "name" : "Torgny Lyon",
+ "id" : "Torgny Lyon"
},
{
"data" : [
[
"Perl",
2
+ ],
+ [
+ "Raku",
+ 2
]
],
- "id" : "Torgny Lyon",
- "name" : "Torgny Lyon"
+ "id" : "Ulrich Rieke",
+ "name" : "Ulrich Rieke"
}
]
- },
- "chart" : {
- "type" : "column"
}
}
diff --git a/stats/pwc-language-breakdown-2019.json b/stats/pwc-language-breakdown-2019.json
index d5d829da61..3145c21723 100644
--- a/stats/pwc-language-breakdown-2019.json
+++ b/stats/pwc-language-breakdown-2019.json
@@ -1,28 +1,21 @@
{
- "title" : {
- "text" : "The Weekly Challenge Language"
- },
- "tooltip" : {
- "followPointer" : "true",
- "headerFormat" : "<span style=\"font-size:11px\"></span>",
- "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>"
- },
- "legend" : {
- "enabled" : "false"
+ "subtitle" : {
+ "text" : "Click the columns to drilldown the language breakdown. Last updated at 2024-08-26 16:20:22 GMT"
},
- "yAxis" : {
- "title" : {
- "text" : "Total Solutions"
+ "plotOptions" : {
+ "series" : {
+ "borderWidth" : 0,
+ "dataLabels" : {
+ "format" : "{point.y}",
+ "enabled" : 1
+ }
}
},
- "subtitle" : {
- "text" : "Click the columns to drilldown the language breakdown. Last updated at 2024-08-26 16:13:54 GMT"
- },
"drilldown" : {
"series" : [
{
- "name" : "041",
"id" : "041",
+ "name" : "041",
"data" : [
[
"Perl",
@@ -39,8 +32,8 @@
]
},
{
- "name" : "040",
"id" : "040",
+ "name" : "040",
"data" : [
[
"Perl",
@@ -57,8 +50,6 @@
]
},
{
- "name" : "039",
- "id" : "039",
"data" : [
[
"Perl",
@@ -72,11 +63,11 @@
"Blog",
12
]
- ]
+ ],
+ "id" : "039",
+ "name" : "039"
},
{
- "name" : "038",
- "id" : "038",
"data" : [
[
"Perl",
@@ -90,9 +81,13 @@
"Blog",
12
]
- ]
+ ],
+ "id" : "038",
+ "name" : "038"
},
{
+ "id" : "037",
+ "name" : "037",
"data" : [
[
"Perl",
@@ -106,9 +101,7 @@
"Blog",
9
]
- ],
- "id" : "037",
- "name" : "037"
+ ]
},
{
"name" : "036",
@@ -143,11 +136,10 @@
9
]
],
- "id" : "035",
- "name" : "035"
+ "name" : "035",
+ "id" : "035"
},
{
- "name" : "034",
"data" : [
[
"Perl",
@@ -162,9 +154,12 @@
11
]
],
+ "name" : "034",
"id" : "034"
},
{
+ "name" : "033",
+ "id" : "033",
"data" : [
[
"Perl",
@@ -178,9 +173,7 @@
"Blog",
10
]
- ],
- "id" : "033",
- "name" : "033"
+ ]
},
{
"name" : "032",
@@ -201,7 +194,6 @@
]
},
{
- "name" : "031",
"data" : [
[
"Perl",
@@ -216,10 +208,12 @@
9
]
],
+ "name" : "031",
"id" : "031"
},
{
"id" : "030",
+ "name" : "030",
"data" : [
[
"Perl",
@@ -233,12 +227,9 @@
"Blog",
10
]
- ],
- "name" : "030"
+ ]
},
{
- "name" : "029",
- "id" : "029",
"data" : [
[
"Perl",
@@ -252,11 +243,11 @@
"Blog",
12
]
- ]
+ ],
+ "name" : "029",
+ "id" : "029"
},
{
- "name" : "028",
- "id" : "028",
"data" : [
[
"Perl",
@@ -270,9 +261,13 @@
"Blog",
9
]
- ]
+ ],
+ "name" : "028",
+ "id" : "028"
},
{
+ "name" : "027",
+ "id" : "027",
"data" : [
[
"Perl",
@@ -286,9 +281,7 @@
"Blog",
9
]
- ],
- "id" : "027",
- "name" : "027"
+ ]
},
{
"name" : "026",
@@ -310,6 +303,7 @@
},
{
"id" : "025",
+ "name" : "025",
"data" : [
[
"Perl",
@@ -323,12 +317,9 @@
"Blog",
12
]
- ],
- "name" : "025"
+ ]
},
{
- "name" : "024",
- "id" : "024",
"data" : [
[
"Perl",
@@ -342,10 +333,11 @@
"Blog",
11
]
- ]
+ ],
+ "name" : "024",
+ "id" : "024"
},
{
- "name" : "023",
"data" : [
[
"Perl",
@@ -360,10 +352,12 @@
12
]
],
- "id" : "023"
+ "id" : "023",
+ "name" : "023"
},
{
"id" : "022",
+ "name" : "022",
"data" : [
[
"Perl",
@@ -377,11 +371,9 @@
"Blog",
10
]
- ],
- "name" : "022"
+ ]
},
{
- "name" : "021",
"data" : [
[
"Perl",
@@ -396,10 +388,12 @@
10
]
],
+ "name" : "021",
"id" : "021"
},
{
"id" : "020",
+ "name" : "020",
"data" : [
[
"Perl",
@@ -413,8 +407,7 @@
"Blog",
13
]
- ],
- "name" : "020"
+ ]
},
{
"data" : [
@@ -431,10 +424,12 @@
13
]
],
- "id" : "019",
- "name" : "019"
+ "name" : "019",
+ "id" : "019"
},
{
+ "id" : "018",
+ "name" : "018",
"data" : [
[
"Perl",
@@ -448,12 +443,11 @@
"Blog",
14
]
- ],
- "id" : "018",
- "name" : "018"
+ ]
},
{
"name" : "017",
+ "id" : "017",
"data" : [
[
"Perl",
@@ -467,11 +461,9 @@
"Blog",
12
]
- ],
- "id" : "017"
+ ]
},
{
- "name" : "016",