diff options
| -rw-r--r-- | challenge-032/ulrich-rieke/cpp/ch-1.cpp | 72 | ||||
| -rw-r--r-- | challenge-032/ulrich-rieke/cpp/ch-2.cpp | 92 | ||||
| -rw-r--r-- | stats/pwc-current.json | 172 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown-summary.json | 50 | ||||
| -rw-r--r-- | stats/pwc-language-breakdown.json | 490 | ||||
| -rw-r--r-- | stats/pwc-leaders.json | 918 | ||||
| -rw-r--r-- | stats/pwc-summary-1-30.json | 38 | ||||
| -rw-r--r-- | stats/pwc-summary-121-150.json | 26 | ||||
| -rw-r--r-- | stats/pwc-summary-31-60.json | 46 | ||||
| -rw-r--r-- | stats/pwc-summary-61-90.json | 102 | ||||
| -rw-r--r-- | stats/pwc-summary-91-120.json | 122 | ||||
| -rw-r--r-- | stats/pwc-summary.json | 308 |
12 files changed, 1300 insertions, 1136 deletions
diff --git a/challenge-032/ulrich-rieke/cpp/ch-1.cpp b/challenge-032/ulrich-rieke/cpp/ch-1.cpp new file mode 100644 index 0000000000..39c61373e3 --- /dev/null +++ b/challenge-032/ulrich-rieke/cpp/ch-1.cpp @@ -0,0 +1,72 @@ +#include <iostream> +#include <vector> +#include <map> +#include <algorithm> +#include <utility> +#include <fstream> + +void printStrings( const std::vector<std::string> & strings ) { + std::map<std::string, int> frequencies ; + int maxlen = 0 ; + for ( std::string str : strings ) { + frequencies[ str ]++ ; + if ( str.length( ) > maxlen ) + maxlen = str.length( ) ; + } + std::vector<std::pair<std::string , int>> orderedFreq { frequencies.begin( ), + frequencies.end( ) } ; + std::sort ( orderedFreq.begin( ) , orderedFreq.end( ) , []( const + std::pair<std::string, int> a , const std::pair<std::string, int> b ) + { return a.second > b.second ; } ) ; + std::string answer ; + std::cout << "Output as csv : (y)es or (n)o ?\n" ; + std::cin >> answer ; + if ( answer.substr(0, 1 ) == "n" ) { + for ( auto & p : orderedFreq ) { + std::cout << p.first ; + std::cout.width( maxlen - p.first.length( ) + 1 ) ; + std::cout << p.second << std::endl ; + } + } + else { + for ( auto & p : orderedFreq ) { + std::cout << p.first << ',' << p.second << '\n' ; + } + } +} + +int main( int argc , char * argv[] ) { + std::vector<std::string> argstrings ; + std::vector<std::string> argfiles ; + for ( int i = 1 ; i < argc ; i++ ) { + std::string argument( argv[ i ] ) ; + std::ifstream infile ( argument , std::ios::in ) ; + if ( infile ) { + argfiles.push_back( argument ) ; + infile.close( ) ; + } + else { + argstrings.push_back( argument ) ; + } + } + if ( ! argstrings.empty( ) ) { + std::cout << "Strings in the argument list:\n" ; + printStrings( argstrings ) ; + } + if ( ! argfiles.empty( ) ) { + for ( auto & file : argfiles ) { + std::ifstream inputfile( file , std::ios::in ) ; + std::vector<std::string> filelines ; + std::string line ; + std::cout << "Content of file " << file << " by frequency:\n" ; + while ( inputfile ) { + std::getline( inputfile , line ) ; + filelines.push_back( line ) ; + } + inputfile.close( ) ; + printStrings( filelines ) ; + } + } + return 0 ; +} + diff --git a/challenge-032/ulrich-rieke/cpp/ch-2.cpp b/challenge-032/ulrich-rieke/cpp/ch-2.cpp new file mode 100644 index 0000000000..7d9043ca6c --- /dev/null +++ b/challenge-032/ulrich-rieke/cpp/ch-2.cpp @@ -0,0 +1,92 @@ +#include <iostream> +#include <string> +#include <vector> +#include <utility> +#include <algorithm> +#include <cmath> +#include <map> +#include <iterator> + +using e_type = std::pair<std::string, double> ; +using e_r_type = std::pair<std::string, int> ; + +std::map<std::string, double> enterData( ) { + std::map<std::string, double> theData ; + std::string item ; + std::cout << "Enter items( end to end) : " ; + std::cin >> item ; + while ( item != "end" ) { + double quantity = 0.0 ; + std::cout << "enter quantity : " ; + std::cin >> quantity ; + theData[ item ] = quantity ; + std::cout << "Enter items( end to end) : " ; + std::cin >> item ; + } + return theData ; +} + +std::vector<e_r_type> normalizeData( std::map<std::string, double> & dats ) { + std::map<std::string, double>::iterator result ; + result = std::max_element( dats.begin( ) , dats.end( ) , + []( const e_type & a, const e_type & b ) { return a.second < + b.second ; } ) ; + double maximum = result->second ; + //if the maximum item number is greater than 40, we want to scale the + //numbers in order to make rendering easier + double scalefactor = 0.0 ; + if ( maximum > 40.0 ) { + scalefactor = 40.0 / maximum ; + } + if ( scalefactor != 0.0 ) { + std::vector<e_r_type> allRounded ; + for ( auto & el : dats ) { + el.second *= scalefactor ; + } + } + std::vector<e_r_type> allRounded ; + for ( auto & el : dats ) { + allRounded.push_back( std::make_pair( el.first , + static_cast<int>( round ( el.second ) ) ) ) ; + } + return allRounded ; +} + +void generate_bar_graph( std::vector<e_r_type> & myData ) { + //in order to "pretty print" the items we want to find out the maximum + //length of an item + std::string answer ; + std::vector<e_r_type>::iterator result ; + result = std::max_element( myData.begin( ) , myData.end( ) , + []( const e_r_type & el1, const e_r_type & el2 ) { return + el1.first.length( ) < el2.first.length( ) ; } ) ; + int maxlen = (result->first).length( ) ; + std::cout << "maxlen is " << maxlen << '\n' ; + std::cout << "You can order the output by item or by quantity!\n" ; + std::cout << "Do you want to order by item ? (y)es or (n)o ?" ; + std::cin >> answer ; + if (answer.substr( 0, 1 ) == "n" ) {//we order by quantity and have to sort + std::sort( myData.begin( ) , myData.end( ) , []( e_r_type & el1 , + e_r_type & el2 ) { return el1.second > el1.second ; } ) ; + } + else {//we order by item + std::sort( myData.begin( ) , myData.end( ) ) ; + } + for ( const e_r_type & element : myData ) { + std::cout << element.first ; + std::cout.width( maxlen - element.first.length( ) + 1 ) ; + std::cout << "|" ; + for ( int i = 0 ; i < element.second ; i++ ) { + std::cout << '#' ; + } + std::cout << std::endl ; + } +} + +int main( ) { + std::map<std::string, double> theData {enterData( ) } ; + std::vector<e_r_type> rounded { normalizeData( theData ) } ; + generate_bar_graph( rounded ) ; + return 0 ; +} + diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 5abad70124..93ba9365fc 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,20 +1,27 @@ { - "yAxis" : { - "title" : { - "text" : "Total Solutions" + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } } }, + "legend" : { + "enabled" : 0 + }, "drilldown" : { "series" : [ { + "name" : "Andrezgz", + "id" : "Andrezgz", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Andrezgz", - "name" : "Andrezgz" + ] }, { "data" : [ @@ -27,38 +34,38 @@ "name" : "Dave Cross" }, { - "id" : "Dave Jacoby", "name" : "Dave Jacoby", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Dave Jacoby" }, { - "name" : "Duane Powell", "id" : "Duane Powell", "data" : [ [ "Perl 5", 2 ] - ] + ], + "name" : "Duane Powell" }, { "name" : "E. Choroba", - "id" : "E. Choroba", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "E. Choroba" }, { - "id" : "Fabrizio Poggi", "name" : "Fabrizio Poggi", + "id" : "Fabrizio Poggi", "data" : [ [ "Perl 5", @@ -67,8 +74,6 @@ ] }, { - "id" : "Javier Luque", - "name" : "Javier Luque", "data" : [ [ "Perl 5", @@ -82,9 +87,12 @@ "Blog", 1 ] - ] + ], + "id" : "Javier Luque", + "name" : "Javier Luque" }, { + "name" : "Joelle Maslak", "data" : [ [ "Perl 5", @@ -95,22 +103,21 @@ 2 ] ], - "id" : "Joelle Maslak", - "name" : "Joelle Maslak" + "id" : "Joelle Maslak" }, { - "id" : "Kevin Colyer", - "name" : "Kevin Colyer", "data" : [ [ "Perl 6", 2 ] - ] + ], + "id" : "Kevin Colyer", + "name" : "Kevin Colyer" }, { - "id" : "Lars Balker", "name" : "Lars Balker", + "id" : "Lars Balker", "data" : [ [ "Perl 5", @@ -125,8 +132,8 @@ 2 ] ], - "name" : "Lars Thegler", - "id" : "Lars Thegler" + "id" : "Lars Thegler", + "name" : "Lars Thegler" }, { "data" : [ @@ -167,109 +174,89 @@ "name" : "Nazareno Delucca" }, { + "name" : "Prajith P", "data" : [ [ "Perl 5", 2 ] ], - "id" : "Prajith P", - "name" : "Prajith P" + "id" : "Prajith P" }, { + "id" : "Rage311", "data" : [ [ "Perl 5", 2 ] ], - "name" : "Rage311", - "id" : "Rage311" + "name" : "Rage311" }, { "name" : "Roger Bell West", - "id" : "Roger Bell West", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Roger Bell West" }, { + "name" : "Simon Proctor", + "id" : "Simon Proctor", "data" : [ [ "Perl 6", 2 ] - ], - "id" : "Simon Proctor", - "name" : "Simon Proctor" + ] }, { + "name" : "Steven Wilson", + "id" : "Steven Wilson", "data" : [ [ "Perl 5", 2 ] - ], - "id" : "Steven Wilson", - "name" : "Steven Wilson" + ] }, { - "name" : "Ulrich Rieke", - "id" : "Ulrich Rieke", "data" : [ [ "Perl 5", 2 ] - ] + ], + "id" : "Ulrich Rieke", + "name" : "Ulrich Rieke" }, { - "name" : "Yet Ebreo", "id" : "Yet Ebreo", "data" : [ [ "Perl 5", 2 ] - ] + ], + "name" : "Yet Ebreo" } ] }, - "xAxis" : { - "type" : "category" - }, "chart" : { "type" : "column" }, - "tooltip" : { - "headerFormat" : "<span style='font-size:11px'>{series.name}</span><br/>", - "followPointer" : 1, - "pointFormat" : "<span style='color:{point.color}'>{point.name}</span>: <b>{point.y:f}</b><br/>" + "xAxis" : { + "type" : "category" }, "title" : { "text" : "Perl Weekly Challenge - 032" }, - "legend" : { - "enabled" : 0 - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 - } - }, - "subtitle" : { - "text" : "[Champions: 21] Last updated at 2019-11-02 06:55:55 GMT" - }, "series" : [ { - "colorByPoint" : 1, + "name" : "Perl Weekly Challenge - 032", "data" : [ { "name" : "Andrezgz", @@ -287,19 +274,19 @@ "name" : "Dave Jacoby" }, { - "y" : 2, + "name" : "Duane Powell", "drilldown" : "Duane Powell", - "name" : "Duane Powell" + "y" : 2 }, { - "y" : 2, "drilldown" : "E. Choroba", + "y" : 2, "name" : "E. Choroba" }, { - "name" : "Fabrizio Poggi", "y" : 2, - "drilldown" : "Fabrizio Poggi" + "drilldown" : "Fabrizio Poggi", + "name" : "Fabrizio Poggi" }, { "name" : "Javier Luque", @@ -307,19 +294,19 @@ "y" : 5 }, { - "name" : "Joelle Maslak", "drilldown" : "Joelle Maslak", - "y" : 4 + "y" : 4, + "name" : "Joelle Maslak" }, { - "name" : "Kevin Colyer", + "drilldown" : "Kevin Colyer", "y" : 2, - "drilldown" : "Kevin Colyer" + "name" : "Kevin Colyer" }, { "name" : "Lars Balker", - "y" : 2, - "drilldown" : "Lars Balker" + "drilldown" : "Lars Balker", + "y" : 2 }, { "y" : 2, @@ -332,34 +319,34 @@ "name" : "Laurent Rosenfeld" }, { + "name" : "Markus Holzer", "y" : 2, - "drilldown" : "Markus Holzer", - "name" : "Markus Holzer" + "drilldown" : "Markus Holzer" }, { - "drilldown" : "Nazareno Delucca", "y" : 2, + "drilldown" : "Nazareno Delucca", "name" : "Nazareno Delucca" }, { - "drilldown" : "Prajith P", "y" : 2, + "drilldown" : "Prajith P", "name" : "Prajith P" }, { "name" : "Rage311", - "drilldown" : "Rage311", - "y" : 2 + "y" : 2, + "drilldown" : "Rage311" }, { - "y" : 2, "drilldown" : "Roger Bell West", + "y" : 2, "name" : "Roger Bell West" }, { - "drilldown" : "Simon Proctor", + "name" : "Simon Proctor", "y" : 2, - "name" : "Simon Proctor" + "drilldown" : "Simon Proctor" }, { "name" : "Steven Wilson", @@ -377,7 +364,20 @@ "drilldown" : "Yet Ebreo" } ], - "name" : "Perl Weekly Challenge - 032" + "colorByPoint" : 1 + } + ], + "yAxis" : { + "title" : { + "text" : "Total Solutions" } - ] + }, + "subtitle" : { + "text" : "[Champions: 21] Last updated at 2019-11-02 07:05:17 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 + } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index d4c9d14aac..b8951dec14 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,20 +1,26 @@ { - "tooltip" : { - "pointFormat" : "<b>{point.y:.0f}</b>" + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + } }, "series" : [ { "dataLabels" : { + "rotation" : -90, + "format" : "{point.y:.0f}", "align" : "right", - "color" : "#FFFFFF", - "y" : 10, + "enabled" : "true", "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" }, - "enabled" : "true", - "rotation" : -90, - "format" : "{point.y:.0f}" + "y" : 10, + "color" : "#FFFFFF" }, "name" : "Contributions", "data" : [ @@ -36,28 +42,22 @@ "legend" : { "enabled" : "false" }, - "subtitle" : { - "text" : "Last updated at 2019-11-02 06:56:10 GMT" + "tooltip" : { + "pointFormat" : "<b>{point.y:.0f}</b>" }, - "chart" : { - "type" : "column" + "title" : { + "text" : "Perl Weekly Challenge Contributions - 2019" }, "yAxis" : { - "min" : 0, "title" : { "text" : null - } + }, + "min" : 0 }, - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - } + "chart" : { + "type" : "column" }, - "title" : { - "text" : "Perl Weekly Challenge Contributions - 2019" + "subtitle" : { + "text" : "Last updated at 2019-11-02 07:05:29 GMT" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 8ac5593195..4738690728 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,208 +1,19 @@ { - "legend" : { - "enabled" : "false" - }, "chart" : { "type" : "column" }, - "subtitle" : { - "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-11-02 06:56:10 GMT" - }, - "plotOptions" : { - "series" : { - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - }, - "borderWidth" : 0 - } - }, - "tooltip" : { - "headerFormat" : "<span style=\"font-size:11px\"></span>", - "followPointer" : "true", - "pointFormat" : "<span style=\"color:{point.color}\">Challenge {point.name}</span>: <b>{point.y:f}</b><br/>" - }, - "series" : [ - { - "data" : [ - { - "drilldown" : "001", - "y" : 132, - "name" : "#001" - }, - { - "name" : "#002", - "y" : 104, - "drilldown" : "002" - }, - { - "drilldown" : "003", - "name" : "#003", - "y" : 67 - }, - { - "name" : "#004", - "y" : 86, - "drilldown" : "004" - }, - { - "name" : "#005", - "y" : 66, - "drilldown" : "005" - }, - { - "drilldown" : "006", - "name" : "#006", - "y" : 48 - }, - { - "drilldown" : "007", - "y" : 56, - "name" : "#007" - }, - { - "drilldown" : "008", - "name" : "#008", - "y" : 70 - }, - { - "y" : 68, - "name" : "#009", - "drilldown" : "009" - }, - { - "drilldown" : "010", - "name" : "#010", - "y" : 60 - }, - { - "name" : "#011", - "y" : 78, - "drilldown" : "011" - }, - { - "y" : 83, - "name" : "#012", - "drilldown" : "012" - }, - { - "name" : "#013", - "y" : 76, - "drilldown" : "013" - }, - { - "drilldown" : "014", - "y" : 96, - "name" : "#014" - }, - { - "y" : 93, - "name" : "#015", - "drilldown" : "015" - }, - { - "drilldown" : "016", - "y" : 66, - "name" : "#016" - }, - { - "drilldown" : "017", - "y" : 79, - "name" : "#017" - }, - { - "y" : 76, - "name" : "#018", - "drilldown" : "018" - }, - { - "name" : "#019", - "y" : 95, - "drilldown" : "019" - }, - { - "name" : "#020", - "y" : 95, - "drilldown" : "020" - }, - { - "drilldown" : "021", - "name" : "#021", - "y" : 67 - }, - { - "y" : 63, - "name" : "#022", - "drilldown" : "022" - }, - { - "name" : "#023", - "y" : 91, - "drilldown" : "023" - }, - { - "name" : "#024", - "y" : 70, - "drilldown" : "024" - }, - { - "drilldown" : "025", - "name" : "#025", - "y" : 55 - }, - { - "drilldown" : "026", - "name" : "#026", - "y" : 70 - }, - { - "drilldown" : "027", - "y" : 58, - "name" : "#027" - }, - { - "name" : "#028", - "y" : 78, - "drilldown" : "028" - }, - { - "drilldown" : "029", - "y" : 76, - "name" : "#029" - }, - { - "name" : "#030", - "y" : 114, - "drilldown" : "030" - }, - { - "y" : 84, - "name" : "#031", - "drilldown" : "031" - }, - { - "drilldown" : "032", - "y" : 51, - "name" : "#032" - } - ], - "colorByPoint" : "true", - "name" : "Perl Weekly Challenge Languages" - } - ], - "xAxis" : { - "type" : "category" - }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2019-11-02 07:05:29 GMT" + }, "drilldown" : { "series" : [ { "name" : "001", - "id" : "001", "data" : [ [ "Perl 5", @@ -216,11 +27,11 @@ "Blog", 11 ] - ] + ], + "id" : "001" }, { "name" : "002", - "id" : "002", "data" : [ [ "Perl 5", @@ -234,11 +45,12 @@ "Blog", 9 ] - ] + ], + "id" : "002" }, { - "name" : "003", "id" : "003", + "name" : "003", "data" : [ [ "Perl 5", @@ -255,6 +67,7 @@ ] }, { + "id" : "004", "data" : [ [ "Perl 5", @@ -269,7 +82,6 @@ 9 ] ], - "id" : "004", "name" : "004" }, { @@ -309,7 +121,7 @@ "id" : "006" }, { - "id" : "007", + "name" : "007", "data" : [ [ "Perl 5", @@ -324,9 +136,11 @@ 10 ] ], - "name" : "007" + "id" : "007" }, { + "id" : "008", + "name" : "008", "data" : [ [ "Perl 5", @@ -340,9 +154,7 @@ "Blog", 12 ] - ], - "id" : "008", - "name" : "008" + ] }, { "data" : [ @@ -359,12 +171,12 @@ 13 ] ], - "id" : "009", - "name" : "009" + "name" : "009", + "id" : "009" }, { - "name" : "010", "id" : "010", + "name" : "010", "data" : [ [ "Perl 5", @@ -399,8 +211,6 @@ "name" : "011" }, { - "name" : "012", - "id" : "012", "data" : [ [ "Perl 5", @@ -414,7 +224,9 @@ "Blog", 11 ] - ] + ], + "name" : "012", + "id" : "012" }, { "id" : "013", @@ -435,6 +247,7 @@ "name" : "013" }, { + "name" : "014", "data" : [ [ "Perl 5", @@ -449,11 +262,11 @@ 15 ] ], - "id" : "014", - "name" : "014" + "id" : "014" }, { "id" : "015", + "name" : "015", "data" : [ [ "Perl 5", @@ -467,12 +280,10 @@ "Blog", 15 ] - ], - "name" : "015" + ] }, { "name" : "016", - "id" : "016", "data" : [ [ "Perl 5", @@ -486,10 +297,11 @@ "Blog", 12 ] - ] + ], + "id" : "016" }, { - "name" : "017", + "id" : "017", "data" : [ [ "Perl 5", @@ -504,10 +316,9 @@ 12 ] ], - "id" : "017" + "name" : "017" }, { - "name" : "018", "data" : [ [ "Perl 5", @@ -522,10 +333,10 @@ 14 ] ], + "name" : "018", "id" : "018" }, { - "name" : "019", "id" : "019", "data" : [ [ @@ -540,9 +351,11 @@ "Blog", 13 ] - ] + ], + "name" : "019" }, { + "id" : "020", "name" : "020", "data" : [ [ @@ -557,11 +370,10 @@ "Blog", 13 ] - ], - "id" : "020" + ] }, { - "name" : "021", + "id" : "021", "data" : [ [ "Perl 5", @@ -576,10 +388,10 @@ 10 ] ], - "id" : "021" + "name" : "021" }, { - "id" : "022", + "name" : "022", "data" : [ [ "Perl 5", @@ -594,9 +406,11 @@ 10 ] ], - "name" : "022" + "id" : "022" }, { + "id" : "023", + "name" : "023", "data" : [ [ "Perl 5", @@ -610,12 +424,9 @@ "Blog", 12 ] - ], - "id" : "023", - "name" : "023" + ] }, { - "name" : "024", "data" : [ [ "Perl 5", @@ -630,9 +441,11 @@ 11 ] ], + "name" : "024", "id" : "024" }, { + "id" : "025", "name" : "025", "data" : [ [ @@ -647,8 +460,7 @@ "Blog", 12 ] - ], - "id" : "025" + ] }, { |
