From 2bd5f0594278a6086492879b9ff1582e677ca817 Mon Sep 17 00:00:00 2001 From: Kang-min Liu Date: Wed, 7 Oct 2020 00:05:30 +0900 Subject: a naive solution of task 080.1 --- challenge-081/gugod/raku/ch-1.raku | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 challenge-081/gugod/raku/ch-1.raku diff --git a/challenge-081/gugod/raku/ch-1.raku b/challenge-081/gugod/raku/ch-1.raku new file mode 100644 index 0000000000..b84d053ef5 --- /dev/null +++ b/challenge-081/gugod/raku/ch-1.raku @@ -0,0 +1,20 @@ +#!/usr/bin/env raku + +# raku challenge-081/gugod/raku/ch-1.raku abcdabcd abcdabcdabcdabcd +# (abcd abcdabcd) + +sub MAIN (Str $A, Str $B) { + say common-base-string($A, $B); +} + +sub common-base-string (Str $A, Str $B) { + return ( base-string($A) ∩ base-string($B) ).keys; +} + +sub base-string (Str $s) { + return (1..$s.chars).grep( + -> $n { + ($s.chars mod $n == 0) + && ($s.substr(0,$n) x ($s.chars div $n)) eq $s + }).map(-> $n { $s.substr(0,$n) }); +} -- cgit From 2a7f54ab092f795e9e88613f6e48b4d794a8c99d Mon Sep 17 00:00:00 2001 From: Julio Date: Tue, 6 Oct 2020 17:44:56 +0200 Subject: Add solution for week 81 --- challenge-081/juliodcs/perl/ch-1.pl | 6 ++++++ challenge-081/juliodcs/perl/ch-2.pl | 19 +++++++++++++++++++ challenge-081/juliodcs/perl/input | 3 +++ challenge-081/juliodcs/raku/ch-1.raku | 3 +++ challenge-081/juliodcs/raku/ch-2.raku | 15 +++++++++++++++ challenge-081/juliodcs/raku/input | 3 +++ 6 files changed, 49 insertions(+) create mode 100644 challenge-081/juliodcs/perl/ch-1.pl create mode 100644 challenge-081/juliodcs/perl/ch-2.pl create mode 100644 challenge-081/juliodcs/perl/input create mode 100644 challenge-081/juliodcs/raku/ch-1.raku create mode 100644 challenge-081/juliodcs/raku/ch-2.raku create mode 100644 challenge-081/juliodcs/raku/input diff --git a/challenge-081/juliodcs/perl/ch-1.pl b/challenge-081/juliodcs/perl/ch-1.pl new file mode 100644 index 0000000000..199408a21f --- /dev/null +++ b/challenge-081/juliodcs/perl/ch-1.pl @@ -0,0 +1,6 @@ +use strict; +use warnings; +use feature 'say'; +use List::MoreUtils 'uniq'; + +say for uniq map { /^(.+)\1+$/; $1 // () } @ARGV; diff --git a/challenge-081/juliodcs/perl/ch-2.pl b/challenge-081/juliodcs/perl/ch-2.pl new file mode 100644 index 0000000000..92b58fe97b --- /dev/null +++ b/challenge-081/juliodcs/perl/ch-2.pl @@ -0,0 +1,19 @@ +use strict; +use warnings; +use File::Slurp; +use List::AllUtils qw(reduce uniq); +use Const::Fast; +use experimental 'signatures'; + +const my $rx_words => qr/ + (?-\p{L}+)* # Match dash-separated words + (?>'(?!s\b)\p{L}+)? # It may end with 「'」 + word (except for 「's」) +/ix; +const my @words => read_file('input') =~ m/$rx_words/g; +const my %scores => %{ +reduce { $a->{$b}++; $a } {}, @words }; +const my $add => sub($h, $w) { push $h->{$scores{$w}}->@*, $w; $h }; +const my %inverse => %{ +reduce { $add->($a, $b) } {}, keys %scores }; + +printf "$_ %s\n\n", join q( ), sort @{$inverse{$_}} for sort keys %inverse; diff --git a/challenge-081/juliodcs/perl/input b/challenge-081/juliodcs/perl/input new file mode 100644 index 0000000000..7c77fa54a9 --- /dev/null +++ b/challenge-081/juliodcs/perl/input @@ -0,0 +1,3 @@ +West Side Story + +The award-winning adaptation of the classic romantic tragedy "Romeo and Juliet". The feuding families become two warring New York City gangs, the white Jets led by Riff and the Latino Sharks, led by Bernardo. Their hatred escalates to a point where neither can coexist with any form of understanding. But when Riff's best friend (and former Jet) Tony and Bernardo's younger sister Maria meet at a dance, no one can do anything to stop their love. Maria and Tony begin meeting in secret, planning to run away. Then the Sharks and Jets plan a rumble under the highway--whoever wins gains control of the streets. Maria sends Tony to stop it, hoping it can end the violence. It goes terribly wrong, and before the lovers know what's happened, tragedy strikes and doesn't stop until the climactic and heartbreaking ending. \ No newline at end of file diff --git a/challenge-081/juliodcs/raku/ch-1.raku b/challenge-081/juliodcs/raku/ch-1.raku new file mode 100644 index 0000000000..6ee984714b --- /dev/null +++ b/challenge-081/juliodcs/raku/ch-1.raku @@ -0,0 +1,3 @@ +use v6.d; + +say @*ARGS.map({ /^ (.+) $0+ $/; $0 }).grep(so *).map(~*).unique; diff --git a/challenge-081/juliodcs/raku/ch-2.raku b/challenge-081/juliodcs/raku/ch-2.raku new file mode 100644 index 0000000000..c7e103f4ee --- /dev/null +++ b/challenge-081/juliodcs/raku/ch-2.raku @@ -0,0 +1,15 @@ +use v6.d; + +my $regex := rx/ :r # Don't backtrack + 「'」> # Don't match if preceded by word + 「'」 + # (avoids matching 「s」 in 「word's」) + <:L>+ [「-」<:L>+]* # Match dash-separated words + [「'」><:L>+]? # It may end with 「'」 + word (except for 「's」) +/; + +my @words := ('input'.IO.slurp ~~ m:g/$regex/)>>.Str; +my %score := ({}, |@words).reduce: { %^score{$^word}++; %^score } +my $add := { %^data{$^pair.value}.push: $^pair.key; %^data } +my %data := ({}, |%score.pairs).reduce: $add; + +printf "%s %s\n\n", .key, .value.sort.join: 「 」 for sort %data.pairs; diff --git a/challenge-081/juliodcs/raku/input b/challenge-081/juliodcs/raku/input new file mode 100644 index 0000000000..7c77fa54a9 --- /dev/null +++ b/challenge-081/juliodcs/raku/input @@ -0,0 +1,3 @@ +West Side Story + +The award-winning adaptation of the classic romantic tragedy "Romeo and Juliet". The feuding families become two warring New York City gangs, the white Jets led by Riff and the Latino Sharks, led by Bernardo. Their hatred escalates to a point where neither can coexist with any form of understanding. But when Riff's best friend (and former Jet) Tony and Bernardo's younger sister Maria meet at a dance, no one can do anything to stop their love. Maria and Tony begin meeting in secret, planning to run away. Then the Sharks and Jets plan a rumble under the highway--whoever wins gains control of the streets. Maria sends Tony to stop it, hoping it can end the violence. It goes terribly wrong, and before the lovers know what's happened, tragedy strikes and doesn't stop until the climactic and heartbreaking ending. \ No newline at end of file -- cgit From bafce2336b7462f722bdbe728674273417e30fff Mon Sep 17 00:00:00 2001 From: Tyler Wardhaugh Date: Tue, 6 Oct 2020 08:56:50 -0700 Subject: Ch81: prepare files for new challenge --- challenge-081/tyler-wardhaugh/clojure/README.md | 16 ++++++---------- challenge-081/tyler-wardhaugh/clojure/deps.edn | 7 +++---- challenge-081/tyler-wardhaugh/clojure/pom.xml | 14 +++++++------- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/challenge-081/tyler-wardhaugh/clojure/README.md b/challenge-081/tyler-wardhaugh/clojure/README.md index 27344ef9cb..3a0c44fe10 100644 --- a/challenge-081/tyler-wardhaugh/clojure/README.md +++ b/challenge-081/tyler-wardhaugh/clojure/README.md @@ -1,29 +1,25 @@ -# tw.weekly.c80 +# tw.weekly.c81 -The Weekly Challenge - #080 - Tyler Wardhaugh +The Weekly Challenge - #081 - Tyler Wardhaugh ## Usage Run the project directly (shows default output from both tasks): - $ clojure -m tw.weekly.c80.core + $ clojure -M -m tw.weekly.c81.core Run the project's tests (which are samples from the task descriptions): - $ clojure -A:test:runner + $ clojure -M:test:runner Run Task #1 with input - $ clojure -m tw.weekly.c80.t1 A1 A2 A3 [...] - -Benchmark both methods defined in Task #1: - - $ clojure -m tw.weekly.c80.t1-bench + $ clojure -M -m tw.weekly.c81.t1 A B Run Task #2 with input: - $ clojure -m tw.weekly.c80.t2 A1 A2 A3 [...] + $ clojure -M -m tw.weekly.c81.t2 INPUT-FILE ## Project Template diff --git a/challenge-081/tyler-wardhaugh/clojure/deps.edn b/challenge-081/tyler-wardhaugh/clojure/deps.edn index c572dcdfc7..d74986e08e 100644 --- a/challenge-081/tyler-wardhaugh/clojure/deps.edn +++ b/challenge-081/tyler-wardhaugh/clojure/deps.edn @@ -1,6 +1,5 @@ {:paths ["src" "resources"] - :deps {org.clojure/clojure {:mvn/version "1.10.1"} - criterium/criterium {:mvn/version "0.4.6"}} + :deps {org.clojure/clojure {:mvn/version "1.10.1"}} :aliases {:test {:extra-paths ["test"] :extra-deps {org.clojure/test.check {:mvn/version "1.0.0"}}} @@ -11,5 +10,5 @@ :main-opts ["-m" "cognitect.test-runner" "-d" "test"]} :uberjar {:extra-deps {seancorfield/depstar {:mvn/version "1.0.94"}} - :main-opts ["-m" "hf.depstar.uberjar" "tw.weekly.c80.jar" - "-C" "-m" "tw.weekly.c80"]}}} + :main-opts ["-m" "hf.depstar.uberjar" "tw.weekly.c81.jar" + "-C" "-m" "tw.weekly.c81"]}}} diff --git a/challenge-081/tyler-wardhaugh/clojure/pom.xml b/challenge-081/tyler-wardhaugh/clojure/pom.xml index 525b004ca8..20a672bad9 100644 --- a/challenge-081/tyler-wardhaugh/clojure/pom.xml +++ b/challenge-081/tyler-wardhaugh/clojure/pom.xml @@ -2,11 +2,11 @@ 4.0.0 tw.weekly - tw.weekly.c80 + tw.weekly.c81 0.1.0-SNAPSHOT - tw.weekly.c80 - Challenge #080 - https://github.com/tw.weekly/tw.weekly.c80 + tw.weekly.c81 + Challenge #081 + https://github.com/tw.weekly/tw.weekly.c81 Eclipse Public License @@ -19,9 +19,9 @@ - https://github.com/tw.weekly/tw.weekly.c80 - scm:git:git://github.com/tw.weekly/tw.weekly.c80.git - scm:git:ssh://git@github.com/tw.weekly/tw.weekly.c80.git + https://github.com/tw.weekly/tw.weekly.c81 + scm:git:git://github.com/tw.weekly/tw.weekly.c81.git + scm:git:ssh://git@github.com/tw.weekly/tw.weekly.c81.git HEAD -- cgit From 952dfbc2740e2cd1d13dd22c3367c4f9bb11acfc Mon Sep 17 00:00:00 2001 From: Tyler Wardhaugh Date: Tue, 6 Oct 2020 08:56:51 -0700 Subject: Ch81: Task 1 --- .../clojure/src/tw/weekly/c81/core.clj | 9 ++++++++ .../clojure/src/tw/weekly/c81/t1.clj | 25 ++++++++++++++++++++++ .../clojure/test/tw/weekly/c81_test.clj | 8 +++++++ 3 files changed, 42 insertions(+) create mode 100644 challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/core.clj create mode 100644 challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/t1.clj create mode 100644 challenge-081/tyler-wardhaugh/clojure/test/tw/weekly/c81_test.clj diff --git a/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/core.clj b/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/core.clj new file mode 100644 index 0000000000..a0973e56a1 --- /dev/null +++ b/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/core.clj @@ -0,0 +1,9 @@ +(ns tw.weekly.c81.core + (:require [tw.weekly.c81.t1 :as t1]) + (:gen-class)) + +(defn -main + "Run all tasks" + [& _] + (println "Task #1") + (t1/-main)) diff --git a/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/t1.clj b/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/t1.clj new file mode 100644 index 0000000000..13a382f7c6 --- /dev/null +++ b/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/t1.clj @@ -0,0 +1,25 @@ +(ns tw.weekly.c81.t1) + +;;; Task description for TASK #1 › Common Base String +; You are given 2 strings, $A and $B. +; +; Write a script to find out common base strings in $A and $B. +; +; >>> A substring of a string $S is called base string if repeated concatenation of the substring results in the string.; +;;; + +(defn common-base-string + "Find the common base string of two strings." + [s1 s2] + (let [[[_ small] [large-len large]] (->> [s1 s2] (map (juxt count identity)) sort) + is-substring (fn [s] (= large (reduce str (-> (quot large-len (count s)) (repeat s)))))] + (->> (reductions str "" small) + (drop 1) + (filter is-substring)))) + +(defn -main + "Run Task 1 with two strings A and B, defaulting to the first example given in the task description." + [& args] + (let [[A B] (or (some->> args (take 2)) ["abcdabcd" "abcdabcdabcdabcd"]) + base (common-base-string A B)] + (println base))) diff --git a/challenge-081/tyler-wardhaugh/clojure/test/tw/weekly/c81_test.clj b/challenge-081/tyler-wardhaugh/clojure/test/tw/weekly/c81_test.clj new file mode 100644 index 0000000000..a9f3889aa1 --- /dev/null +++ b/challenge-081/tyler-wardhaugh/clojure/test/tw/weekly/c81_test.clj @@ -0,0 +1,8 @@ +(ns tw.weekly.c81-test + (:require [clojure.test :refer [deftest is testing]] + [tw.weekly.c81.t1 :refer [common-base-string]])) + +(deftest task-1 + (testing "Task 1, Common Base String" + (is (= (common-base-string "abcdabcd" "abcdabcdabcdabcd") ["abcd" "abcdabcd"])) + (is (= (common-base-string "aaa" "aa") ["a"])))) -- cgit From 01d318f579ad3fdae1b796d57e83daccbe2c4198 Mon Sep 17 00:00:00 2001 From: Tyler Wardhaugh Date: Tue, 6 Oct 2020 08:56:51 -0700 Subject: Ch81: Task 2 --- challenge-081/tyler-wardhaugh/clojure/deps.edn | 3 +- challenge-081/tyler-wardhaugh/clojure/pom.xml | 5 ++++ .../tyler-wardhaugh/clojure/resources/input | 3 ++ .../clojure/src/tw/weekly/c81/core.clj | 5 +++- .../clojure/src/tw/weekly/c81/t2.clj | 32 ++++++++++++++++++++++ .../clojure/test/tw/weekly/c81_test.clj | 15 +++++++++- 6 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 challenge-081/tyler-wardhaugh/clojure/resources/input create mode 100644 challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/t2.clj diff --git a/challenge-081/tyler-wardhaugh/clojure/deps.edn b/challenge-081/tyler-wardhaugh/clojure/deps.edn index d74986e08e..8bbe260e55 100644 --- a/challenge-081/tyler-wardhaugh/clojure/deps.edn +++ b/challenge-081/tyler-wardhaugh/clojure/deps.edn @@ -1,5 +1,6 @@ {:paths ["src" "resources"] - :deps {org.clojure/clojure {:mvn/version "1.10.1"}} + :deps {org.clojure/clojure {:mvn/version "1.10.1"} + net.cgrand/xforms {:mvn/version "0.19.2"}} :aliases {:test {:extra-paths ["test"] :extra-deps {org.clojure/test.check {:mvn/version "1.0.0"}}} diff --git a/challenge-081/tyler-wardhaugh/clojure/pom.xml b/challenge-081/tyler-wardhaugh/clojure/pom.xml index 20a672bad9..a997eb3a20 100644 --- a/challenge-081/tyler-wardhaugh/clojure/pom.xml +++ b/challenge-081/tyler-wardhaugh/clojure/pom.xml @@ -30,6 +30,11 @@ clojure 1.10.1 + + net.cgrand + xforms + 0.19.2 + src diff --git a/challenge-081/tyler-wardhaugh/clojure/resources/input b/challenge-081/tyler-wardhaugh/clojure/resources/input new file mode 100644 index 0000000000..37001629ad --- /dev/null +++ b/challenge-081/tyler-wardhaugh/clojure/resources/input @@ -0,0 +1,3 @@ +West Side Story + +The award-winning adaptation of the classic romantic tragedy "Romeo and Juliet". The feuding families become two warring New York City gangs, the white Jets led by Riff and the Latino Sharks, led by Bernardo. Their hatred escalates to a point where neither can coexist with any form of understanding. But when Riff's best friend (and former Jet) Tony and Bernardo's younger sister Maria meet at a dance, no one can do anything to stop their love. Maria and Tony begin meeting in secret, planning to run away. Then the Sharks and Jets plan a rumble under the highway--whoever wins gains control of the streets. Maria sends Tony to stop it, hoping it can end the violence. It goes terribly wrong, and before the lovers know what's happened, tragedy strikes and doesn't stop until the climactic and heartbreaking ending. diff --git a/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/core.clj b/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/core.clj index a0973e56a1..146c6bd5fd 100644 --- a/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/core.clj +++ b/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/core.clj @@ -1,9 +1,12 @@ (ns tw.weekly.c81.core (:require [tw.weekly.c81.t1 :as t1]) + (:require [tw.weekly.c81.t2 :as t2]) (:gen-class)) (defn -main "Run all tasks" [& _] (println "Task #1") - (t1/-main)) + (t1/-main) + (println "Task #2") + (t2/-main)) diff --git a/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/t2.clj b/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/t2.clj new file mode 100644 index 0000000000..543a1f54b6 --- /dev/null +++ b/challenge-081/tyler-wardhaugh/clojure/src/tw/weekly/c81/t2.clj @@ -0,0 +1,32 @@ +(ns tw.weekly.c81.t2 + (:require [clojure.java.io :as io]) + (:require [clojure.pprint :refer [cl-format]]) + (:require [clojure.string :as str]) + (:require [net.cgrand.xforms :as x]) + (:require [net.cgrand.xforms.io :as xio])) + +;;; Task description for TASK #2 › Frequency Sort +; You are given file named input. +; +; Write a script to find the frequency of all the words. +; +; It should print the result as first column of each line should be the frequency of the the word followed by all the words of that frequency arranged in lexicographical order. Also sort the words in the ascending order of frequency. +;;; + +(defn word-frequency-sort + "Return a sorted word frequency map for a given text." + [source] + (let [cleaner (fn [s] (str/replace s #"(?:[.\"\(\),]|'s|--|\n)" " ")) + splitter (fn [s] (str/split s #" ")) + xf (comp (mapcat (comp splitter cleaner)) + (remove #{""}) + (x/by-key identity (x/into [])) + (x/by-key (comp count second) first (x/into (sorted-set))))] + (into (sorted-map) xf source))) + +(defn -main + "Run Task 2 with an input, defaulting to the example given in the task description." + [& args] + (let [input (or (some->> args first io/file) (io/resource "input")) + freqs (word-frequency-sort (xio/lines-in input))] + (cl-format true "~:{~a ~{~a~^ ~}~%~^~%~}" freqs))) diff --git a/challenge-081/tyler-wardhaugh/clojure/test/tw/weekly/c81_test.clj b/challenge-081/tyler-wardhaugh/clojure/test/tw/weekly/c81_test.clj index a9f3889aa1..4126410f68 100644 --- a/challenge-081/tyler-wardhaugh/clojure/test/tw/weekly/c81_test.clj +++ b/challenge-081/tyler-wardhaugh/clojure/test/tw/weekly/c81_test.clj @@ -1,8 +1,21 @@ (ns tw.weekly.c81-test (:require [clojure.test :refer [deftest is testing]] - [tw.weekly.c81.t1 :refer [common-base-string]])) + [clojure.java.io :as io] + [net.cgrand.xforms.io :as xio] + [tw.weekly.c81.t1 :refer [common-base-string]] + [tw.weekly.c81.t2 :refer [word-frequency-sort]])) (deftest task-1 (testing "Task 1, Common Base String" (is (= (common-base-string "abcdabcd" "abcdabcdabcdabcd") ["abcd" "abcdabcd"])) (is (= (common-base-string "aaa" "aa") ["a"])))) + +(deftest task-2 + (testing "Task 2, Frequency Sort" + (is (= (word-frequency-sort (xio/lines-in (io/resource "input"))) + (into (sorted-map) + {1 (into (sorted-set) #{"But" "City" "It" "Jet" "Juliet" "Latino" "New" "Romeo" "Side" "Story" "Their" "Then" "West" "York" "adaptation" "any" "anything" "at" "award-winning" "away" "become" "before" "begin" "best" "classic" "climactic" "coexist" "control" "dance" "do" "doesn't" "end" "ending" "escalates" "families" "feuding" "form" "former" "friend" "gains" "gangs" "goes" "happened" "hatred" "heartbreaking" "highway" "hoping" "in" "know" "love" "lovers" "meet" "meeting" "neither" "no" "one" "plan" "planning" "point" "romantic" "rumble" "run" "secret" "sends" "sister" "streets" "strikes" "terribly" "their" "two" "under" "understanding" "until" "violence" "warring" "what" "when" "where" "white" "whoever" "wins" "with" "wrong" "younger"}) + 2 (into (sorted-set) #{"Bernardo" "Jets" "Riff" "Sharks" "The" "by" "it" "led" "tragedy"}) + 3 (into (sorted-set) #{"Maria" "Tony" "a" "can" "of" "stop"}) + 4 #{"to"} + 9 (into (sorted-set) #{"and" "the"})}))))) -- cgit From 5a7b6deedb64b69ddad17271be3714f5d0f1334c Mon Sep 17 00:00:00 2001 From: Dave Jacoby Date: Tue, 6 Oct 2020 17:53:24 -0400 Subject: Challenge 81 --- challenge-081/dave-jacoby/perl/ch-1.pl | 50 ++++++++++++++++++++++++++++++++++ challenge-081/dave-jacoby/perl/ch-2.pl | 34 +++++++++++++++++++++++ challenge-081/dave-jacoby/perl/input | 3 ++ 3 files changed, 87 insertions(+) create mode 100755 challenge-081/dave-jacoby/perl/ch-1.pl create mode 100755 challenge-081/dave-jacoby/perl/ch-2.pl create mode 100644 challenge-081/dave-jacoby/perl/input diff --git a/challenge-081/dave-jacoby/perl/ch-1.pl b/challenge-081/dave-jacoby/perl/ch-1.pl new file mode 100755 index 0000000000..3a753f09e8 --- /dev/null +++ b/challenge-081/dave-jacoby/perl/ch-1.pl @@ -0,0 +1,50 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use feature qw{ say signatures state }; +no warnings qw{ experimental }; + +my $comment = <<'DOC'; +You are given 2 strings, $A and $B. + +Write a script to find out common base strings in $A and $B. + +A substring of a string $S is called base string if repeated concatenation of the substring results in the string. + +Example 1: +Input: + $A = "abcdabcd" + $B = "abcdabcdabcdabcd" + +Output: + ("abcd", "abcdabcd") +Example 2: +Input: + $A = "aaa" + $B = "aa" + +Output: + ("a") +DOC + +common_base( "abcdabcd", "abcdabcdabcdabcd" ); +common_base( "aaa", "aa" ); + +sub common_base ( @words ) { + my ( $aa, $bb ) = sort { length $a <=> length $b } @words; + my %output; + + for my $i ( 0 .. length $aa ) { + for my $j ( $i + 1 .. length $aa ) { + my $aaa = $aa; + my $bbb = $bb; + my $sub = substr( $aa, $i, $j ); + $aaa =~ s/$sub//gmix; + $bbb =~ s/$sub//gmix; + $output{$sub} = 1 if $aaa eq '' && $bbb eq ''; + } + } + say join ', ', keys %output; +} + diff --git a/challenge-081/dave-jacoby/perl/ch-2.pl b/challenge-081/dave-jacoby/perl/ch-2.pl new file mode 100755 index 0000000000..bca7719a96 --- /dev/null +++ b/challenge-081/dave-jacoby/perl/ch-2.pl @@ -0,0 +1,34 @@ +#!/usr/bin/env perl + +use strict; +use warnings; +use feature qw{ say signatures state }; +no warnings qw{ experimental }; + +use List::Util qw{max}; + +my $file = $ARGV[0]; +$file = defined $file && -f $file ? $file : 'input'; + +frequency_sort($file); + +sub frequency_sort( $file ) { + if ( -f $file && open my $fh, '<', $file ) { + my $corpus = join '', <$fh>; + $corpus =~ s/[,\.\(\)\"]/ /g; + $corpus =~ s/\'s/ /g; + $corpus =~ s/--/ /g; + my %words; + for my $word ( split /\s+/, $corpus ) { + $words{$word}++; + } + my $max = max values %words; + + for my $c ( 1 .. $max ) { + my @words = sort grep { $words{$_} == $c } keys %words; + say join ' ', $c, @words, "\n" if scalar @words; + } + + close $fh; + } +} diff --git a/challenge-081/dave-jacoby/perl/input b/challenge-081/dave-jacoby/perl/input new file mode 100644 index 0000000000..37001629ad --- /dev/null +++ b/challenge-081/dave-jacoby/perl/input @@ -0,0 +1,3 @@ +West Side Story + +The award-winning adaptation of the classic romantic tragedy "Romeo and Juliet". The feuding families become two warring New York City gangs, the white Jets led by Riff and the Latino Sharks, led by Bernardo. Their hatred escalates to a point where neither can coexist with any form of understanding. But when Riff's best friend (and former Jet) Tony and Bernardo's younger sister Maria meet at a dance, no one can do anything to stop their love. Maria and Tony begin meeting in secret, planning to run away. Then the Sharks and Jets plan a rumble under the highway--whoever wins gains control of the streets. Maria sends Tony to stop it, hoping it can end the violence. It goes terribly wrong, and before the lovers know what's happened, tragedy strikes and doesn't stop until the climactic and heartbreaking ending. -- cgit From 2a164009eaff581dc487a5fc955c7421a8ba7a31 Mon Sep 17 00:00:00 2001 From: Dave Jacoby Date: Tue, 6 Oct 2020 19:33:44 -0400 Subject: Better loops --- challenge-081/dave-jacoby/perl/ch-1.pl | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/challenge-081/dave-jacoby/perl/ch-1.pl b/challenge-081/dave-jacoby/perl/ch-1.pl index 3a753f09e8..44dccb6c91 100755 --- a/challenge-081/dave-jacoby/perl/ch-1.pl +++ b/challenge-081/dave-jacoby/perl/ch-1.pl @@ -36,14 +36,18 @@ sub common_base ( @words ) { my %output; for my $i ( 0 .. length $aa ) { - for my $j ( $i + 1 .. length $aa ) { + for my $j ( 1 .. ( length $aa ) - $i ) { my $aaa = $aa; my $bbb = $bb; my $sub = substr( $aa, $i, $j ); + my $pad = ' ' x $i; $aaa =~ s/$sub//gmix; $bbb =~ s/$sub//gmix; + next unless $aaa eq '' && $bbb eq ''; + # say qq{ $pad$sub\t$aaa\t$bbb}; $output{$sub} = 1 if $aaa eq '' && $bbb eq ''; } + } say join ', ', keys %output; } -- cgit From c8fbab0f69aed77a65cfb4aa784703acb2075ffe Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Wed, 7 Oct 2020 09:24:04 +0100 Subject: - Added solutions by Julio de Castro. --- stats/pwc-current.json | 119 +- stats/pwc-language-breakdown-summary.json | 58 +- stats/pwc-language-breakdown.json | 3232 ++++++++++++++--------------- stats/pwc-leaders.json | 338 +-- stats/pwc-summary-1-30.json | 38 +- stats/pwc-summary-121-150.json | 102 +- stats/pwc-summary-151-180.json | 90 +- stats/pwc-summary-181-210.json | 40 +- stats/pwc-summary-31-60.json | 38 +- stats/pwc-summary-61-90.json | 134 +- stats/pwc-summary-91-120.json | 44 +- stats/pwc-summary.json | 430 ++-- 12 files changed, 2341 insertions(+), 2322 deletions(-) diff --git a/stats/pwc-current.json b/stats/pwc-current.json index 3dcec36f22..f17a8ea62c 100644 --- a/stats/pwc-current.json +++ b/stats/pwc-current.json @@ -1,6 +1,6 @@ { - "subtitle" : { - "text" : "[Champions: 14] Last updated at 2020-10-06 13:58:10 GMT" + "chart" : { + "type" : "column" }, "drilldown" : { "series" : [ @@ -29,15 +29,29 @@ "id" : "E. Choroba" }, { - "id" : "James Smith", "data" : [ [ "Perl", 2 ] ], + "id" : "James Smith", "name" : "James Smith" }, + { + "data" : [ + [ + "Perl", + 2 + ], + [ + "Raku", + 2 + ] + ], + "id" : "Julio de Castro", + "name" : "Julio de Castro" + }, { "name" : "Lars Thegler", "id" : "Lars Thegler", @@ -49,24 +63,24 @@ ] }, { + "name" : "Mark Anderson", "data" : [ [ "Raku", 2 ] ], - "id" : "Mark Anderson", - "name" : "Mark Anderson" + "id" : "Mark Anderson" }, { + "name" : "Markus Holzer", "id" : "Markus Holzer", "data" : [ [ "Raku", 2 ] - ], - "name" : "Markus Holzer" + ] }, { "data" : [ @@ -79,26 +93,27 @@ "name" : "Myoungjin Jeon" }, { + "id" : "Niels van Dijke", "data" : [ [ "Perl", 2 ] ], - "id" : "Niels van Dijke", "name" : "Niels van Dijke" }, { + "name" : "Pete Houston", + "id" : "Pete Houston", "data" : [ [ "Perl", 2 ] - ], - "id" : "Pete Houston", - "name" : "Pete Houston" + ] }, { + "id" : "Roger Bell_West", "data" : [ [ "Perl", @@ -109,18 +124,17 @@ 2 ] ], - "id" : "Roger Bell_West", "name" : "Roger Bell_West" }, { - "name" : "Shawn Wagner", "id" : "Shawn Wagner", "data" : [ [ "Perl", 2 ] - ] + ], + "name" : "Shawn Wagner" }, { "data" : [ @@ -162,80 +176,82 @@ } ] }, + "title" : { + "text" : "Perl Weekly Challenge - 081" + }, + "subtitle" : { + "text" : "[Champions: 15] Last updated at 2020-10-07 08:23:06 GMT" + }, "legend" : { "enabled" : 0 }, - "title" : { - "text" : "Perl Weekly Challenge - 081" + "xAxis" : { + "type" : "category" }, "yAxis" : { "title" : { "text" : "Total Solutions" } }, - "plotOptions" : { - "series" : { - "borderWidth" : 0, - "dataLabels" : { - "format" : "{point.y}", - "enabled" : 1 - } - } - }, "series" : [ { "name" : "Perl Weekly Challenge - 081", "colorByPoint" : 1, "data" : [ { - "drilldown" : "Andinus", + "name" : "Andinus", "y" : 4, - "name" : "Andinus" + "drilldown" : "Andinus" }, { "name" : "E. Choroba", - "y" : 2, - "drilldown" : "E. Choroba" + "drilldown" : "E. Choroba", + "y" : 2 }, { "y" : 2, "drilldown" : "James Smith", "name" : "James Smith" }, + { + "name" : "Julio de Castro", + "drilldown" : "Julio de Castro", + "y" : 4 + }, { "name" : "Lars Thegler", "y" : 2, "drilldown" : "Lars Thegler" }, { - "y" : 2, "drilldown" : "Mark Anderson", + "y" : 2, "name" : "Mark Anderson" }, { - "y" : 2, "drilldown" : "Markus Holzer", + "y" : 2, "name" : "Markus Holzer" }, { "name" : "Myoungjin Jeon", - "drilldown" : "Myoungjin Jeon", - "y" : 2 + "y" : 2, + "drilldown" : "Myoungjin Jeon" }, { - "drilldown" : "Niels van Dijke", "y" : 2, + "drilldown" : "Niels van Dijke", "name" : "Niels van Dijke" }, { - "drilldown" : "Pete Houston", "y" : 2, + "drilldown" : "Pete Houston", "name" : "Pete Houston" }, { "name" : "Roger Bell_West", - "y" : 4, - "drilldown" : "Roger Bell_West" + "drilldown" : "Roger Bell_West", + "y" : 4 }, { "drilldown" : "Shawn Wagner", @@ -243,32 +259,35 @@ "name" : "Shawn Wagner" }, { - "drilldown" : "Simon Green", + "name" : "Simon Green", "y" : 3, - "name" : "Simon Green" + "drilldown" : "Simon Green" }, { - "y" : 2, + "name" : "Simon Proctor", "drilldown" : "Simon Proctor", - "name" : "Simon Proctor" + "y" : 2 }, { - "name" : "Ulrich Rieke", "y" : 2, - "drilldown" : "Ulrich Rieke" + "drilldown" : "Ulrich Rieke", + "name" : "Ulrich Rieke" } ] } ], - "xAxis" : { - "type" : "category" - }, - "chart" : { - "type" : "column" - }, "tooltip" : { - "followPointer" : 1, "headerFormat" : "{series.name}
", + "followPointer" : 1, "pointFormat" : "{point.name}: {point.y:f}
" + }, + "plotOptions" : { + "series" : { + "borderWidth" : 0, + "dataLabels" : { + "format" : "{point.y}", + "enabled" : 1 + } + } } } diff --git a/stats/pwc-language-breakdown-summary.json b/stats/pwc-language-breakdown-summary.json index b91597a731..79e7568bfb 100644 --- a/stats/pwc-language-breakdown-summary.json +++ b/stats/pwc-language-breakdown-summary.json @@ -1,30 +1,18 @@ { - "xAxis" : { - "type" : "category", - "labels" : { - "style" : { - "fontFamily" : "Verdana, sans-serif", - "fontSize" : "13px" - } - } - }, - "chart" : { - "type" : "column" - }, "series" : [ { "name" : "Contributions", "dataLabels" : { - "style" : { - "fontSize" : "13px", - "fontFamily" : "Verdana, sans-serif" - }, - "format" : "{point.y:.0f}", + "y" : 10, "color" : "#FFFFFF", "align" : "right", - "y" : 10, + "format" : "{point.y:.0f}", "enabled" : "true", - "rotation" : -90 + "rotation" : -90, + "style" : { + "fontFamily" : "Verdana, sans-serif", + "fontSize" : "13px" + } }, "data" : [ [ @@ -33,11 +21,11 @@ ], [ "Perl", - 3480 + 3482 ], [ "Raku", - 2231 + 2233 ] ] } @@ -45,19 +33,31 @@ "tooltip" : { "pointFormat" : "{point.y:.0f}" }, + "yAxis" : { + "min" : 0, + "title" : { + "text" : null + } + }, + "xAxis" : { + "type" : "category", + "labels" : { + "style" : { + "fontSize" : "13px", + "fontFamily" : "Verdana, sans-serif" + } + } + }, "subtitle" : { - "text" : "Last updated at 2020-10-06 13:58:10 GMT" + "text" : "Last updated at 2020-10-07 08:23:06 GMT" }, - "legend" : { - "enabled" : "false" + "chart" : { + "type" : "column" }, "title" : { "text" : "Perl Weekly Challenge Contributions [2019 - 2020]" }, - "yAxis" : { - "title" : { - "text" : null - }, - "min" : 0 + "legend" : { + "enabled" : "false" } } diff --git a/stats/pwc-language-breakdown.json b/stats/pwc-language-breakdown.json index b1e8e8ec8e..f4240b48f6 100644 --- a/stats/pwc-language-breakdown.json +++ b/stats/pwc-language-breakdown.json @@ -1,1500 +1,10 @@ { - "drilldown" : { - "series" : [ - { - "name" : "001", - "id" : "001", - "data" : [ - [ - "Perl", - 88 - ], - [ - "Raku", - 45 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "name" : "002", - "id" : "002", - "data" : [ - [ - "Perl", - 69 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "name" : "003", - "data" : [ - [ - "Perl", - 34 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 9 - ] - ], - "id" : "003" - }, - { - "name" : "004", - "id" : "004", - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 10 - ] - ] - }, - { - "name" : "005", - "id" : "005", - "data" : [ - [ - "Perl", - 36 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 29 - ], - [ - "Raku", - 16 - ], - [ - "Blog", - 7 - ] - ], - "id" : "006", - "name" : "006" - }, - { - "id" : "007", - "data" : [ - [ - "Perl", - 28 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 10 - ] - ], - "name" : "007" - }, - { - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 20 - ], - [ - "Blog", - 12 - ] - ], - "id" : "008", - "name" : "008" - }, - { - "name" : "009", - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 13 - ] - ], - "id" : "009" - }, - { - "name" : "010", - "data" : [ - [ - "Perl", - 32 - ], - [ - "Raku", - 17 - ], - [ - "Blog", - 11 - ] - ], - "id" : "010" - }, - { - "id" : "011", - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 10 - ] - ], - "name" : "011" - }, - { - "name" : "012", - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 11 - ] - ], - "id" : "012" - }, - { - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 23 - ], - [ - "Blog", - 13 - ] - ], - "id" : "013", - "name" : "013" - }, - { - "data" : [ - [ - "Perl", - 52 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 15 - ] - ], - "id" : "014", - "name" : "014" - }, - { - "name" : "015", - "id" : "015", - "data" : [ - [ - "Perl", - 52 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "name" : "016", - "id" : "016", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "name" : "017", - "id" : "017", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "id" : "018", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 14 - ] - ], - "name" : "018" - }, - { - "name" : "019", - "data" : [ - [ - "Perl", - 52 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 13 - ] - ], - "id" : "019" - }, - { - "name" : "020", - "id" : "020", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 35 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "id" : "021", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 10 - ] - ], - "name" : "021" - }, - { - "data" : [ - [ - "Perl", - 32 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 10 - ] - ], - "id" : "022", - "name" : "022" - }, - { - "name" : "023", - "id" : "023", - "data" : [ - [ - "Perl", - 49 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "name" : "024", - "id" : "024", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 26 - ], - [ - "Raku", - 17 - ], - [ - "Blog", - 12 - ] - ], - "id" : "025", - "name" : "025" - }, - { - "id" : "026", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 10 - ] - ], - "name" : "026" - }, - { - "id" : "027", - "data" : [ - [ - "Perl", - 29 - ], - [ - "Raku", - 20 - ], - [ - "Blog", - 9 - ] - ], - "name" : "027" - }, - { - "name" : "028", - "id" : "028", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 40 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 12 - ] - ], - "id" : "029", - "name" : "029" - }, - { - "id" : "030", - "data" : [ - [ - "Perl", - 74 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 10 - ] - ], - "name" : "030" - }, - { - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 9 - ] - ], - "id" : "031", - "name" : "031" - }, - { - "id" : "032", - "data" : [ - [ - "Perl", - 57 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 10 - ] - ], - "name" : "032" - }, - { - "data" : [ - [ - "Perl", - 62 - ], - [ - "Raku", - 36 - ], - [ - "Blog", - 10 - ] - ], - "id" : "033", - "name" : "033" - }, - { - "id" : "034", - "data" : [ - [ - "Perl", - 30 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 11 - ] - ], - "name" : "034" - }, - { - "name" : "035", - "id" : "035", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 20 - ], - [ - "Blog", - 9 - ] - ] - }, - { - "name" : "036", - "id" : "036", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 20 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "037", - "data" : [ - [ - "Perl", - 34 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 9 - ] - ], - "name" : "037" - }, - { - "id" : "038", - "data" : [ - [ - "Perl", - 31 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 12 - ] - ], - "name" : "038" - }, - { - "name" : "039", - "id" : "039", - "data" : [ - [ - "Perl", - 29 - ], - [ - "Raku", - 19 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 10 - ] - ], - "id" : "040", - "name" : "040" - }, - { - "id" : "041", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 9 - ] - ], - "name" : "041" - }, - { - "id" : "042", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 11 - ] - ], - "name" : "042" - }, - { - "name" : "043", - "id" : "043", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 22 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "044", - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 11 - ] - ], - "name" : "044" - }, - { - "name" : "045", - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 33 - ], - [ - "Blog", - 11 - ] - ], - "id" : "045" - }, - { - "data" : [ - [ - "Perl", - 44 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 10 - ] - ], - "id" : "046", - "name" : "046" - }, - { - "name" : "047", - "data" : [ - [ - "Perl", - 43 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 10 - ] - ], - "id" : "047" - }, - { - "data" : [ - [ - "Perl", - 59 - ], - [ - "Raku", - 35 - ], - [ - "Blog", - 12 - ] - ], - "id" : "048", - "name" : "048" - }, - { - "name" : "049", - "id" : "049", - "data" : [ - [ - "Perl", - 48 - ], - [ - "Raku", - 25 - ], - [ - "Blog", - 12 - ] - ] - }, - { - "id" : "050", - "data" : [ - [ - "Perl", - 50 - ], - [ - "Raku", - 34 - ], - [ - "Blog", - 12 - ] - ], - "name" : "050" - }, - { - "name" : "051", - "id" : "051", - "data" : [ - [ - "Perl", - 46 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 11 - ] - ] - }, - { - "id" : "052", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 14 - ] - ], - "name" : "052" - }, - { - "name" : "053", - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 39 - ], - [ - "Blog", - 15 - ] - ], - "id" : "053" - }, - { - "data" : [ - [ - "Perl", - 45 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 18 - ] - ], - "id" : "054", - "name" : "054" - }, - { - "name" : "055", - "id" : "055", - "data" : [ - [ - "Perl", - 41 - ], - [ - "Raku", - 31 - ], - [ - "Blog", - 14 - ] - ] - }, - { - "id" : "056", - "data" : [ - [ - "Perl", - 47 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 16 - ] - ], - "name" : "056" - }, - { - "name" : "057", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 15 - ] - ], - "id" : "057" - }, - { - "name" : "058", - "id" : "058", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 21 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "name" : "059", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 16 - ] - ], - "id" : "059" - }, - { - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 16 - ] - ], - "id" : "060", - "name" : "060" - }, - { - "name" : "061", - "data" : [ - [ - "Perl", - 37 - ], - [ - "Raku", - 28 - ], - [ - "Blog", - 14 - ] - ], - "id" : "061" - }, - { - "data" : [ - [ - "Perl", - 26 - ], - [ - "Raku", - 17 - ], - [ - "Blog", - 11 - ] - ], - "id" : "062", - "name" : "062" - }, - { - "name" : "063", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 13 - ] - ], - "id" : "063" - }, - { - "name" : "064", - "id" : "064", - "data" : [ - [ - "Perl", - 35 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 16 - ] - ] - }, - { - "name" : "065", - "id" : "065", - "data" : [ - [ - "Perl", - 32 - ], - [ - "Raku", - 24 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "id" : "066", - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 29 - ], - [ - "Blog", - 14 - ] - ], - "name" : "066" - }, - { - "name" : "067", - "id" : "067", - "data" : [ - [ - "Perl", - 38 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 18 - ] - ] - }, - { - "name" : "068", - "id" : "068", - "data" : [ - [ - "Perl", - 33 - ], - [ - "Raku", - 27 - ], - [ - "Blog", - 13 - ] - ] - }, - { - "data" : [ - [ - "Perl", - 39 - ], - [ - "Raku", - 26 - ], - [ - "Blog", - 16 - ] - ], - "id" : "069", - "name" : "069" - }, - { - "name" : "070", - "data" : [ - [ - "Perl", - 42 - ], - [ - "Raku", - 32 - ], - [ - "Blog", - 17 - ] - ], - "id" : "070" - }, - { - "name" : "071", - "id" : "071", - "data" : [ - [ - "Perl", - 31 - ], - [ - "Raku", - 30 - ], - [ - "Blog", - 15 - ] - ] - }, - { - "id" : "072", - "data" : [ - [ - "Perl", - 51 - ], - [ - "Raku", - 40 - ], - [ - "Blog", - 19 - ] - ], - "name" : "072" - }, - { - "data" : [ - [ - "Perl", - 53 - ], - [ - "Raku", - 38 - ], - [ - "Blog", - 17 - ] - ], - "id" : "073", - "name" : "073" - }, - { - "id" : "074", - "data" : [ - [ - "Perl", - 56 - ], - [ - "Raku", - 37 - ], - [ - "Blog", - 20 - ] - ], - "name" : "074" - }, - { - "name" : "075", - "data" : [ - [ - "Perl", - 55 - ], - [ -