From 159c6c3ea8cb8a319ffcc11bb6f48074c2deda9a Mon Sep 17 00:00:00 2001 From: Dave Jacoby Date: Mon, 11 Oct 2021 19:40:15 -0400 Subject: Revert "Revert "Merge branch 'master' of https://github.com/manwar/perlweeklychallenge-club"" This reverts commit 4b2a8e9bce697d25bb4bc6ad12c1d680bc1eb0c6. --- challenge-134/andinus/README | 71 +- challenge-134/andinus/README.org | 28 + challenge-134/andinus/blog-1.txt | 1 + challenge-134/andinus/raku/ch-1.raku | 3 + challenge-134/roger-bell-west/perl/ch-1.pl | 35 + challenge-134/roger-bell-west/perl/ch-2.pl | 56 + challenge-134/roger-bell-west/postscript/ch-2.ps | 96 + challenge-134/roger-bell-west/python/ch-1.py | 33 + challenge-134/roger-bell-west/raku/ch-1.p6 | 30 + challenge-134/roger-bell-west/raku/ch-2.p6 | 49 + challenge-134/roger-bell-west/ruby/ch-1.rb | 37 + challenge-134/roger-bell-west/rust/ch-1.rs | 35 + challenge-134/ulrich-rieke/cpp/ch-1.cpp | 28 + challenge-134/ulrich-rieke/cpp/ch-2.cpp | 50 + challenge-134/ulrich-rieke/haskell/ch-1.hs | 12 + challenge-134/ulrich-rieke/perl/ch-1.pl | 31 + challenge-134/ulrich-rieke/raku/ch-1.raku | 22 + challenge-134/ulrich-rieke/raku/ch-2.raku | 34 + stats/pwc-current.json | 153 +- stats/pwc-language-breakdown-summary.json | 70 +- stats/pwc-language-breakdown.json | 5356 +++++++++++----------- stats/pwc-leaders.json | 712 +-- stats/pwc-summary-1-30.json | 50 +- stats/pwc-summary-121-150.json | 40 +- stats/pwc-summary-151-180.json | 108 +- stats/pwc-summary-181-210.json | 114 +- stats/pwc-summary-211-240.json | 30 +- stats/pwc-summary-241-270.json | 42 +- stats/pwc-summary-31-60.json | 98 +- stats/pwc-summary-61-90.json | 46 +- stats/pwc-summary-91-120.json | 42 +- stats/pwc-summary.json | 54 +- 32 files changed, 4081 insertions(+), 3485 deletions(-) create mode 100644 challenge-134/andinus/README.org create mode 100644 challenge-134/andinus/blog-1.txt create mode 100644 challenge-134/andinus/raku/ch-1.raku create mode 100755 challenge-134/roger-bell-west/perl/ch-1.pl create mode 100755 challenge-134/roger-bell-west/perl/ch-2.pl create mode 100644 challenge-134/roger-bell-west/postscript/ch-2.ps create mode 100755 challenge-134/roger-bell-west/python/ch-1.py create mode 100755 challenge-134/roger-bell-west/raku/ch-1.p6 create mode 100755 challenge-134/roger-bell-west/raku/ch-2.p6 create mode 100755 challenge-134/roger-bell-west/ruby/ch-1.rb create mode 100755 challenge-134/roger-bell-west/rust/ch-1.rs create mode 100644 challenge-134/ulrich-rieke/cpp/ch-1.cpp create mode 100644 challenge-134/ulrich-rieke/cpp/ch-2.cpp create mode 100644 challenge-134/ulrich-rieke/haskell/ch-1.hs create mode 100644 challenge-134/ulrich-rieke/perl/ch-1.pl create mode 100644 challenge-134/ulrich-rieke/raku/ch-1.raku create mode 100644 challenge-134/ulrich-rieke/raku/ch-2.raku diff --git a/challenge-134/andinus/README b/challenge-134/andinus/README index 93034423ed..1d5171cfa8 100644 --- a/challenge-134/andinus/README +++ b/challenge-134/andinus/README @@ -1,81 +1,40 @@ ━━━━━━━━━━━━━━━ - CHALLENGE 133 + CHALLENGE 134 Andinus ━━━━━━━━━━━━━━━ - 2021-10-04 + 2021-10-11 -Task 1 - Integer Square Root -════════════════════════════ +Task 1 - Pandigital Numbers +═══════════════════════════ - You are given a positive integer `$N'. + Write a script to generate first 5 Pandigital Numbers in base 10. - Write a script to calculate the integer square root of the given - number. + As per the [wikipedia], it says: - Please avoid using built-in function. Find out more about it [here]. - - ┌──── - │ Input: $N = 10 - │ Output: 3 - │ - │ Input: $N = 27 - │ Output: 5 - │ - │ Input: $N = 85 - │ Output: 9 - │ - │ Input: $N = 101 - │ Output: 10 - └──── + A pandigital number is an integer that in a given base has + among its significant digits each digit used in the base + at least once. -[here] +[wikipedia] Raku ──── • Program: - Initial estimate is set to `$n +> 1', then we loop infinitely until - previous 2 estimates are equal. - - ┌──── - │ my $x = $n +> 1; - │ loop { - │ given ($x + ($n / $x)) / 2 { - │ last if $x == $_; - │ $x = $_; - │ } - │ } - │ put $x; - └──── - - -C -─ - - • Program: - - `argv' holds the input & `argc' holds the number of inputs. The input - should be a single integer so `argc' should be equal to 2. After - checking for that, we check if valid value was passed. - - Loop until previous 2 estimates are equal. + Loop from 1023456789 (first Pandigital Number) and take if it contains + every digit in base 10. ┌──── - │ double x = num >> 1; - │ for (;;) { - │ double x_next = (x + (num / x)) / 2; - │ if (x == x_next) - │ break; - │ x = x_next; - │ } - │ printf("%f\n", x); + │ put gather for 1023456789 .. ∞ { + │ .take if .comb>>.Int.Set ≡ (0 .. 9).Set; + │ }[^5] └──── diff --git a/challenge-134/andinus/README.org b/challenge-134/andinus/README.org new file mode 100644 index 0000000000..dddda91b7f --- /dev/null +++ b/challenge-134/andinus/README.org @@ -0,0 +1,28 @@ +#+title: Challenge 134 +#+date: 2021-10-11 +#+html_link_up: ../ +#+export_file_name: index +#+options: toc:nil +#+setupfile: ~/.emacs.d/org-templates/level-2.org + +* Task 1 - Pandigital Numbers + +Write a script to generate first 5 Pandigital Numbers in base 10. + +As per the [[https://en.wikipedia.org/wiki/Pandigital_number][wikipedia]], it says: + +#+begin_quote +A pandigital number is an integer that in a given base has among its +significant digits each digit used in the base at least once. +#+end_quote + +** Raku + +Loop from 1023456789 (first Pandigital Number) and take if it contains +every digit in base 10. + +#+begin_src raku +put gather for 1023456789 .. ∞ { + .take if .comb>>.Int.Set ≡ (0 .. 9).Set; +}[^5] +#+end_src diff --git a/challenge-134/andinus/blog-1.txt b/challenge-134/andinus/blog-1.txt new file mode 100644 index 0000000000..559fff7b37 --- /dev/null +++ b/challenge-134/andinus/blog-1.txt @@ -0,0 +1 @@ +https://andinus.unfla.me/pwc/challenge-134/ diff --git a/challenge-134/andinus/raku/ch-1.raku b/challenge-134/andinus/raku/ch-1.raku new file mode 100644 index 0000000000..8380756076 --- /dev/null +++ b/challenge-134/andinus/raku/ch-1.raku @@ -0,0 +1,3 @@ +put gather for 1023456789 .. ∞ { + .take if .comb>>.Int.Set ≡ (0 .. 9).Set; +}[^5] diff --git a/challenge-134/roger-bell-west/perl/ch-1.pl b/challenge-134/roger-bell-west/perl/ch-1.pl new file mode 100755 index 0000000000..c085cd1060 --- /dev/null +++ b/challenge-134/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,35 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Test::More tests => 1; + +is_deeply(pandigital(10),[1023456789, 1023456798, 1023456879, 1023456897, 1023456978, 1023456987, 1023457689, 1023457698, 1023457869, 1023457896],'example 1'); + +use Algorithm::Permute; + +sub pandigital { + my $count=shift; + my $digits=1; + my $cc=1; + while ($cc<$count) { + $digits++; + $cc*=$digits; + if ($digits > 10) { + die "too large\n"; + } + } + my @template=(reverse (1,0,2..9)); + my @o; + my @lead=reverse splice @template,$digits; + my $p=Algorithm::Permute->new(\@template); + while (my @r=$p->next) { + push @o,join('',@r); + } + @o=sort @o; + splice @o,$count; + my $l=join('',@lead); + @o=map {"$l$_"} @o; + return \@o; +} diff --git a/challenge-134/roger-bell-west/perl/ch-2.pl b/challenge-134/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..efb7c8bbe0 --- /dev/null +++ b/challenge-134/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,56 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +distinctterms(3,3); + +distinctterms(3,5); + +use List::Util qw(max sum); + +sub distinctterms { + my $m=shift; + my $n=shift; + my @r; + push @r,['x',(1..$n)]; + my %terms; + foreach my $mm (1..$m) { + my @q=($mm); + foreach my $nn (1..$n) { + my $p=$mm*$nn; + push @q,$p; + $terms{$p}=1; + } + push @r,\@q; + } + my @cw=(0,0); + foreach my $rr (@r) { + foreach my $ci (0..$#{$rr}) { + my $wi=$ci==0?0:1; + $cw[$wi]=max($cw[$wi],length($rr->[$ci])); + } + } + foreach my $ri (0..$#r) { + my @k; + if ($ri==0) { + push @k,sprintf('%'.$cw[0].'s',$r[$ri][0]); + } else { + push @k,sprintf('%'.$cw[0].'d',$r[$ri][0]); + } + push @k,'|'; + foreach my $ci (1..$#{$r[$ri]}) { + push @k,sprintf('%'.$cw[1].'d',$r[$ri][$ci]); + } + my $l=join(' ',@k); + print "$l\n"; + if ($ri==0) { + $l =~ s/[^|]/-/g; + $l =~ s/\|/+/g; + print "$l\n"; + } + } + print "\n"; + print "Distinct Terms: ".join(', ',sort {$a <=> $b} keys %terms)."\n"; + print "Count: ".(scalar keys %terms)."\n"; +} diff --git a/challenge-134/roger-bell-west/postscript/ch-2.ps b/challenge-134/roger-bell-west/postscript/ch-2.ps new file mode 100644 index 0000000000..5cd1cb56e6 --- /dev/null +++ b/challenge-134/roger-bell-west/postscript/ch-2.ps @@ -0,0 +1,96 @@ +%!PS + +/bubblesort { + mark exch aload pop counttomark /idx + exch store + { + 0 1 idx 1 sub { + pop 2 copy gt { + exch + } if idx 1 roll + } for + idx 1 roll /idx idx 1 sub store + idx 0 eq { + exit + } if + } loop +] +} store + +/strconcat % (a) (b) -> (ab) +{ exch dup length + 2 index length add string + dup dup 4 2 roll copy length + 4 -1 roll putinterval +} bind def + +/strjoin % [(a) (b) (c)] (j) -> ajbjc +{ + /j exch def + dup 0 get /out exch def + /first true def + { + first { + /first false def + } { + out j strconcat + exch strconcat + /out exch def + } ifelse + } forall + out +} def + + /apush { % [a b] c -> [a b c] + /t exch def + [ exch aload pop t ] + } def + + /multable { + /x exch def + /y exch def + /dscale 25 def + gsave 20 800 translate + /Times-Roman findfont 12 scalefont setfont + x y mul dict /results exch def + 0 0 6 sub moveto (x) show + 0 + 1 1 y { + /yy exch def + 0 yy dscale neg mul 6 sub moveto yy (...) cvs show + } for + 1 1 x { + /xx exch def + xx dscale mul 0 6 sub moveto xx (...) cvs show + 1 1 y { + /yy exch def + /res xx yy mul def + results res 1 put + xx dscale mul yy dscale neg mul 6 sub moveto res (...) cvs show + } for + } for + 0 0.5 dscale mul neg moveto + x 0.5 add dscale mul 0.5 dscale mul neg lineto + 0.5 dscale mul 0 moveto + 0.5 dscale mul y 0.5 add dscale mul neg lineto + stroke + /ra 0 array def + results { + pop + ra exch apush /ra exch def + } forall + ra bubblesort + /rb 0 array def + { + (..) cvs rb exch dup length string cvs apush /rb exch store + } forall + rb (, ) strjoin + 0 y 2 add dscale mul neg moveto + show + 0 y 3 add dscale mul neg moveto + ra length (..) cvs show + grestore + showpage + } def + 3 3 multable + 3 5 multable diff --git a/challenge-134/roger-bell-west/python/ch-1.py b/challenge-134/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..df16a2ea21 --- /dev/null +++ b/challenge-134/roger-bell-west/python/ch-1.py @@ -0,0 +1,33 @@ +#! /usr/bin/python3 + +import unittest + +from itertools import permutations + +def pandigital(count): + digits=1 + cc=1 + while cc 10: + print("too large") + return [] + template=[*range(9,1,-1),0,1] + lead=template[digits:] + lead.reverse() + l="".join(str(i) for i in lead) + template=template[0:digits] + o=[] + for p in permutations(template): + o.append("".join(str(i) for i in p)) + o.sort() + o=o[0:count] + return [int(l+i) for i in o] + +class TestIsqrt(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(pandigital(10),[1023456789, 1023456798, 1023456879, 1023456897, 1023456978, 1023456987, 1023457689, 1023457698, 1023457869, 1023457896],'example 1') + +unittest.main() diff --git a/challenge-134/roger-bell-west/raku/ch-1.p6 b/challenge-134/roger-bell-west/raku/ch-1.p6 new file mode 100755 index 0000000000..99918b31ab --- /dev/null +++ b/challenge-134/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,30 @@ +#! /usr/bin/perl6 + +use Test; + +plan 1; + +is-deeply(pandigital(10),[1023456789, 1023456798, 1023456879, 1023456897, 1023456978, 1023456987, 1023457689, 1023457698, 1023457869, 1023457896],'example 1'); + +sub pandigital($count) { + my $digits=1; + my $cc=1; + while ($cc < $count) { + $digits++; + $cc*=$digits; + if ($digits > 10) { + die "too large\n"; + } + } + my @template=reverse (1,0,2,3,4,5,6,7,8,9); + my @o; + my @lead=reverse splice @template,$digits; + for @template.permutations -> @r { + push @o,join('',@r); + } + @o=sort @o; + splice @o,$count; + my $l=join('',@lead); + @o=map {"$l$_"+0},@o; + return @o; +} diff --git a/challenge-134/roger-bell-west/raku/ch-2.p6 b/challenge-134/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..945ffd929d --- /dev/null +++ b/challenge-134/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,49 @@ +#! /usr/bin/perl6 + +distinctterms(3,3); + +distinctterms(3,5); + +sub distinctterms($m,$n) { + my @r; + push @r,[('x',1..$n).flat]; + my %terms; + for (1..$m) -> $mm { + my @q=($mm); + for (1..$n) -> $nn { + my $p=$mm*$nn; + push @q,$p; + %terms{$p}=1; + } + push @r,@q; + } + my @cw=(0,0); + for @r -> @rr { + for (0..@rr.end) -> $ci { + my $wi=$ci==0 ?? 0 !! 1; + @cw[$wi]=max(@cw[$wi],chars(@rr[$ci])); + } + } + for (0..@r.end) -> $ri { + my @k; + if ($ri==0) { + push @k,sprintf('%' ~ @cw[0] ~ 's',@r[$ri][0]); + } else { + push @k,sprintf('%' ~ @cw[0] ~ 'd',@r[$ri][0]); + } + push @k,'|'; + for (1..@r[$ri].end) -> $ci { + push @k,sprintf('%' ~ @cw[1] ~ 'd',@r[$ri][$ci]); + } + my $l=join(' ',@k); + say $l; + if ($ri==0) { + $l ~~ s:g/<-[|]>/-/; + $l ~~ s:g/\|/+/; + say $l; + } + } + say ""; + say "Distinct Terms: " ~ join(', ',sort { $^a <=> $^b },keys %terms); + say "Count: " ~ (%terms.keys.elems); +} diff --git a/challenge-134/roger-bell-west/ruby/ch-1.rb b/challenge-134/roger-bell-west/ruby/ch-1.rb new file mode 100755 index 0000000000..9cf573469d --- /dev/null +++ b/challenge-134/roger-bell-west/ruby/ch-1.rb @@ -0,0 +1,37 @@ +#! /usr/bin/ruby + +def pandigital(count) + digits=1 + cc=1 + while cc 10 then + return [] + end + end + template=(2..9).to_a + template.unshift(0) + template.unshift(1) + template.reverse! + lead=template[digits..-1].reverse + template=template[0..digits-1] + o=[] + template.permutation do |r| + o.push(r.join) + end + o.sort! + o=o[0..count-1] + l=lead.join + return o.map{|j| (l+j).to_i} +end + +require 'test/unit' + +class TestIsqrt < Test::Unit::TestCase + + def test_ex1 + assert_equal([1023456789, 1023456798, 1023456879, 1023456897, 1023456978, 1023456987, 1023457689, 1023457698, 1023457869, 1023457896],pandigital(10)) + end + +end diff --git a/challenge-134/roger-bell-west/rust/ch-1.rs b/challenge-134/roger-bell-west/rust/ch-1.rs new file mode 100755 index 0000000000..d549b846d8 --- /dev/null +++ b/challenge-134/roger-bell-west/rust/ch-1.rs @@ -0,0 +1,35 @@ +use permutator::Permutation; + +#[test] +fn test_ex1() { + assert_eq!(pandigital(10),vec![1023456789, 1023456798, 1023456879, 1023456897, 1023456978, 1023456987, 1023457689, 1023457698, 1023457869, 1023457896]); +} + +fn pandigital(count: u32) -> Vec { + let mut digits=1; + let mut cc=1; + while cc < count { + digits+=1; + cc *= digits; + if digits > 10 { + println!("too large"); + return vec![]; + } + } + let mut template=(2..=9).collect::>(); + template.reverse(); + template.push(0); + template.push(1); + let mut lead=vec![0;10-digits as usize]; + lead.clone_from_slice(&template[(digits as usize)..]); + lead.reverse(); + let l=lead.into_iter().map(|i| i.to_string()).collect::>().join(""); + template.resize(digits as usize,0); + let mut o=vec![]; + template.permutation().for_each(|p| { + o.push((&p).into_iter().map(|i| i.to_string()).collect::>().join("")); + }); + o.sort(); + o.resize(count as usize,"".to_string()); + o.into_iter().map(|i| (l.clone()+&i).parse().unwrap()).collect::>() +} diff --git a/challenge-134/ulrich-rieke/cpp/ch-1.cpp b/challenge-134/ulrich-rieke/cpp/ch-1.cpp new file mode 100644 index 0000000000..51b1f95beb --- /dev/null +++ b/challenge-134/ulrich-rieke/cpp/ch-1.cpp @@ -0,0 +1,28 @@ +#include +#include +#include +#include + +bool isPanDigital( long num ) { + std::map digitCount ; + std::string numberstring( std::to_string( num ) ) ; + for ( int i = 0 ; i < numberstring.length( ) ; i++ ) + digitCount[ numberstring.substr( i , 1 )]++ ; + return digitCount.size( ) == 10 ; +} + +int main( ) { + std::string start { "1023456789" } ; + std::vector panDigitals ; + long current = std::stol( start ) ; + panDigitals.push_back( current ) ; + while ( panDigitals.size( ) != 5 ) { + current++ ; + if ( isPanDigital( current ) ) + panDigitals.push_back( current ) ; + } + for ( auto n : panDigitals ) + std::cout << n << " " ; + std::cout << std::endl ; + return 0 ; +} diff --git a/challenge-134/ulrich-rieke/cpp/ch-2.cpp b/challenge-134/ulrich-rieke/cpp/ch-2.cpp new file mode 100644 index 0000000000..51cb0248a2 --- /dev/null +++ b/challenge-134/ulrich-rieke/cpp/ch-2.cpp @@ -0,0 +1,50 @@ +#include +#include +#include +#include +#include +#include +#include + +int main( int argc , char * argv[ ] ) { + int m = std::atoi( argv[ 1 ] ) ; + int n = std::atoi( argv[ 2 ] ) ; + int num_maxwidth = std::to_string( m * n ).length( ) + 1 ; + int firstColWidth = std::to_string( m ).length( ) + 2 ; + std::cout << 'x' ; + std::cout.width( firstColWidth - 1 ) ; + std::cout << '|' ; + for ( int i = 1 ; i < n + 1 ; i++ ) { + std::cout.width( num_maxwidth ) ; + std::cout << i ; + } + std::cout << '\n' ; + for ( int i = 1 ; i < firstColWidth ; i++ ) + std::cout << '-' ; + std::cout << '+' ; + for ( int i = 0 ; i < num_maxwidth * n ; i++ ) + std::cout << '-' ; + std::cout << '\n' ; + std::set distinctTerms ; + for ( int i = 1 ; i < m + 1 ; i++ ) { + std::cout << i ; + int w = std::to_string( i ).length( ) ; + std::cout.width( firstColWidth - w ) ; + std::cout << '|' ; + for ( int j = 1 ; j < n + 1 ; j++ ) { + std::cout.width( num_maxwidth ) ; + std::cout << i * j ; + distinctTerms.insert( i * j ) ; + } + std::cout << '\n' ; + } + std::cout << std::endl ; + std::vector terms ( distinctTerms.begin( ) , distinctTerms.end( ) ) ; + std::sort( terms.begin( ) , terms.end( ) ) ; + std::cout << "Distinct Terms: " ; + std::copy( terms.begin( ) , terms.end( ) , std::ostream_iterator( + std::cout , " " )) ; + std::cout << '\n' ; + std::cout << "Count: " << terms.size( ) << std::endl ; + return 0 ; +} diff --git a/challenge-134/ulrich-rieke/haskell/ch-1.hs b/challenge-134/ulrich-rieke/haskell/ch-1.hs new file mode 100644 index 0000000000..0fa1a20bc2 --- /dev/null +++ b/challenge-134/ulrich-rieke/haskell/ch-1.hs @@ -0,0 +1,12 @@ +module Challenge134 + where +import qualified Data.Set as S + +isPandigital :: Integer -> Bool +isPandigital s = (S.size $ S.fromList $ show s ) == 10 + +solution :: [Integer] +solution = take 5 $ filter isPandigital [start , start + 1 ..] +where + start :: Integer + start = 1023456789 diff --git a/challenge-134/ulrich-rieke/perl/ch-1.pl b/challenge-134/ulrich-rieke/perl/ch-1.pl new file mode 100644 index 0000000000..d6945c190e --- /dev/null +++ b/challenge-134/ulrich-rieke/perl/ch-1.pl @@ -0,0 +1,31 @@ +#!/usr/bin/perl ; +use strict ; +use warnings ; +use feature 'say' ; +use Math::BigInt ; + +#the smallest pandigit 10-based number must begin with "10" , the rest of +#the other digits must follow in numerical order ; + +sub isPandigital { + my $number = shift ; + my %digitCount ; + my $numstring = $number->bstr( ) ; + for my $digit ( split ( // , $numstring ) ) { + $digitCount{ $digit }++ ; + } + return ( (scalar ( keys %digitCount )) == 10 ) ; +} + +my @panDigitals ; +my $start = Math::BigInt->new( "1023456789" ) ; +my $one = Math::BigInt->new( "1" ) ; +my $current = $start->copy( ) ; +push( @panDigitals , $start ) ; +while ( (scalar @panDigitals) != 5 ) { + $current = $current->badd( $one ) ; + if ( isPandigital( $current ) ) { + push ( @panDigitals , $current ) ; + } +} +say join( ", " , map { $_->bstr( ) } @panDigitals ) ; diff --git a/challenge-134/ulrich-rieke/raku/ch-1.raku b/challenge-134/ulrich-rieke/raku/ch-1.raku new file mode 100644 index 0000000000..a22d8c2587 --- /dev/null +++ b/challenge-134/ulrich-rieke/raku/ch-1.raku @@ -0,0 +1,22 @@ +use v6 ; + +#we find the first pandigital at base 10 by concatenating 10 as the first +#2 digits with (2 .. 9 ) as the remaining digits in ascending order +#we then add figures consecutively + +sub isPandigital( Int $n is copy --> Bool ) { + my $numberstring = ~$n ; + return $numberstring.comb.Set.elems == 10 ; +} + +my @panDigitals ; +my $start = "10" ~ (2..9).join ; +@panDigitals.push( $start ) ; +my $current = +$start ; +while ( @panDigitals.elems != 5 ) { + repeat { + $current++ ; + } until ( isPandigital( $current )) ; + @panDigitals.push( $current ) ; +} +say @panDigitals.join(", ") ; diff --git a/challenge-134/ulrich-rieke/raku/ch-2.raku b/challenge-134/ulrich-rieke/raku/ch-2.raku new file mode 100644 index 0000000000..440349486b --- /dev/null +++ b/challenge-134/ulrich-rieke/raku/ch-2.raku @@ -0,0 +1,34 @@ +use v6 ; + +subset Positive of Int where * > 0 ; +sub MAIN( Positive $m is copy , Positive $n is copy ) { + say " " ; + my @currentRow ; + my $maximumWidth = ($m * $n).Str.chars + 1 ; + my $maxFirstColumnWidth = $m.Str.chars + 1 ; + @currentRow.push( sprintf( "%-*s" , $maxFirstColumnWidth , "x" ) ) ; + @currentRow.push( "|" ) ; + for (1 .. $n) -> $i { + @currentRow.push( sprintf( "%*d", $maximumWidth, $i )) ; + } + @currentRow.join.say ; + print "-" x $maxFirstColumnWidth ; + print "+" ; + say "-" x ( $maximumWidth * $n ) ; + my @allProducts ; + @currentRow = ( ) ; + for (1 .. $m) -> $i { + @currentRow.push(sprintf("%-*s" , $maxFirstColumnWidth , "$i")) ; + @currentRow.push( "|" ) ; + for (1 .. $n) -> $j { + @currentRow.push( sprintf("%*d" , $maximumWidth, $i * $j )) ; + @allProducts.push( $i * $j ) ; + } + @currentRow.join.say ; + @currentRow = ( ) ; + } + my $distinctTerms = @allProducts.Set ; + say " " ; + say "Distinct Terms: " ~ $distinctTerms.keys.sort.join(", ") ; + say "Count: {$distinctTerms.elems}" ; +} diff --git a/stats/pwc-current.json b/stats/pwc-current.json index a42e7c3c72..30bea94dae 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,57 +1,29 @@ { "plotOptions" : { "series" : { - "borderWidth" : 0, "dataLabels" : { "format" : "{point.y}", "enabled" : 1 - } - } - }, - "series" : [ - { - "data" : [ - { - "y" : 4, - "drilldown" : "Luca Ferrari", - "name" : "Luca Ferrari" - }, - { - "drilldown" : "Mark Anderson", - "y" : 2, - "name" : "Mark Anderson" - }, - { - "y" : 2, - "drilldown" : "Simon Proctor", - "name" : "Simon Proctor" - } - ], - "name" : "The Weekly Challenge - 134", - "colorByPoint" : 1 - } - ], - "legend" : { - "enabled" : 0 - }, - "chart" : { - "type" : "column" - }, - "title" : { - "text" : "The Weekly Challenge - 134" - }, - "tooltip" : { - "followPointer" : 1, - "headerFormat" : "{series.name}
", - "pointFormat" : "{point.name}: {point.y:f}
" - }, - "yAxis" : { - "title" : { - "text" : "Total Solutions" + }, + "borderWidth" : 0 } }, "drilldown" : { "series" : [ + { + "id" : "Andinus", + "name" : "Andinus", + "data" : [ + [ + "Raku", + 1 + ], + [ + "Blog", + 1 + ] + ] + }, { "id" : "Luca Ferrari", "name" : "Luca Ferrari", @@ -67,29 +39,114 @@ ] }, { - "id" : "Mark Anderson", "name" : "Mark Anderson", "data" : [ [ "Raku", 2 ] - ] + ], + "id" : "Mark Anderson" + }, + { + "name" : "Roger Bell_West", + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ], + "id" : "Roger Bell_West" }, { - "name" : "Simon Proctor", "data" : [ [ "Raku", 2 ] ], + "name" : "Simon Proctor", "id" : "Simon Proctor" + }, + { + "name" : "Ulrich Rieke", + "data" : [ + [ + "Perl", + 1 + ], + [ + "Raku", + 2 + ] + ], + "id" : "Ulrich Rieke" } ] }, + "chart" : { + "type" : "column" + }, + "tooltip" : { + "pointFormat" : "{point.name}: {point.y:f}
", + "followPointer" : 1, + "headerFormat" : "{series.name}
" + }, + "title" : { + "text" : "The Weekly Challenge - 134" + }, "subtitle" : { - "text" : "[Champions: 3] Last updated at 2021-10-11 14:37:25 GMT" + "text" : "[Champions: 6] Last updated at 2021-10-11 21:44:07 GMT" + }, + "yAxis" : { + "title" : { + "text" : "Total Solutions" + } + }, + "series" : [ + { + "name" : "The Weekly Challenge - 134", + "colorByPoint" : 1, + "data" : [ + { + "drilldown" : "Andinus", + "name" : "Andinus", + "y" : 2 + }, + { + "drilldown" : "Luca Ferrari", + "name" : "Luca Ferrari", + "y" : 4 + }, + { + "name" : "Mark Anderson", + "drilldown" : "Mark Anderson", + "y" : 2 + }, + { + "y" : 4, + "drilldown" : "Roger Bell_West", + "name" : "Roger Bell_West" + }, + { + "y" : 2, + "name" : "Simon Proctor", + "drilldown" : "Simon Proctor" + }, + { + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke", + "y" : 3 + } + ] + } + ], + "legend" : { + "enabled" : 0 }, "xAxis" : { "type" : "category" diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index e9877d1ede..01b0447297 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,63 +1,63 @@ { + "tooltip" : { + "pointFormat" : "{point.y:.0f}" + }, + "title" : { + "text" : "The Weekly Challenge Contributions [2019 - 2021]" + }, + "subtitle" : { + "text" : "Last updated at 2021-10-11 21:44:07 GMT" + }, + "chart" : { + "type" : "column" + }, "legend" : { "enabled" : "false" }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + } + }, + "yAxis" : { + "title" : { + "text" : null + }, + "min" : 0 + }, "series" : [ { "data" : [ [ "Blog", - 1929 + 1930 ], [ "Perl", - 6347 + 6350 ], [ "Raku", - 3894 + 3899 ] ], "name" : "Contributions", "dataLabels" : { - "enabled" : "true", "style" : { "fontFamily" : "Verdana, sans-serif", "fontSize" : "13px" }, - "rotation" : -90, "align" : "right", + "enabled" : "true", "color" : "#FFFFFF", - "format" : "{point.y:.0f}", - "y" : 10 + "rotation" : -90, + "y" : 10, + "format" : "{point.y:.0f}" } } - ], - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 - }, - "subtitle" : { - "text" : "Last updated at 2021-10-11 14:37:25 GMT" - }, - "xAxis" : { - "labels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - } - }, - "type" : "category" - }, - "tooltip" : { - "pointFormat" : "{point.y:.0f}" - }, - "title" : { - "text" : "The Weekly Challenge Contributions [2019 - 2021]" - }, - "chart" : { - "type" : "column" - } + ] } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index 54397e7a64..50df2776bb 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,2570 +1,121 @@ { - "tooltip" : { - "followPointer" : "true", - "headerFormat" : "", - "pointFormat" : "Challenge {point.name}: {point.y:f}
" - }, - "chart" : { - "type" : "column" - }, - "title" : { - "text" : "The Weekly Challenge Language" - }, - "drilldown" : { - "series" : [ - { - "data" : [ - [ - "Perl", - 103 - ], - [ - "Raku", - 47 - ], - [ - "Blog", - 11 - ] - ], - "name" : "001", - "id" : "001" - }, - { - "id" : "002", - "data" : [ - [ - "Perl", - 79 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 10 - ] - ], - "name" : "002" - }, - { - "id" : "003", - "name" : "003", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "id" : "004", - "name" : "004", - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "005", - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 12 - ] - ], - "name" : "005" - }, - { - "id" : "006", - "name" : "006", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 18 - ], - [ - "Blog", - 7 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 31 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 10 - ] - ], - "name" : "007", - "id" : "007" - }, - { - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 12 - ] - ], - "name" : "008", - "id" : "008" - }, - { - "id" : "009", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 13 - ] - ], - "name" : "009" - }, - { - "id" : "010", - "name" : "010", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "011", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 10 - ] - ], - "name" : "011" - }, - { - "id" : "012", - "data" : [ - [ - "Perl", - 48 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 11 - ] - ], - "name" : "012" - }, - { - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 13 - ] - ], - "name" : "013", - "id" : "013" - }, - { - "name" : "014", - "data" : [ - [ - "Perl", - 55 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 15 - ] - ], - "id" : "014" - }, - { - "name" : "015", - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 15 - ] - ], - "id" : "015" - }, - { - "id" : "016", - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 12 - ] - ], - "name" : "016" - }, - { - "name" : "017", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ], - "id" : "017" - }, - { - "name" : "018", - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 14 - ] - ], - "id" : "018" - }, - { - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 13 - ] - ], - "name" : "019", - "id" : "019" - }, - { - "data" : [ - [ - "Perl", - 51 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 13 - ] - ], - "name" : "020", - "id" : "020" - }, - { - "id" : "021", - "name" : "021", - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "022", - "name" : "022", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "023", - "data" : [ - [ - "Perl", - 53 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 12 - ] - ], - "name" : "023" - }, - { - "id" : "024", - "name" : "024", - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "025", - "name" : "025", - "data" : [ - [ - "Perl", - 28 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "id" : "026", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 10 - ] - ], - "name" : "026" - }, - { - "id" : "027", - "name" : "027", - "data" : [ - [ - "Perl", - 29 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "id" : "028", - "name" : "028", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "id" : "029", - "name" : "029", - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 74 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ], - "name" : "030", - "id" : "030" - }, - { - "name" : "031", - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ], - "id" : "031" - }, - { - "id" : "032", - "name" : "032", - "data" : [ - [ - "Perl", - 57 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "033", - "name" : "033", - "data" : [ - [ - "Perl", - 62 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "034", - "data" : [ - [ - "Perl", - 30 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 11 - ] - ], - "name" : "034" - }, - { - "id" : "035", - "name" : "035", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "id" : "036", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 11 - ] - ], - "name" : "036" - }, - { - "id" : "037", - "name" : "037", - "data" : [ - [ - "Perl", - 34 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "id" : "038", - "data" : [ - [ - "Perl", - 32 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 12 - ] - ], - "name" : "038" - }, - { - "id" : "039", - "data" : [ - [ - "Perl", - 29 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 12 - ] - ], - "name" : "039" - }, - { - "name" : "040", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 10 - ] - ], - "id" : "040" - }, - { - "name" : "041", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 9 - ] - ], - "id" : "041" - }, - { - "id" : "042", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 11 - ] - ], - "name" : "042" - }, - { - "name" : "043", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 11 - ] - ], - "id" : "043" - }, - { - "id" : "044", - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 11 - ] - ], - "name" : "044" - }, - { - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 35 - ], - [ - "Blog", - 11 - ] - ], - "name" : "045", - "id" : "045" - }, - { - "id" : "046", - "name" : "046", - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "id" : "047", - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 10 - ] - ], - "name" : "047" - }, - { - "id" : "048", - "name" : "048", - "data" : [ - [ - "Perl", - 59 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 12 - ] - ], - "name" : "049", - "id" : "049" - }, - { - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 12 - ] - ], - "name" : "050", - "id" : "050" - }, - { - "id" : "051", - "name" : "051", - "data" : [ - [ - "Perl", - 46 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "name" : "052", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 14 - ] - ], - "id" : "052" - }, - { - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 41 - ], - [ - "Blog", - 15 - ] - ], - "name" : "053", - "id" : "053" - }, - { - "name" : "054", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 40 - ], - [ - "Blog", - 18 - ] - ], - "id" : "054" - }, - { - "name" : "055", - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 14 - ] - ], - "id" : "055" - }, - { - "id" : "056", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 16 - ] - ], - "name" : "056" - }, - { - "id" : "057", - "name" : "057", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "id" : "058", - "name" : "058", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "id" : "059", - "name" : "059", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "id" : "060", - "name" : "060", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "name" : "061", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 14 - ] - ], - "id" : "061" - }, - { - "data" : [ - [ - "Perl", - 28 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 11 - ] - ], - "name" : "062", - "id" : "062" - }, - { - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 13 - ] - ], - "name" : "063", - "id" : "063" - }, - { - "id" : "064", - "name" : "064", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 32 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 15 - ] - ], - "name" : "065", - "id" : "065" - }, - { - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 14 - ] - ], - "name" : "066", - "id" : "066" - }, - { - "name" : "067", - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 18 - ] - ], - "id" : "067" - }, - { - "name" : "068", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 13 - ] - ], - "id" : "068" - }, - { - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 16 - ] - ], - "name" : "069", - "id" : "069" - }, - { - "name" : "070", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 17 - ] - ], - "id" : "070" - }, - { - "data" : [ - [ - "Perl", - 31 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 15 - ] - ], - "name" : "071", - "id" : "071" - }, - { - "id" : "072", - "data" : [ - [ - "Perl", - 51 - ], - [ - "Raku", - 42 - ], - [ - "Blog", - 19 - ] - ], - "name" : "072" - }, - { - "id" : "073", - "data" : [ - [ - "Perl", - 53 - ], - [ - "Raku", - 40 - ], - [ - "Blog", - 17 - ] - ], - "name" : "073" - }, - { - "id" : "074", - "name" : "074", - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 39 - ], - [ - "Blog", - 20 - ] - ] - }, - { - "id" : "075", - "data" : [ - [ - "Perl", - 57 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 20 - ] - ], - "name" : "075" - }, - { - "data" : [ - [ - "Perl", - 51 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 16 - ] - ], - "name" : "076", - "id" : "076" - }, - { - "id" : "077", - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 14 - ] - ], - "name" : "077" - }, - { - "name" : "078", - "data" : [ - [ - "Perl", - 68 - ], - [ - "Raku", - 41 - ], - [ - "Blog", - 18 - ] - ], - "id" : "078" - }, - { - "id" : "079", - "name" : "079", - "data" : [ - [ - "Perl", - 68 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 17 - ] - ] - }, - { - "id" : "080", - "data" : [ - [ - "Perl", - 75 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 16 - ] - ], - "name" : "080" - }, - { - "name" : "081", - "data" : [ - [ - "Perl", - 65 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 15 - ] - ], - "id" : "081" - }, - { - "id" : "082", - "name" : "082", - "data" : [ - [ - "Perl", - 62 - ], - [ - "Raku", - 35 - ], - [ - "Blog", - 17 - ] - ] - }, - { - "id" : "083", - "data" : [ - [ - "Perl", - 73 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 16 - ] - ], - "name" : "083" - }, - { - "id" : "084", - "data" : [ - [ - "Perl", - 71 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 12 - ] - ], - "name" : "084" - }, - { - "name" : "085", - "data" : [ - [ - "Perl", - 64 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 18 - ] - ], - "id" : "085" - }, - { - "name" : "086", - "data" : [ - [ - "Perl", - 58 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 15 - ] - ], - "id" : "086" - }, - { - "id" : "087", - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 14 - ] -