From 89e1fcca7a58b3a5eeffa0d8405dd30fbfa4fbd5 Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Sun, 30 Jul 2023 07:04:28 +0100 Subject: - Added solutions by Ulrich Rieke. - Added solutions by Flavio Poletti. - Added solutions by Matthias Muth. - Added solutions by Solathian. - Added solutions by Simon Green. --- challenge-227/ulrich-rieke/cpp/ch-2.cpp | 177 ++++ challenge-227/ulrich-rieke/haskell/ch-1.hs | 18 + challenge-227/ulrich-rieke/haskell/ch-2.hs | 82 ++ challenge-227/ulrich-rieke/perl/ch-1.pl | 26 + challenge-227/ulrich-rieke/perl/ch-2.pl | 161 ++++ challenge-227/ulrich-rieke/raku/ch-1.raku | 12 + challenge-227/ulrich-rieke/rust/ch-1.rs | 20 + challenge-227/ulrich-rieke/rust/ch-2.rs | 162 ++++ stats/pwc-challenge-226.json | 551 +++++------ stats/pwc-current.json | 412 +++++---- stats/pwc-language-breakdown-summary.json | 74 +- stats/pwc-language-breakdown.json | 1368 ++++++++++++++-------------- stats/pwc-leaders.json | 746 +++++++-------- stats/pwc-summary-1-30.json | 40 +- stats/pwc-summary-121-150.json | 52 +- stats/pwc-summary-151-180.json | 104 +-- stats/pwc-summary-181-210.json | 38 +- stats/pwc-summary-211-240.json | 38 +- stats/pwc-summary-241-270.json | 60 +- stats/pwc-summary-271-300.json | 100 +- stats/pwc-summary-31-60.json | 40 +- stats/pwc-summary-61-90.json | 40 +- stats/pwc-summary-91-120.json | 44 +- stats/pwc-summary.json | 644 ++++++------- 24 files changed, 2881 insertions(+), 2128 deletions(-) create mode 100755 challenge-227/ulrich-rieke/cpp/ch-2.cpp create mode 100755 challenge-227/ulrich-rieke/haskell/ch-1.hs create mode 100755 challenge-227/ulrich-rieke/haskell/ch-2.hs create mode 100755 challenge-227/ulrich-rieke/perl/ch-1.pl create mode 100755 challenge-227/ulrich-rieke/perl/ch-2.pl create mode 100755 challenge-227/ulrich-rieke/raku/ch-1.raku create mode 100755 challenge-227/ulrich-rieke/rust/ch-1.rs create mode 100755 challenge-227/ulrich-rieke/rust/ch-2.rs diff --git a/challenge-227/ulrich-rieke/cpp/ch-2.cpp b/challenge-227/ulrich-rieke/cpp/ch-2.cpp new file mode 100755 index 0000000000..4e153bef8a --- /dev/null +++ b/challenge-227/ulrich-rieke/cpp/ch-2.cpp @@ -0,0 +1,177 @@ +#include +#include +#include +#include +#include +#include + +std::vector split( const std::string & startline , + const std::string & sep ) { + std::vector separated ; + std::string::size_type start { 0 } ; + std::string::size_type pos ; + do { + pos = startline.find_first_of( sep , start ) ; + separated.push_back( startline.substr(start , pos - start )) ; + start = pos + 1 ; + } while ( pos != std::string::npos ) ; + return separated ; +} + +int roman_to_arabic( const std::string & numberstring , const + std::map & numbertable ) { + int len = numberstring.length( ) ; + auto found = numbertable.find( numberstring ) ; + if ( found != numbertable.end( ) ) { + return found->second ; + } + else { + int start = 0 ; + int sum = 0 ; + int howmany = 1 ; + while ( start + howmany < len + 1 ) { + std::string partString ( numberstring.substr( start , howmany ) ) ; + if ( numbertable.find( partString ) != numbertable.end( ) ) + howmany++ ; + else { + howmany-- ; + partString = numberstring.substr( start , howmany ) ; + found = numbertable.find( partString ) ; + sum += found->second ; + start = start + howmany ; + howmany = 1 ; + } + } + howmany-- ; + std::string partString( numberstring.substr( start , howmany ) ) ; + found = numbertable.find( partString ) ; + sum += found->second ; + return sum ; + } +} + +std::string arabToRoman( int number , const std::map & + arabRomanAssos ) { + int num = 0 ; + std::string romanNumber ; + while ( number != 0 ) { + if ( number > 1000 ) { + num = number / 1000 * 1000 ; + } + if ( number < 1000 && number >= 100 ) { + num = number / 100 * 100 ; + } + if ( number < 100 && number >= 10 ) { + num = number / 10 * 10 ; + } + if ( number < 10 ) { + num = number ; + } + std::string associated ; + auto found = arabRomanAssos.find( num ) ; + romanNumber += found->second ; + number -= num ; + } + return romanNumber ; +} + +int main( ) { + std::map romanToIntMap ; + romanToIntMap.insert( {{"M" , 1000 } , + {"MM" , 2000 } , + {"MMM" , 3000 } , + {"C" , 100 } , + {"CC" , 200 } , + {"CCC" , 300 } , + {"CD" , 400 } , + {"D" , 500 } , + {"DC" , 600 } , + {"DCC" , 700 } , + {"DCCC" , 800 } , + {"CM" , 900 } , + {"X" , 10 } , + {"XX" , 20 } , + {"XXX" , 30 } , + {"XL" , 40 } , + {"L" , 50 } , + {"LX" , 60 } , + {"LXX" , 70 } , + {"LXXX" , 80 } , + {"XC" , 90 } , + {"I" , 1 } , + {"II" , 2 } , + {"III" , 3 } , + {"IV" , 4 } , + {"V" , 5 } , + {"VI" , 6 } , + {"VII" , 7 } , + {"VIII" , 8 } , + {"IX" , 9 } } ) ; + std::map intToRomanMap ; + for ( auto & p : romanToIntMap ) { + intToRomanMap.insert( std::make_pair( p.second , p.first ) ) ; + } + std::cout << "Enter a 2-term string in Roman numerals!\n" ; + std::string line ; + std::getline( std::cin , line ) ; + std::vector allTerms ( split( line , " " ) ) ; + std::string firstRoman ( allTerms[ 0 ] ) ; + std::string secondRoman( allTerms[ 2 ] ) ; + std::string oper ( allTerms[ 1 ] ) ; + std::string result ; + int firstTerm = roman_to_arabic( firstRoman, romanToIntMap ) ; + int secondTerm = roman_to_arabic( secondRoman , romanToIntMap ) ; + if ( oper == "+" ) { + int sum = firstTerm + secondTerm ; + if ( sum > 3999 ) { + result = "non potest" ; + } + else { + result = arabToRoman( sum , intToRomanMap ) ; + } + } + if ( oper == "-" ) { + int difference = firstTerm - secondTerm ; + if ( difference < 0 ) { + result = "non potest" ; + } + if ( difference == 0 ) { + result = "nulla" ; + } + if ( difference > 0 ) { + result = arabToRoman( difference , intToRomanMap ) ; + } + } + if ( oper == "*" ) { + int product = firstTerm * secondTerm ; + if ( product > 3999 ) { + result = "non potest" ; + } + else { + result = arabToRoman( product , intToRomanMap ) ; + } + } + if ( oper == "/" ) { + int quotient = firstTerm / secondTerm ; + if ( secondTerm * quotient != firstTerm ) { + result = "non potest" ; + } + else { + result = arabToRoman( quotient , intToRomanMap ) ; + } + } + if ( oper == "**" ) { + int potence = static_cast( std::pow( static_cast( firstTerm ), + static_cast( secondTerm ) )) ; + if ( potence > 3999 ) { + result = "non potest" ; + } + else { + result = arabToRoman( potence , intToRomanMap ) ; + } + } + std::cout << line << " = " << result << std::endl ; + return 0 ; +} + + diff --git a/challenge-227/ulrich-rieke/haskell/ch-1.hs b/challenge-227/ulrich-rieke/haskell/ch-1.hs new file mode 100755 index 0000000000..52ff31e1fa --- /dev/null +++ b/challenge-227/ulrich-rieke/haskell/ch-1.hs @@ -0,0 +1,18 @@ +module Challenge227 + where +import Data.Time.Calendar + +solution :: Integer -> Int +solution year = length $ filter ( (== Friday ) . dayOfWeek ) allDays + where + allDays :: [Day] + allDays = map (\i -> fromGregorian year i 13 ) [1..12] + + +main :: IO ( ) +main = do + putStrLn "Enter a year, preferably between 1853 and 9999" + year <- getLine + let theYear = (read year :: Integer) + fridays = solution theYear + putStrLn ("There are " ++ show fridays ++ " Friday 13th in year " ++ year) diff --git a/challenge-227/ulrich-rieke/haskell/ch-2.hs b/challenge-227/ulrich-rieke/haskell/ch-2.hs new file mode 100755 index 0000000000..ead1e02d0b --- /dev/null +++ b/challenge-227/ulrich-rieke/haskell/ch-2.hs @@ -0,0 +1,82 @@ +module Challenge227_2 + where +import Data.Maybe( isJust , fromJust) +import Data.List ( sortOn ) +import Data.List.Split( splitOn ) +import Data.Char ( digitToInt ) + +romanToArabMap :: [(String , Int)] +romanToArabMap = [("M" , 1000) , ("MM" , 2000) , ("MMM" , 3000) , ("C" , 100 ) , + ("CC" , 200) , ("CCC" , 300 ) , ( "CD" , 400 ) , ( "D" , 500 ), + ("DC" , 600 ) , ("DCC" , 700 ) , ("DCCC" , 800 ) , ("CM" , + 900 ) , ("X" , 10 ) , ("XX" , 20 ) , ("XXX" , 30 ) , + ("XL" , 40 ) , ( "L" , 50 ) , ("LX" , 60 ) , ("LXX" , 70 ) , + ("LXXX" , 80 ) , ("XC" , 90 ) , ("I" , 1 ) , ("II" , 2 ) , + ("III" , 3 ) , ( "IV" , 4 ) , ("V" , 5 ) , ("VI" , 6 ) , + ("VII" , 7 ) , ("VIII" , 8 ) , ("IX" , 9 ) ] + +arabToRomanMap :: [(Int , String)] +arabToRomanMap = map (\p -> (snd p , fst p ) ) romanToArabMap + +--the following function finds the largest start string that can be found in +--romanToArabMap +findLargestRomanStarter :: String -> String +findLargestRomanStarter str = last $ sortOn length $ filter (\substr -> + isJust $ lookup substr romanToArabMap) $ map (\n -> take n str ) + [1..length str ] + +--find all substrings that can be found in the mapping of Roman numerals to +--Arab ones +findAllSubstrings :: String -> [String] +findAllSubstrings str = snd $ until ( null . fst ) step (str , [] ) + where + step :: (String , [String]) -> (String , [String] ) + step (aWord , aList ) = ( drop ( length theHead ) aWord , aList ++ + [theHead] ) + where + theHead :: String + theHead = findLargestRomanStarter aWord + +arabToRoman :: Int -> String +arabToRoman n = foldl1 ( ++ ) $ map (\i -> fromJust $ lookup i + arabToRomanMap ) $ filter ( /= 0 ) $ zipWith ( * ) + padded [1000 , 100 , 10 , 1] + where + padded :: [Int] + padded = map digitToInt (replicate ( 4 - ( length $ show n ) ) '0' + ++ show n ) + +romanToArab :: String -> Int +romanToArab numeral = sum $ map (\str -> fromJust $ lookup str + romanToArabMap ) $ findAllSubstrings numeral + +evaluate :: String -> String -> String -> String +evaluate firstNumeral operator secondNumeral + |operator == "+" = if sum > 3999 then "non potest" + else arabToRoman sum + |operator == "-" = if difference < 0 then "non potest" + else if difference == 0 then "nulla" + else arabToRoman difference + |operator == "/" = if quotient * secondOp /= firstOp + then "non potest" + else arabToRoman quotient + |operator == "**" = if potence > 3999 then "non potest" + else arabToRoman potence + |operator == "*" = if product > 3999 then "non potest" + else arabToRoman product + where + firstOp = romanToArab firstNumeral + secondOp = romanToArab secondNumeral + sum = firstOp + secondOp + difference = firstOp - secondOp + product = firstOp * secondOp + potence = firstOp ^ secondOp + quotient = firstOp `div` secondOp + +main :: IO ( ) +main = do + putStrLn "Enter a term with 2 Roman numerals!" + myTerm <- getLine + let [firstTerm , operator , secondTerm] = splitOn " " myTerm + result = evaluate firstTerm operator secondTerm + putStrLn $ myTerm ++ " = " ++ result diff --git a/challenge-227/ulrich-rieke/perl/ch-1.pl b/challenge-227/ulrich-rieke/perl/ch-1.pl new file mode 100755 index 0000000000..8660f674ec --- /dev/null +++ b/challenge-227/ulrich-rieke/perl/ch-1.pl @@ -0,0 +1,26 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; +use DateTime ; + +say "Please enter a year from 1853 to 9999!" ; +my $year = ; +chomp $year ; +my $sum = 0 ; +for my $m (1..12) { + my $dt = DateTime->new( + year => $year , + month => $m , + day => 13 , + hour => 0 , + minute => 0 , + second => 0 , + nanosecond => 0 , + time_zone => 'Asia/Taipei' , + ) ; + if ( $dt->day_of_week == 5 ) { + $sum++ ; + } +} +say "The number of Friday 13th in $year is $sum!" ; diff --git a/challenge-227/ulrich-rieke/perl/ch-2.pl b/challenge-227/ulrich-rieke/perl/ch-2.pl new file mode 100755 index 0000000000..47f476ab9f --- /dev/null +++ b/challenge-227/ulrich-rieke/perl/ch-2.pl @@ -0,0 +1,161 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; +use POSIX ; + +sub romanToArab { + my $number = shift ; + my $associations = shift ;#reference to the table with all associations of + #Roman to Arab numbers + if ( exists( $associations->{$number} ) ) { + return $associations->{$number} ; + } + else { +#go letter by letter to the right of the Roman number until the substring +#is no longer found in the association table. There, go one step back and add +#the association found to the sum of Roman numbers. Repeat that same procedure +#at the end of the string + my $sum = 0 ; + my $len = length $number ; + my $start = 0 ; + my $howmany = 1 ; #number of digits I take at the given start position + my $sub ; + while ( $start + $howmany < $len + 1 ) { + $sub = substr( $number , $start , $howmany ) ; + if ( exists( $associations->{$sub} ) ) { + $howmany++ ; #go further to the right until there is nof fit in the tab. + } + else { + $howmany-- ; + $sub = substr( $number , $start , $howmany ) ; + $sum += $associations->{$sub} ; + $start = $start + $howmany ; + $howmany = 1 ; + } + } + $howmany-- ; + $sub = substr( $number , $start , $howmany ) ; + $sum += $associations->{$sub} ; + return $sum ; + } +} + +sub arabToRoman { + my $number = shift ; + my $arabRomanAssos = shift ; + my $num ; + my $romanNum = "" ; + while ( $number != 0 ) { + if ( $number > 1000 ) { + $num = int( $number / 1000 ) * 1000 ; #convert , for example , +#3498 to 3000 to better be able to look it up in the table + } + if ( ($number < 1000) && ($number >= 100) ) { + $num = int( $number / 100 ) * 100 ; + } + if ( ($number < 100 ) && ( $number >= 10 ) ) { + $num = int( $number / 10 ) * 10 ; + } + if ( $number < 10 ) { + $num = $number ; + } + my $asso = $arabRomanAssos->{$num} ; + $romanNum .= $asso ; + $number -= $num ; + } + return $romanNum ; +} + +my %roman_To_Arab = ( + "M" => 1000 , + "MM" => 2000 , + "MMM" => 3000 , + "C" => 100 , + "CC" => 200 , + "CCC" => 300 , + "CD" => 400 , + "D" => 500 , + "DC" => 600 , + "DCC" => 700 , + "DCCC" => 800 , + "CM" => 900 , + "X" => 10 , + "XX" => 20 , + "XXX" => 30 , + "XL" => 40 , + "L" => 50 , + "LX" => 60 , + "LXX" => 70 , + "LXXX" => 80 , + "XC" => 90 , + "I" => 1 , + "II" => 2 , + "III" => 3 , + "IV" => 4 , + "V" => 5 , + "VI" => 6 , + "VII" => 7 , + "VIII" => 8 , + "IX" => 9 +) ; +my %arab_To_Roman ; +while ( my ( $key , $value ) = each( %roman_To_Arab ) ) { + $arab_To_Roman{ $value } = $key ; +} +say "Enter a 2 - term string in Roman numerals!" ; +my $line = ; +chomp $line ; +my $result ; +my ( $firstExpr , $operator , $secondExpr ) = split( /\s/ , $line ) ; +my $firstTerm = romanToArab( $firstExpr, \%roman_To_Arab ) ; +my $secondTerm = romanToArab( $secondExpr, \%roman_To_Arab ) ; +if ( $operator eq "+" ) { + my $sum = $firstTerm + $secondTerm ; + if ( $sum > 3999 ) { + $result = "non potest" ; + } + else { + $result = arabToRoman( $sum , \%arab_To_Roman ) ; + } +} +if ( $operator eq "-" ) { + my $difference = $firstTerm - $secondTerm ; + if ( $difference < 0 ) { + $result = "non potest" ; + } + if ( $difference == 0 ) { + $result = "nulla" ; + } + if ( $difference > 0 ) { + $result = arabToRoman( $difference , \%arab_To_Roman ) ; + } +} +if ( $operator eq "*" ) { + my $product = $firstTerm * $secondTerm ; + if ( $product > 3999 ) { + $result = "non potest" ; + } + else { + $result = arabToRoman( $product , \%arab_To_Roman ) ; + } +} +if ( $operator eq "/" ) { + my $fraction = $firstTerm / $secondTerm ; + if ( floor( $fraction ) != $fraction ) { + $result = "non potest" ; + } + else { + $result = arabToRoman( $fraction , \%arab_To_Roman ) ; + } +} +if ( $operator eq "**" ) { + my $potence = $firstTerm ** $secondTerm ; + if ( $potence > 3999 ) { + $result = "non potest" ; + } + else { + $result = arabToRoman( $potence , \%arab_To_Roman ) ; + } +} +say ( $line . " = " . $result ) ; diff --git a/challenge-227/ulrich-rieke/raku/ch-1.raku b/challenge-227/ulrich-rieke/raku/ch-1.raku new file mode 100755 index 0000000000..ee2151de2a --- /dev/null +++ b/challenge-227/ulrich-rieke/raku/ch-1.raku @@ -0,0 +1,12 @@ +use v6 ; + +say "Enter a year, best between 1853 and 9999!" ; +my $year = $*IN.get ; +my $sum = 0 ; +for (1..12) -> $month { + my $d = Date.new( $year , $month , 13 ) ; + if ( $d.day-of-week == 5 ) { + $sum++ ; + } +} +say "There are $sum Friday 13th in $year!" ; diff --git a/challenge-227/ulrich-rieke/rust/ch-1.rs b/challenge-227/ulrich-rieke/rust/ch-1.rs new file mode 100755 index 0000000000..cd5ecb9693 --- /dev/null +++ b/challenge-227/ulrich-rieke/rust/ch-1.rs @@ -0,0 +1,20 @@ +use std::io ; +use chrono::{NaiveDate , Datelike , Weekday} ; + +fn main() { + println!("Enter a year!"); + let mut inline : String = String::new( ) ; + io::stdin( ).read_line( &mut inline ).unwrap( ) ; + let entered_line : &str = &*inline ; + let year : i32 = entered_line.trim( ).parse::().unwrap( ) ; + let months : Vec = vec![1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , + 11 , 12] ; + let mut sum : usize = 0 ; + for m in months { + if NaiveDate::from_ymd_opt( year , m , 13 ).unwrap( ).weekday( ) + == Weekday::Fri { + sum += 1 ; + } + } + println!("There are {} Friday 13th in {} !" , sum , year ) ; +} diff --git a/challenge-227/ulrich-rieke/rust/ch-2.rs b/challenge-227/ulrich-rieke/rust/ch-2.rs new file mode 100755 index 0000000000..5aaa413822 --- /dev/null +++ b/challenge-227/ulrich-rieke/rust/ch-2.rs @@ -0,0 +1,162 @@ +use std::io ; +use substring::Substring ; +use std::collections::HashMap ; + +fn roman_to_arabic( numberstring : &str , numbertable : &HashMap<&str , + u32> ) -> u32 { + let len : usize = numberstring.len( ) ; + if let Some( n ) = numbertable.get( &numberstring ) { + return *n ; + } + else { + let mut start : usize = 0 ; + let mut end : usize = start + 1 ; + let mut sum : u32 = 0 ; + while end < len + 1 { + let mut substr : &str = numberstring.substring( start , end ) ; + if numbertable.get( &substr ).is_some( ) { + end += 1 ; + } + else { + end -= 1 ; + substr = numberstring.substring( start , end ) ; + sum += numbertable.get( &substr ).unwrap( ) ; + start = end ; + end = start + 1 ; + } + } + end -= 1 ; + let substr : &str = numberstring.substring( start , end ) ; + sum += numbertable.get( &substr ).unwrap( ) ; + sum + } +} + +fn arabic_to_roman( mut number : u32 , inversed_table : &HashMap ) + -> String { + let mut roman : String = String::new( ) ; + while number != 0 { + let num : u32 = match number { + size if size >= 1000 => size / 1000 * 1000 , + size if size < 1000 && (size >= 100) => size / 100 * 100 , + size if size < 100 && size >= 10 => size / 10 * 10 , + size if size < 10 => size , + _ => 5 , + } ; + let value : &str = inversed_table.get( &num).unwrap( ) ; + let valstr : String = value.to_string( ) ; + roman.push_str( &valstr ) ; + number -= num ; + } + roman +} + +fn main() { + let mut roman_arab : HashMap<&str , u32> = HashMap::new( ) ; + roman_arab.insert( "M" , 1000 ) ; + roman_arab.insert( "MM" , 2000 ) ; + roman_arab.insert( "MMM" , 3000 ) ; + roman_arab.insert( "C" , 100 ) ; + roman_arab.insert( "CC" , 200 ) ; + roman_arab.insert( "CCC" , 300 ) ; + roman_arab.insert( "CD" , 400 ) ; + roman_arab.insert( "D" , 500 ) ; + roman_arab.insert( "DC" , 600 ) ; + roman_arab.insert( "DCC" , 700 ) ; + roman_arab.insert( "DCCC" , 800 ) ; + roman_arab.insert( "CM" , 900 ) ; + roman_arab.insert( "X" , 10 ) ; + roman_arab.insert( "XX" , 20 ) ; + roman_arab.insert( "XXX" , 30 ) ; + roman_arab.insert( "XL" , 40 ) ; + roman_arab.insert( "L" , 50 ) ; + roman_arab.insert( "LX" , 60 ) ; + roman_arab.insert( "LXX" , 70 ) ; + roman_arab.insert( "LXXX" , 80 ) ; + roman_arab.insert( "XC" , 90 ) ; + roman_arab.insert( "I" , 1 ) ; + roman_arab.insert( "II" , 2 ) ; + roman_arab.insert( "III" , 3 ) ; + roman_arab.insert( "IV" , 4 ) ; + roman_arab.insert( "V" , 5 ) ; + roman_arab.insert( "VI" , 6 ) ; + roman_arab.insert( "VII" , 7 ) ; + roman_arab.insert( "VIII" , 8 ) ; + roman_arab.insert( "IX" , 9 ) ; + let mut arab_roman : HashMap = HashMap::new( ) ; + for ( key , val ) in roman_arab.iter( ) { + arab_roman.insert( *val , key.clone( ) ) ; + } + println!("Please enter a 2 -term string in Roman numerals!" ) ; + let mut inline : String = String::new( ) ; + io::stdin( ).read_line( &mut inline ).unwrap( ) ; + let entered_line : &str = &*inline ; + let terms : Vec<&str> = entered_line.split_whitespace( ).map( | s | + s.trim( ) ).collect( ) ; + let first_roman : &str = terms[ 0 ] ; + let second_roman : &str = terms[ 2 ] ; + let operator : &str = terms[ 1 ] ; + let first_term : u32 = roman_to_arabic( &first_roman , &roman_arab ) ; + let second_term : u32 = roman_to_arabic( &second_roman , &roman_arab ) ; + let result : String = match operator { + "+" => { + let res : u32 = first_term + second_term ; + if res > 3999 { + "non potest".to_string( ) + } + else { + arabic_to_roman( res , &arab_roman ) + } + } , + "-" => { + if let Some( v ) = first_term.checked_sub( second_term ) { + if v == 0 { + "nulla".to_string( ) + } + else { + arabic_to_roman( v , &arab_roman ) + } + } + else { + "non potest".to_string( ) + } + } , + "*" => { + let res : u32 = first_term * second_term ; + if res > 3999 { + "non potest".to_string( ) + } + else { + arabic_to_roman( res , &arab_roman ) + } + } , + "/" => { + if let Some( v ) = first_term.checked_div( second_term ) { + if v * second_term == first_term { + arabic_to_roman( v , &arab_roman ) + } + else { + "non potest".to_string( ) + } + } + else { + "non potest".to_string( ) + } + } , + "**" => { + let res : u32 = first_term.pow( second_term ) ; + if res > 3999 { + "non potest".to_string( ) + } + else { + arabic_to_roman( res , &arab_roman ) + } + } , + _ => "".to_string( ) , + } ; + let changed = entered_line.trim( ) ; + let mut inline = changed.to_string( ) ; + inline.push_str( &" = ".to_string( ) ) ; + inline.push_str( &result ) ; + println!("{}" , inline ) ; +} diff --git a/stats/pwc-challenge-226.json b/stats/pwc-challenge-226.json index a72d032522..296a6ad15c 100644 --- a/stats/pwc-challenge-226.json +++ b/stats/pwc-challenge-226.json @@ -3,216 +3,23 @@ "series" : { "borderWidth" : 0, "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 + "enabled" : 1, + "format" : "{point.y}" } } }, + "xAxis" : { + "type" : "category" + }, + "chart" : { + "type" : "column" + }, "legend" : { "enabled" : 0 }, - "tooltip" : { - "pointFormat" : "{point.name}: {point.y:f}
", - "headerFormat" : "{series.name}
", - "followPointer" : 1 - }, - "series" : [ - { - "colorByPoint" : 1, - "name" : "The Weekly Challenge - 226", - "data" : [ - { - "drilldown" : "Adam Russell", - "name" : "Adam Russell", - "y" : 4 - }, - { - "y" : 2, - "name" : "Adriaan Dens", - "drilldown" : "Adriaan Dens" - }, - { - "y" : 4, - "name" : "Ali Moradi", - "drilldown" : "Ali Moradi" - }, - { - "y" : 2, - "name" : "Andreas Voegele", - "drilldown" : "Andreas Voegele" - }, - { - "drilldown" : "Arne Sommer", - "name" : "Arne Sommer", - "y" : 3 - }, - { - "name" : "Athanasius", - "y" : 4, - "drilldown" : "Athanasius" - }, - { - "drilldown" : "Avery Adams", - "name" : "Avery Adams", - "y" : 1 - }, - { - "y" : 4, - "name" : "BarrOff", - "drilldown" : "BarrOff" - }, - { - "drilldown" : "Bob Lied", - "name" : "Bob Lied", - "y" : 3 - }, - { - "drilldown" : "Bruce Gray", - "name" : "Bruce Gray", - "y" : 2 - }, - { - "drilldown" : "Cheok-Yin Fung", - "y" : 2, - "name" : "Cheok-Yin Fung" - }, - { - "drilldown" : "Dave Jacoby", - "name" : "Dave Jacoby", - "y" : 3 - }, - { - "y" : 2, - "name" : "David Ferrone", - "drilldown" : "David Ferrone" - }, - { - "drilldown" : "E. Choroba", - "y" : 2, - "name" : "E. Choroba" - }, - { - "drilldown" : "Flavio Poletti", - "name" : "Flavio Poletti", - "y" : 6 - }, - { - "drilldown" : "Jaldhar H. Vyas", - "name" : "Jaldhar H. Vyas", - "y" : 5 - }, - { - "drilldown" : "Jan Krnavek", - "y" : 2, - "name" : "Jan Krnavek" - }, - { - "drilldown" : "Jorg Sommrey", - "y" : 2, - "name" : "Jorg Sommrey" - }, - { - "y" : 6, - "name" : "Laurent Rosenfeld", - "drilldown" : "Laurent Rosenfeld" - }, - { - "name" : "Lubos Kolouch", - "y" : 2, - "drilldown" : "Lubos Kolouch" - }, - { - "drilldown" : "Luca Ferrari", - "name" : "Luca Ferrari", - "y" : 8 - }, - { - "y" : 2, - "name" : "Mark Anderson", - "drilldown" : "Mark Anderson" - }, - { - "name" : "Matthew Neleigh", - "y" : 2, - "drilldown" : "Matthew Neleigh" - }, - { - "drilldown" : "Niels van Dijke", - "y" : 2, - "name" : "Niels van Dijke" - }, - { - "drilldown" : "Packy Anderson", - "name" : "Packy Anderson", - "y" : 5 - }, - { - "name" : "Peter Campbell Smith", - "y" : 3, - "drilldown" : "Peter Campbell Smith" - }, - { - "drilldown" : "PokGoPun", - "name" : "PokGoPun", - "y" : 2 - }, - { - "y" : 3, - "name" : "Robbie Hatley", - "drilldown" : "Robbie Hatley" - }, - { - "name" : "Robert DiCicco", - "y" : 4, - "drilldown" : "Robert DiCicco" - }, - { - "y" : 2, - "name" : "Robert Ransbottom", - "drilldown" : "Robert Ransbottom" - }, - { - "y" : 5, - "name" : "Roger Bell_West", - "drilldown" : "Roger Bell_West" - }, - { - "y" : 3, - "name" : "Simon Green", - "drilldown" : "Simon Green" - }, - { - "drilldown" : "Steven Wilson", - "name" : "Steven Wilson", - "y" : 2 - }, - { - "drilldown" : "Thomas Kohler", - "name" : "Thomas Kohler", - "y" : 4 - }, - { - "drilldown" : "Ulrich Rieke", - "y" : 4, - "name" : "Ulrich Rieke" - }, - { - "drilldown" : "W. Luis Mochan", - "name" : "W. Luis Mochan", - "y" : 3 - } - ] - } - ], "title" : { "text" : "The Weekly Challenge - 226" }, - "chart" : { - "type" : "column" - }, - "subtitle" : { - "text" : "[Champions: 36] Last updated at 2023-07-28 10:14:26 GMT" - }, "drilldown" : { "series" : [ { @@ -230,14 +37,14 @@ ] }, { - "name" : "Adriaan Dens", - "id" : "Adriaan Dens", "data" : [ [ "Perl", 2 ] - ] + ], + "name" : "Adriaan Dens", + "id" : "Adriaan Dens" }, { "data" : [ @@ -250,18 +57,18 @@ 2 ] ], - "id" : "Ali Moradi", - "name" : "Ali Moradi" + "name" : "Ali Moradi", + "id" : "Ali Moradi" }, { + "id" : "Andreas Voegele", + "name" : "Andreas Voegele", "data" : [ [ "Perl", 2 ] - ], - "name" : "Andreas Voegele", - "id" : "Andreas Voegele" + ] }, { "data" : [ @@ -274,12 +81,12 @@ 1 ] ], - "name" : "Arne Sommer", - "id" : "Arne Sommer" + "id" : "Arne Sommer", + "name" : "Arne Sommer" }, { - "id" : "Athanasius", "name" : "Athanasius", + "id" : "Athanasius", "data" : [ [ "Perl", @@ -292,18 +99,16 @@ ] }, { + "id" : "Avery Adams", + "name" : "Avery Adams", "data" : [ [ "Perl", 1 ] - ], - "id" : "Avery Adams", - "name" : "Avery Adams" + ] }, { - "name" : "BarrOff", - "id" : "BarrOff", "data" : [ [ "Perl", @@ -313,7 +118,9 @@ "Raku", 2 ] - ] + ], + "name" : "BarrOff", + "id" : "BarrOff" }, { "data" : [ @@ -330,14 +137,14 @@ "id" : "Bob Lied" }, { + "name" : "Bruce Gray", + "id" : "Bruce Gray", "data" : [ [ "Raku", 2 ] - ], - "id" : "Bruce Gray", - "name" : "Bruce Gray" + ] }, { "id" : "Cheok-Yin Fung", @@ -370,18 +177,18 @@ 2 ] ], - "name" : "David Ferrone", - "id" : "David Ferrone" + "id" : "David Ferrone", + "name" : "David Ferrone" }, { - "name" : "E. Choroba", - "id" : "E. Choroba", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "E. Choroba", + "name" : "E. Choroba" }, { "data" : [ @@ -398,8 +205,8 @@ 2 ] ], - "name" : "Flavio Poletti", - "id" : "Flavio Poletti" + "id" : "Flavio Poletti", + "name" : "Flavio Poletti" }, { "data" : [ @@ -416,18 +223,18 @@ 1 ] ], - "id" : "Jaldhar H. Vyas", - "name" : "Jaldhar H. Vyas" + "name" : "Jaldhar H. Vyas", + "id" : "Jaldhar H. Vyas" }, { - "id" : "Jan Krnavek", - "name" : "Jan Krnavek", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Jan Krnavek", + "name" : "Jan Krnavek" }, { "data" : [ @@ -482,24 +289,38 @@ "id" : "Luca Ferrari" }, { - "id" : "Mark Anderson", - "name" : "Mark Anderson", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Mark Anderson", + "name" : "Mark Anderson" }, { - "id" : "Matthew Neleigh", + "data" : [ + [ + "Perl", + 2 + ] + ], "name" : "Matthew Neleigh", + "id" : "Matthew Neleigh" + }, + { "data" : [ [ "Perl", 2 + ], + [ + "Blog", + 1 ] - ] + ], + "name" : "Matthias Muth", + "id" : "Matthias Muth" }, { "data" : [ @@ -508,10 +329,12 @@ 2 ] ], - "name" : "Niels van Dijke", - "id" : "Niels van Dijke" + "id" : "Niels van Dijke", + "name" : "Niels van Dijke" }, { + "name" : "Packy Anderson", + "id" : "Packy Anderson", "data" : [ [ "Perl", @@ -525,13 +348,9 @@ "Blog", 1 ] - ], - "name" : "Packy Anderson", - "id" : "Packy Anderson" + ] }, { - "id" : "Peter Campbell Smith", - "name" : "Peter Campbell Smith", "data" : [ [ "Perl", @@ -541,17 +360,19 @@ "Blog", 1 ] - ] + ], + "name" : "Peter Campbell Smith", + "id" : "Peter Campbell Smith" }, { - "name" : "PokGoPun", - "id" : "PokGoPun", "data" : [ [ "Perl", 2 ] - ] + ], + "id" : "PokGoPun", + "name" : "PokGoPun" }, { "id" : "Robbie Hatley", @@ -588,10 +409,12 @@ 2 ] ], - "name" : "Robert Ransbottom", - "id" : "Robert Ransbottom" + "id" : "Robert Ransbottom", + "name" : "Robert Ransbottom" }, { + "id" : "Roger Bell_West", + "name" : "Roger Bell_West", "data" : [ [ "Perl", @@ -605,11 +428,11 @@ "Blog", 1 ] - ], - "id" : "Roger Bell_West", - "name" : "Roger Bell_West" + ] }, { + "name" : "Simon Green", + "id" : "Simon Green", "data" : [ [ "Perl", @@ -619,13 +442,11 @@ "Blog", 1 ] - ], - "name" : "Simon Green", - "id" : "Simon Green" + ] }, { - "name" : "Steven Wilson", "id" : "Steven Wilson", + "name" : "Steven Wilson", "data" : [ [ "Perl", @@ -634,6 +455,8 @@ ] }, { + "name" : "Thomas Kohler", + "id" : "Thomas Kohler", "data" : [ [ "Perl", @@ -643,11 +466,11 @@ "Blog", 2 ] - ], - "name" : "Thomas Kohler", - "id" : "Thomas Kohler" + ] }, { + "name" : "Ulrich Rieke", + "id" : "Ulrich Rieke", "data" : [ [ "Perl", @@ -657,9 +480,7 @@ "Raku", 2 ] - ], - "name" : "Ulrich Rieke", - "id" : "Ulrich Rieke" + ] }, { "name" : "W. Luis Mochan", @@ -682,7 +503,205 @@ "text" : "Total Solutions" } }, - "xAxis" : { - "type" : "category" + "tooltip" : { + "pointFormat" : "{point.name}: {point.y:f}
", + "followPointer" : 1, + "headerFormat" : "{series.name}
" + }, + "series" : [ + { + "data" : [ + { + "name" : "Adam Russell", + "drilldown" : "Adam Russell", + "y" : 4 + }, + { + "drilldown" : "Adriaan Dens", + "y" : 2, + "name" : "Adriaan Dens" + }, + { + "name" : "Ali Moradi", + "drilldown" : "Ali Moradi", + "y" : 4 + }, + { + "name" : "Andreas Voegele", + "drilldown" : "Andreas Voegele", + "y" : 2 + }, + { + "drilldown" : "Arne Sommer", + "y" : 3, + "name" : "Arne Sommer" + }, + { + "y" : 4, + "drilldown" : "Athanasius", + "name" : "Athanasius" + }, + { + "name" : "Avery Adams", + "drilldown" : "Avery Adams", + "y" : 1 + }, + { + "y" : 4, + "drilldown" : "BarrOff", + "name" : "BarrOff" + }, + { + "y" : 3, + "drilldown" : "Bob Lied", + "name" : "Bob Lied" + }, + { + "name" : "Bruce Gray", + "drilldown" : "Bruce Gray", + "y" : 2 + }, + { + "y" : 2, + "drilldown" : "Cheok-Yin Fung", + "name" : "Cheok-Yin Fung" + }, + { + "name" : "Dave Jacoby", + "drilldown" : "Dave Jacoby", + "y" : 3 + }, + { + "y" : 2, + "drilldown" : "David Ferrone", + "name" : "David Ferrone" + }, + { + "name" : "E. Choroba", + "y" : 2, + "drilldown" : "E. Choroba" + }, + { + "drilldown" : "Flavio Poletti", + "y" : 6, + "name" : "Flavio Poletti" + }, + { + "drilldown" : "Jaldhar H. Vyas", + "y" : 5, + "name" : "Jaldhar H. Vyas" + }, + { + "name" : "Jan Krnavek", + "drilldown" : "Jan Krnavek", + "y" : 2 + }, + { + "name" : "Jorg Sommrey", + "y" : 2, + "drilldown" : "Jorg Sommrey" + }, + { + "name" : "Laurent Rosenfeld", + "drilldown" : "Laurent Rosenfeld", + "y" : 6 + }, + { + "y" : 2, + "drilldown" : "Lubos Kolouch", + "name" : "Lubos Kolouch" + }, + { + "y" : 8, + "drilldown" : "Luca Ferrari", + "name" : "Luca Ferrari" + }, + { + "name" : "Mark Anderson", + "y" : 2, + "drilldown" : "Mark Anderson" + }, + { + "drilldown" : "Matthew Neleigh", + "y" : 2, + "name" : "Matthew Neleigh" + }, + { + "name" : "Matthias Muth", + "y" : 3, + "drilldown" : "Matthias Muth" + }, + { + "name" : "Niels van Dijke", + "drilldown" : "Niels van Dijke", + "y" : 2 + }, + { + "y" : 5, + "drilldown" : "Packy Anderson", + "name" : "Packy Anderson" + }, + { + "name" : "Peter Campbell Smith", + "y" : 3, + "drilldown" : "Peter Campbell Smith" + }, + { + "name" : "PokGoPun", + "drilldown" : "PokGoPun", + "y" : 2 + }, + { + "name" : "Robbie Hatley", + "drilldown" : "Robbie Hatley", + "y" : 3 + }, + { + "y" : 4, + "drilldown" : "Robert DiCicco", + "name" : "Robert DiCicco" + }, + { + "name" : "Robert Ransbottom", + "y" : 2, + "drilldown" : "Robert Ransbottom" + }, + { + "name" : "Roger Bell_West", + "drilldown" : "Roger Bell_West", + "y" : 5 + }, + { + "y" : 3, + "drilldown" : "Simon Green", + "name" : "Simon Green" + }, + { + "drilldown" : "Steven Wilson", + "y" : 2, + "name" : "Steven Wilson" + }, + { + "drilldown" : "Thomas Kohler", + "y" : 4, + "name" : "Thomas Kohler" + }, + { + "drilldown" : "Ulrich Rieke", + "y" : 4, + "name" : "Ulrich Rieke" + }, + { + "drilldown" : "W. Luis Mochan", + "y" : 3, + "name" : "W. Luis Mochan" + } + ], + "name" : "The Weekly Challenge - 226", + "colorByPoint" : 1 + } + ], + "subtitle" : { + "text" : "[Champions: 37] Last updated at 2023-07-30 05:55:53 GMT" } } diff --git a/stats/pwc-current.json b/stats/pwc-current.json index a53660cf69..78c92d0d42 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,4 +1,10 @@ { + "legend" : { + "enabled" : 0 + }, + "title" : { + "text" : "The Weekly Challenge - 227" + }, "plotOptions" : { "series" : { "borderWidth" : 0, @@ -8,16 +14,165 @@ } } }, + "chart" : { + "type" : "column" + }, + "series" : [ + { + "colorByPoint" : 1, + "name" : "The Weekly Challenge - 227", + "data" : [ + { + "y" : 3, + "drilldown" : "Ali Moradi", + "name" : "Ali Moradi" + }, + { + "name" : "Andreas Voegele", + "drilldown" : "Andreas Voegele", + "y" : 2 + }, + { + "y" : 4, + "name" : "Andrew Shitov", + "drilldown" : "Andrew Shitov" + }, + { + "name" : "Arne Sommer", + "drilldown" : "Arne Sommer", + "y" : 3 + }, + { + "drilldown" : "Avery Adams", + "name" : "Avery Adams", + "y" : 1 + }, + { + "name" : "David Ferrone", + "drilldown" : "David Ferrone", + "y" : 1 + }, + { + "drilldown" : "E. Choroba", + "name" : "E. Choroba", + "y" : 2 + }, + { + "name" : "Flavio Poletti", + "drilldown" : "Flavio Poletti", + "y" : 6 + }, + { + "name" : "Jorg Sommrey", + "drilldown" : "Jorg Sommrey", + "y" : 2 + }, + { + "drilldown" : "Laurent Rosenfeld", + "name" : "Laurent Rosenfeld", + "y" : 6 + }, + { + "drilldown" : "Lubos Kolouch", + "name" : "Lubos Kolouch", + "y" : 2 + }, + { + "y" : 8, + "drilldown" : "Luca Ferrari", + "name" : "Luca Ferrari" + }, + { + "drilldown" : "Mark Anderson", + "name" : "Mark Anderson", + "y" : 2 + }, + { + "y" : 5, + "drilldown" : "Packy Anderson", + "name" : "Packy Anderson" + }, + { + "name" : "Peter Campbell Smith", + "drilldown" : "Peter Campbell Smith", + "y" : 3 + }, + { + "y" : 2, + "drilldown" : "Peter Meszaros", + "name" : "Peter Meszaros" + }, + { + "name" : "Robbie Hatley", + "drilldown" : "Robbie Hatley", + "y" : 3 + }, + { + "drilldown" : "Robert DiCicco", + "name" : "Robert DiCicco", + "y" : 4 + }, + { + "y" : 2, + "name" : "Robert Ransbottom", + "drilldown" : "Robert Ransbottom" + }, + { + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West", + "y" : 4 + }, + { + "name" : "Simon Green", + "drilldown" : "Simon Green", + "y" : 3 + }, + { + "y" : 1, + "name" : "Simon Proctor", + "drilldown" : "Simon Proctor" + }, + { + "name" : "Solathian", + "drilldown" : "Solathian", + "y" : 2 + }, + { + "y" : 1, + "name" : "Steven Wilson", + "drilldown" : "Steven Wilson" + }, + { + "name" : "Thomas Kohler", + "drilldown" : "Thomas Kohler", + "y" : 4 + }, + { + "name" : "Ulrich Rieke", + "drilldown" : "Ulrich Rieke", + "y" : 3 + }, + { + "y" : 3, + "name" : "W. Luis Mochan", + "drilldown" : "W. Luis Mochan" + } + ] + } + ], "tooltip" : { - "headerFormat" : "{series.name}
", "followPointer" : 1, - "pointFormat" : "{point.name}: {point.y:f}
" + "pointFormat" : "{point.name}: {point.y:f}
", + "headerFormat" : "{series.name}
" + }, + "subtitle" : { + "text" : "[Champions: 27] Last updated at 2023-07-30 06:01:35 GMT" }, "drilldown" : { "series" : [ { - "id" : "Ali Moradi", "name" : "Ali Moradi", + "id" : "Ali Moradi", "data" : [ [ "Perl", @@ -30,26 +185,27 @@ ] }, { + "name" : "Andreas Voegele", + "id" : "Andreas Voegele", "data" : [ [ "Perl", 2 ] - ], - "name" : "Andreas Voegele", - "id" : "Andreas Voegele" + ] }, { - "id" : "Andrew Shitov", "name" : "Andrew Shitov", "data" : [ [ "Raku", 4 ] - ] + ], + "id" : "Andrew Shitov" }, { + "name" : "Arne Sommer", "data" : [ [ "Raku", @@ -60,28 +216,27 @@ 1 ] ], - "name" : "Arne Sommer", "id" : "Arne Sommer" }, { - "id" : "Avery Adams", + "name" : "Avery Adams", "data" : [ [ "Perl", 1 ] ], - "name" : "Avery Adams" + "id" : "Avery Adams" }, { "id" : "David Ferrone", - "name" : "David Ferrone", "data" : [ [ "Perl", 1 ] - ] + ], + "name" : "David Ferrone" }, { "name" : "E. Choroba", @@ -98,14 +253,32 @@ [ "Perl", 2 + ], + [ + "Raku", + 2 + ], + [ + "Blog", + 2 ] ], - "name" : "Jorg Sommrey", - "id" : "Jorg Sommrey" + "id" : "Flavio Poletti", + "name" : "Flavio Poletti" + }, + { + "id" : "Jorg Sommrey", + "data" : [ + [ + "Perl", + 2 + ] + ], + "name" : "Jorg Sommrey" }, { - "id" : "Laurent Rosenfeld", "name" : "Laurent Rosenfeld", + "id" : "Laurent Rosenfeld", "data" : [ [ "Perl", @@ -122,14 +295,14 @@ ] }, { + "name" : "Lubos Kolouch", "id" : "Lubos Kolouch", "data" : [ [ "Perl", 2 ] - ], - "name" : "Lubos Kolouch" + ] }, { "id" : "Luca Ferrari", @@ -156,6 +329,7 @@ "id" : "Mark Anderson" }, { + "id" : "Packy Anderson", "data" : [ [ "Perl", @@ -170,12 +344,10 @@ 1 ] ], - "name" : "Packy Anderson", - "id" : "Packy Anderson" + "name" : "Packy Anderson" }, { "id" : "Peter Campbell Smith", - "name" : "Peter Campbell Smith", "data" : [ [ "Perl", @@ -185,7 +357,8 @@ "Blog", 1 ] - ] + ], + "name" : "Peter Campbell Smith" }, { "data" : [ @@ -194,8 +367,8 @@ 2 ] ], - "name" : "Peter Meszaros", - "id" : "Peter Meszaros" + "id" : "Peter Meszaros", + "name" : "Peter Meszaros" }, { "id" : "Robbie Hatley", @@ -212,7 +385,6 @@ "name" : "Robbie Hatley" }, { - "id" : "Robert DiCicco", "name" : "Robert DiCicco", "data" : [ [ @@ -223,20 +395,20 @@ "Raku", 2 ] - ] + ], + "id" : "Robert DiCicco" }, { - "name" : "Robert Ransbottom", "data" : [ [ "Raku", 2 ] ], - "id" : "Robert Ransbottom" + "id" : "Robert Ransbottom", + "name" : "Robert Ransbottom" }, { - "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -247,16 +419,41 @@ 2 ] ], + "id" : "Roger Bell_West", "name" : "Roger Bell_West" }, + { + "name" : "Simon Green", + "id" : "Simon Green", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Blog", + 1 + ] + ] + }, { "id" : "Simon Proctor", - "name" : "Simon Proctor", "data" : [ [ "Raku", 1 ] + ], + "name" : "Simon Proctor" + }, + { + "name" : "Solathian", + "id" : "Solathian", + "data" : [ + [ + "Perl", + 2 + ] ] }, { @@ -270,7 +467,6 @@ "name" : "Steven Wilson" }, { - "id" : "Thomas Kohler", "name" : "Thomas Kohler", "data" : [ [ @@ -281,10 +477,26 @@ "Blog", 2 ] + ], + "id" : "Thomas Kohler" + }, + { + "name" : "Ulrich Rieke", + "id" : "Ulrich Rieke", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 1 + ] ] }, { "name" : "W. Luis Mochan", + "id" : "W. Luis Mochan", "data" : [ [ "Perl", @@ -294,8 +506,7 @@ "Blog", 1 ] - ], - "id" : "W. Luis Mochan" + ] } ] }, @@ -304,142 +515,7 @@ "text" : "Total Solutions" } }, - "subtitle" : { - "text" : "[Champions: 23] Last updated at 2023-07-29 09:00:59 GMT" - }, - "series" : [ - { - "colorByPoint" : 1, - "name" : "The Weekly Challenge - 227", - "data" : [ - { - "name" : "Ali Moradi", - "drilldown" : "Ali Moradi", - "y" : 3 - }, - { - "name" : "Andreas Voegele", - "drilldown" : "Andreas Voegele", - "y" : 2 - }, - { - "y" : 4, - "drilldown" : "Andrew Shitov", - "name" : "Andrew Shitov" - }, - { - "y" : 3, - "name" : "Arne Sommer", - "drilldown" : "Arne Sommer" - }, - { - "drilldown" : "Avery Adams", - "name" : "Avery Adams", - "y" : 1 - }, - { - "drilldown" : "David Ferrone", - "name" : "David Ferrone", - "y" : 1 - }, - { - "y" : 2, - "drilldown" : "E. Choroba", - "name" : "E. Choroba" - }, - { - "name" : "Jorg Sommrey", - "drilldown" : "Jorg Sommrey", - "y" : 2 - }, - { - "y" : 6, - "name" : "Laurent Rosenfeld", - "drilldown" : "Laurent Rosenfeld" - }, - { - "y" : 2, - "drilldown" : "Lubos Kolouch", - "name" : "Lubos Kolouch" - }, - { - "y" : 8, - "name" : "Luca Ferrari", - "drilldown" : "Luca Ferrari" - }, - { - "name" : "Mark Anderson", - "drilldown" : "Mark Anderson", - "y" : 2 - }, - { - "name" : "Packy Anderson", - "drilldown" : "Packy Anderson", - "y" : 5 - }, - { - "y" : 3, - "name" : "Peter Campbell Smith", - "drilldown" : "Peter Campbell Smith" - }, - { - "y" : 2, - "drilldown" : "Peter Meszaros", - "name" : "Peter Meszaros" - }, - { - "y" : 3, - "name" : "Robbie Hatley", - "drilldown" : "Robbie Hatley" - }, - { - "name" : "Robert DiCicco", - "drilldown" : "Robert DiCicco", - "y" : 4 - }, - { - "drilldown" : "Robert Ransbottom", - "name" : "Robert Ransbottom", - "y" : 2 - }, - { - "y" : 4, - "name" : "Roger Bell_West", - "drilldown" : "Roger Bell_West" - }, - { - "y" : 1, - "drilldown" : "Simon Proctor", - "name" : "Simon Proctor" - }, - { - "name" : "Steven Wilson", - "drilldown" : "Steven Wilson", - "y" : 1 - }, - { - "y" : 4, - "drilldown" : "Thomas Kohler", - "name" : "Thomas Kohler" - }, - { - "name" : "W. Luis Mochan", - "drilldown" : "W. Luis Mochan", - "y" : 3 - } - ] - } - ], "xAxis" : { "type" : "category" - }, - "chart" : { - "type" : "column" - }, - "legend" : { - "enabled" : 0 - }, - "title" : { - "text" : "The Weekly Challenge - 227" } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index 4bfa04ef9a..8152a11661 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,63 +1,63 @@ { "subtitle" : { - "text" : "Last updated at 2023-07-29 09:00:59 GMT" - }, - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 + "text" : "Last updated at 2023-07-30 06:01:35 GMT" }, "tooltip" : { "pointFormat" : "{point.y:.0f}" }, - "title" : { - "text" : "The Weekly Challenge Contributions [2019 - 2023]" - }, - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } - } - }, "series" : [ { + "dataLabels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + }, + "format" : "{point.y:.0f}", + "enabled" : "true", + "color" : "#FFFFFF", + "y" : 10, + "rotation" : -90, + "align" : "right" + }, "name" : "Contributions", "data" : [ [ "Blog", - 3780 + 3784 ], [ "Perl", - 11612 + 11622 ], [ "Raku", - 6683 + 6686 ] - ], - "dataLabels" : { - "y" : 10, - "color" : "#FFFFFF", - "align" : "right", - "rotation" : -90, - "enabled" : "true", - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - }, - "format" : "{point.y:.0f}" - } + ] } ], - "chart" : { - "type" : "column" + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } + } }, "legend" : { "enabled" : "false" + }, + "title" : { + "text" : "The Weekly Challenge Contributions [2019 - 2023]" + }, + "chart" : { + "type" : "column" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 7a7f23eaab..2f36f8286b 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,37 +1,44 @@ { + "subtitle" : { + "text" : "Click the columns to drilldown the language breakdown. Last updated at 2023-07-30 06:01:35 GMT" + }, + "tooltip" : { + "headerFormat" : "", + "pointFormat" : "Challenge {point.name}: {point.y:f}
", + "followPointer" : "true" + }, "series" : [ { - "name" : "The Weekly Challenge Languages", "data" : [ { - "name" : "#001", "drilldown" : "001", + "name" : "#001", "y" : 163 }, { - "y" : 129, + "drilldown" : "002", "name" : "#002", - "drilldown" : "002" + "y" : 129 }, { - "name" : "#003", + "y" : 87, "drilldown" : "003", - "y" : 87 + "name" : "#003" }, { - "y" : 103, "drilldown" : "004", - "name" : "#004" + "name" : "#004", + "y" : 103 }, { - "y" : 80, "drilldown" : "005", - "name" : "#005" + "name" : "#005", + "y" : 80 }, { - "y" : 61, "drilldown" : "006", - "name" : "#006" + "name" : "#006", + "y" : 61 }, { "drilldown" : "007", @@ -39,59 +46,59 @@ "y" : 69 }, { - "y" : 82, + "name" : "#008", "drilldown" : "008", - "name" : "#008" + "y" : 82 }, { - "y" : 80, "drilldown" : "009", - "name" : "#009" + "nam