From 5e4bc741d5ce6a37db6a72c3845ba4caefae1b6b Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 10 May 2021 09:48:53 +0200 Subject: Test cases for week 112 --- challenge-112/abigail/t/ctest.ini | 9 +++++++++ challenge-112/abigail/t/input-1-1 | 3 +++ challenge-112/abigail/t/input-1-2 | 3 +++ challenge-112/abigail/t/input-2-1 | 2 ++ challenge-112/abigail/t/output-1-1.exp | 3 +++ challenge-112/abigail/t/output-1-2.exp | 3 +++ challenge-112/abigail/t/output-2-1.exp | 2 ++ 7 files changed, 25 insertions(+) create mode 100644 challenge-112/abigail/t/ctest.ini create mode 100644 challenge-112/abigail/t/input-1-1 create mode 100644 challenge-112/abigail/t/input-1-2 create mode 100644 challenge-112/abigail/t/input-2-1 create mode 100644 challenge-112/abigail/t/output-1-1.exp create mode 100644 challenge-112/abigail/t/output-1-2.exp create mode 100644 challenge-112/abigail/t/output-2-1.exp (limited to 'challenge-112') diff --git a/challenge-112/abigail/t/ctest.ini b/challenge-112/abigail/t/ctest.ini new file mode 100644 index 0000000000..a9e28e24b6 --- /dev/null +++ b/challenge-112/abigail/t/ctest.ini @@ -0,0 +1,9 @@ +# +# Configuration file for running tests, using ctest. +# See https://github.com/Abigail/Misc/blob/master/ctest +# + +[names] +1-1 = Given examples +1-2 = More tests +2-1 = Given examples diff --git a/challenge-112/abigail/t/input-1-1 b/challenge-112/abigail/t/input-1-1 new file mode 100644 index 0000000000..21654c1df7 --- /dev/null +++ b/challenge-112/abigail/t/input-1-1 @@ -0,0 +1,3 @@ +/a/ +/a/b//c/ +/a/b/c/../.. diff --git a/challenge-112/abigail/t/input-1-2 b/challenge-112/abigail/t/input-1-2 new file mode 100644 index 0000000000..e56eb484ba --- /dev/null +++ b/challenge-112/abigail/t/input-1-2 @@ -0,0 +1,3 @@ +/../../foo +/a/.////./b// +/a/..../b diff --git a/challenge-112/abigail/t/input-2-1 b/challenge-112/abigail/t/input-2-1 new file mode 100644 index 0000000000..b94473479c --- /dev/null +++ b/challenge-112/abigail/t/input-2-1 @@ -0,0 +1,2 @@ +3 +4 diff --git a/challenge-112/abigail/t/output-1-1.exp b/challenge-112/abigail/t/output-1-1.exp new file mode 100644 index 0000000000..088085a167 --- /dev/null +++ b/challenge-112/abigail/t/output-1-1.exp @@ -0,0 +1,3 @@ +/a +/a/b/c +/a diff --git a/challenge-112/abigail/t/output-1-2.exp b/challenge-112/abigail/t/output-1-2.exp new file mode 100644 index 0000000000..4baf181d18 --- /dev/null +++ b/challenge-112/abigail/t/output-1-2.exp @@ -0,0 +1,3 @@ +/foo +/a/b +/a/..../b diff --git a/challenge-112/abigail/t/output-2-1.exp b/challenge-112/abigail/t/output-2-1.exp new file mode 100644 index 0000000000..7ee0007bf1 --- /dev/null +++ b/challenge-112/abigail/t/output-2-1.exp @@ -0,0 +1,2 @@ +3 +5 -- cgit From ad6243d65f3989322281f49c60264a38f10b7961 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 10 May 2021 09:56:20 +0200 Subject: Perl solutions for week 112 --- challenge-112/abigail/perl/ch-1.pl | 43 ++++++++++++++++++++++++++++++++++++++ challenge-112/abigail/perl/ch-2.pl | 24 +++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 challenge-112/abigail/perl/ch-1.pl create mode 100644 challenge-112/abigail/perl/ch-2.pl (limited to 'challenge-112') diff --git a/challenge-112/abigail/perl/ch-1.pl b/challenge-112/abigail/perl/ch-1.pl new file mode 100644 index 0000000000..e1f01db484 --- /dev/null +++ b/challenge-112/abigail/perl/ch-1.pl @@ -0,0 +1,43 @@ +#!/opt/perl/bin/perl + +use 5.032; + +use strict; +use warnings; +no warnings 'syntax'; + +use experimental 'signatures'; +use experimental 'lexical_subs'; + +# +# See ../README.md +# + +# +# Run as: perl ch-1.pl < input-file +# + +while (<>) { + chomp; + + # Remove duplicate slashes + s !/\K/+!!g; + + # Add a trailing slash; this makes it easier to deal + # with the cases below. + $_ .= "/"; + + # Remove single period + s !/\.(?=/)!!g; + + # Remove double period + 1 while s !/[^/]+/\.\.(?=/)!!; + + # Remove any leading /../ + 1 while s !^/\.\./!/!; + + # Remove trailing slashes + s !/+$!!; + + say; +} diff --git a/challenge-112/abigail/perl/ch-2.pl b/challenge-112/abigail/perl/ch-2.pl new file mode 100644 index 0000000000..2d52916053 --- /dev/null +++ b/challenge-112/abigail/perl/ch-2.pl @@ -0,0 +1,24 @@ +#!/opt/perl/bin/perl + +use 5.032; + +use strict; +use warnings; +no warnings 'syntax'; + +use experimental 'signatures'; +use experimental 'lexical_subs'; + +# +# See ../README.md +# + +# +# Run as: perl ch-2.pl < input-file +# + +# +# This is just the Fibonacci numbers... +# +sub f ($n) {state $c = {0 => 1, 1 => 1}; $$c {$n} //= f ($n - 1) + f ($n - 2)} +say f ($_) for <>; -- cgit From dd5ce43b6bbc9d5b3849b071fcddc6f32d70c017 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 10 May 2021 12:35:38 +0200 Subject: README for week 112 --- challenge-112/abigail/README.md | 108 ++++++++++++---------------------------- 1 file changed, 32 insertions(+), 76 deletions(-) (limited to 'challenge-112') diff --git a/challenge-112/abigail/README.md b/challenge-112/abigail/README.md index 021fb3375e..1048c5465e 100644 --- a/challenge-112/abigail/README.md +++ b/challenge-112/abigail/README.md @@ -1,98 +1,54 @@ # Solutions by Abigail -## [Search Matrix](https://perlweeklychallenge.org/blog/perl-weekly-challenge-111/#TASK1) +## [Canonical Path](https://perlweeklychallenge.org/blog/perl-weekly-challenge-112/#TASK1) -> You are given 5x5 matrix filled with integers such that each row is -> sorted from left to right and the first integer of each row is greater -> than the last integer of the previous row. +> You are given a string path, starting with a slash `/`. > -> Write a script to find a given integer in the matrix using an -> efficient search algorithm. - -### Notes -This challenge confuses me. We're basically asked to find a number -in a sorted list. Which in languages without hashes one would solve -with binary search (yielding an O (log N) solution), and in languages -with hashes you'd use a hash (yielding an O (1) (expected) time solution). -Sure, the hash takes linear preprocessing time, but since we're asked -to write a script, we're spending linear time reading in the data -anyway. - -Perhaps the intend was a subroutine which takes a matrix and a target -number, but that was not what is being asked. The challenge explicitly -asks for *a script*, which means we have to spend a linear amount of -time reading data anyway. So, that's what you get. +> Write a script to convert the given absolute path to the simplified +> canonical path. +> +> In a Unix-style file system: +> +> * A period `.` refers to the current directory. +> * A double period `..` refers to the directory up a level. +> * Multiple consecutive slashes (`//`) are treated as a single slash `/`. +> +> The canonical path format: +> +> * The path starts with a single slash `/`. +> * Any two directories are separated by a single slash `/`. +> * The path does not end with a trailing `/`. +> * The path only contains the directories on the path from the root +> directory to the target file or directory -The only part where we use the fact we are given a matrix is for the -input: the first five lines are assumed to contain the matrix. The -rest of the input is taken as numbers to search for. +### Example +~~~~ +Input: "/a/" +Output: "/a" -Only for language lacking hashes/maps/dictionaries/tables, we will -make use of the fact the input is sorted. For the majority of -languages, the fact input is sorted does not offer additional benefits. +Input: "/a/b//c/" +Output: "/a/b/c" -For Perl, we make two implementations: one based on a hash, the -other using binary search. +Input: "/a/b/c/../.." +Output: "/a" +~~~~ ### Solutions -* [AWK](awk/ch-1.awk) -* [Bash](bash/ch-1.sh) -* [C](c/ch-1.c) -* [Lua](lua/ch-1.lua) -* [Node.js](node/ch-1.js) -* [Pascal](pascal/ch-1.p) * [Perl](perl/ch-1.pl) -* [Python](python/ch-1.py) -* [Ruby](ruby/ch-1.rb) ### Blog -[Perl Weekly Challenge 111: Search Matrix](https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-111-1.html) -## [Ordered Letters](https://perlweeklychallenge.org/blog/perl-weekly-challenge-111/#TASK2) +## [Climb Stairs](https://perlweeklychallenge.org/blog/perl-weekly-challenge-112/#TASK2) -> Given a word, you can sort its letters alphabetically (case insensitive). -> For example, 'beekeeper' becomes 'beeeeekpr' and 'dictionary' becomes -> 'acdiinorty'. +> You are given `$n` steps to climb > -> Write a script to find the longest English words that don't change when -> their letters are sorted. +> Write a script to find out the distinct ways to climb to the top. +> You are allowed to climb either 1 or 2 steps at a time. ### Notes -We will grep the words from standard input which don't change -if they are sorted; these are the words which match the pattern -/^a*b*c*...z*$/i. We keep track of the longest word. - -If course, there does not have to be a unique word. It will depend -on the word list used to search in. For instance, three different -word list I used give different results: - - infochimps.com /usr/share/dict/words enable.lst - -------------- --------------------- ---------- - Adelops - aegilops - alloquy - beefily beefily - begorry - billowy billowy - egilops - -Only one of them has a unique longest word. - -We will be reading a word list from standard input, and write -the longest word where the letters are in alphabetical order -to standard output. In case of ties, we print the first one found. +This is just finding the `$n + 1` Fibonacci number. ### Solutions -* [GNU AWK](awk/ch-2.gawk) -* [Bash](bash/ch-2.sh) -* [C](c/ch-2.c) -* [Lua](lua/ch-2.lua) -* [Node.js](node/ch-2.js) -* [Pascal](pascal/ch-2.p) * [Perl](perl/ch-2.pl) -* [Python](python/ch-2.py) -* [Ruby](ruby/ch-2.rb) ### Blog -[Perl Weekly Challenge 111: Ordered Letters](https://abigail.github.io/HTML/Perl-Weekly-Challenge/week-111-2.html) - -- cgit From 354e9f2bd924a07b9c8b5ab0ff57aadad6f147ab Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 10 May 2021 12:52:27 +0200 Subject: More tests for week 112, part 1 --- challenge-112/abigail/t/ctest.ini | 1 + challenge-112/abigail/t/input-1-3 | 7 +++++++ challenge-112/abigail/t/output-1-3.exp | 7 +++++++ 3 files changed, 15 insertions(+) create mode 100644 challenge-112/abigail/t/input-1-3 create mode 100644 challenge-112/abigail/t/output-1-3.exp (limited to 'challenge-112') diff --git a/challenge-112/abigail/t/ctest.ini b/challenge-112/abigail/t/ctest.ini index a9e28e24b6..ad939f9ac3 100644 --- a/challenge-112/abigail/t/ctest.ini +++ b/challenge-112/abigail/t/ctest.ini @@ -6,4 +6,5 @@ [names] 1-1 = Given examples 1-2 = More tests +1-3 = Root directory 2-1 = Given examples diff --git a/challenge-112/abigail/t/input-1-3 b/challenge-112/abigail/t/input-1-3 new file mode 100644 index 0000000000..91d300fffc --- /dev/null +++ b/challenge-112/abigail/t/input-1-3 @@ -0,0 +1,7 @@ +/ +/// +/././././ +/. +/../../.. +/foo/../.. +/bar/../ diff --git a/challenge-112/abigail/t/output-1-3.exp b/challenge-112/abigail/t/output-1-3.exp new file mode 100644 index 0000000000..1472c679b8 --- /dev/null +++ b/challenge-112/abigail/t/output-1-3.exp @@ -0,0 +1,7 @@ +/ +/ +/ +/ +/ +/ +/ -- cgit From ea5d349d51ce09985b5c59e346ea6da3bdc37562 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 10 May 2021 13:05:07 +0200 Subject: AWK solutions for week 112 --- challenge-112/abigail/README.md | 2 ++ challenge-112/abigail/awk/ch-1.awk | 44 ++++++++++++++++++++++++++++++++++++++ challenge-112/abigail/awk/ch-2.awk | 25 ++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 challenge-112/abigail/awk/ch-1.awk create mode 100644 challenge-112/abigail/awk/ch-2.awk (limited to 'challenge-112') diff --git a/challenge-112/abigail/README.md b/challenge-112/abigail/README.md index 1048c5465e..dbd9121743 100644 --- a/challenge-112/abigail/README.md +++ b/challenge-112/abigail/README.md @@ -33,6 +33,7 @@ Output: "/a" ~~~~ ### Solutions +* [AWK](awk/ch-1.awk) * [Perl](perl/ch-1.pl) ### Blog @@ -49,6 +50,7 @@ This is just finding the `$n + 1` Fibonacci number. ### Solutions +* [AWK](awk/ch-2.awk) * [Perl](perl/ch-2.pl) ### Blog diff --git a/challenge-112/abigail/awk/ch-1.awk b/challenge-112/abigail/awk/ch-1.awk new file mode 100644 index 0000000000..5de385b451 --- /dev/null +++ b/challenge-112/abigail/awk/ch-1.awk @@ -0,0 +1,44 @@ +#!/usr/bin/awk + +# +# See ../README.md +# + +# +# Run as: awk -f ch-1.awk < input-file +# + +BEGIN { + FS="/" # So we split into directory parts +} + +{ + delete path + j = 0 # Tracks the number of parts in + # the canonical part. + for (i = 1; i <= NF; i ++) { # Loop over directory parts + if ($i == "") { # Skip empty parts + continue; + } + if ($i == ".") { # Skip current directory + continue; + } + if ($i == "..") { # Back up to parent directory + if (j > 0) { + j -- + } + continue; + } + path [j] = $i # Copy + j ++ + } + if (j == 0) { # Root directory + print "/" + } + else { # Print parts, preceeded by a / + for (k = 0; k < j; k ++) { + printf "/%s", path [k] + } + print "" + } +} diff --git a/challenge-112/abigail/awk/ch-2.awk b/challenge-112/abigail/awk/ch-2.awk new file mode 100644 index 0000000000..5053d8467a --- /dev/null +++ b/challenge-112/abigail/awk/ch-2.awk @@ -0,0 +1,25 @@ +#!/usr/bin/awk + +# +# See ../README.md +# + +# +# Run as: awk -f ch-2.awk < input-file +# + +BEGIN { + cache [0] = 1 + cache [1] = 1 +} + +function fib (n) { + if (!(n in cache)) { + cache [n] = fib(n - 1) + fib(n - 2) + } + return cache [n] +} + +{ + print fib($1) +} -- cgit From 32c098711bd7b38c7ec4bbaeccac07af560ffbaa Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 10 May 2021 13:06:45 +0200 Subject: Don't print an empty string --- challenge-112/abigail/perl/ch-1.pl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'challenge-112') diff --git a/challenge-112/abigail/perl/ch-1.pl b/challenge-112/abigail/perl/ch-1.pl index e1f01db484..b68a966191 100644 --- a/challenge-112/abigail/perl/ch-1.pl +++ b/challenge-112/abigail/perl/ch-1.pl @@ -39,5 +39,5 @@ while (<>) { # Remove trailing slashes s !/+$!!; - say; + say $_ || '/'; } -- cgit From 09b7571ec15816cfedda4642d1c3fc8e3e9b0f74 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 10 May 2021 16:05:45 +0200 Subject: Bash solutions for week 112 --- challenge-112/abigail/README.md | 2 ++ challenge-112/abigail/bash/ch-1.sh | 41 ++++++++++++++++++++++++++++++++++++++ challenge-112/abigail/bash/ch-2.sh | 29 +++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 challenge-112/abigail/bash/ch-1.sh create mode 100644 challenge-112/abigail/bash/ch-2.sh (limited to 'challenge-112') diff --git a/challenge-112/abigail/README.md b/challenge-112/abigail/README.md index dbd9121743..574d51411f 100644 --- a/challenge-112/abigail/README.md +++ b/challenge-112/abigail/README.md @@ -34,6 +34,7 @@ Output: "/a" ### Solutions * [AWK](awk/ch-1.awk) +* [Bash](bash/ch-1.sh) * [Perl](perl/ch-1.pl) ### Blog @@ -51,6 +52,7 @@ This is just finding the `$n + 1` Fibonacci number. ### Solutions * [AWK](awk/ch-2.awk) +* [Bash](bash/ch-2.sh) * [Perl](perl/ch-2.pl) ### Blog diff --git a/challenge-112/abigail/bash/ch-1.sh b/challenge-112/abigail/bash/ch-1.sh new file mode 100644 index 0000000000..6f41950bc5 --- /dev/null +++ b/challenge-112/abigail/bash/ch-1.sh @@ -0,0 +1,41 @@ +#!/bin/sh + +# +# See ../README.md +# + +# +# Run as: bash ch-1.sh < input-file +# + +set -f + +IFS="/" + +while read -a i_parts +do declare -a o_parts + j=0 + for ((i = 0; i < ${#i_parts[@]}; i ++)) + do if [ "X${i_parts[$i]}" == "X" ] # Skip empty parts + then continue + fi + if [ "X${i_parts[$i]}" == "X." ] # Skip current directory + then continue + fi + if [ "X${i_parts[$i]}" == "X.." ] # Back up to parent directory + then if ((j > 0)) + then ((j --)) + fi + continue + fi + o_parts[$j]=${i_parts[$i]} # Copy part + ((j ++)) + done + if ((j == 0)) + then echo "/" # Root directory + else for ((k = 0; k < j; k ++)) # Canonical path + do printf "/%s" ${o_parts[$k]} + done + echo + fi +done diff --git a/challenge-112/abigail/bash/ch-2.sh b/challenge-112/abigail/bash/ch-2.sh new file mode 100644 index 0000000000..17f2d49b9b --- /dev/null +++ b/challenge-112/abigail/bash/ch-2.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +# +# See ../README.md +# + +# +# Run as: bash ch-2.sh < input-file +# + +declare -A cache +cache[0]=1 +cache[1]=1 + +function fib () { + local n=$1 + if [[ -z ${cache[$n]} ]] + then fib $((n - 1)) + cache[$n]=$result + fib $((n - 2)) + cache[$n]=$((cache[$n] + result)) + fi + result=${cache[$n]} +} + +while read n +do fib $n + echo $result +done -- cgit From 7b5597d51092301df5e79f1104bb1403e42abd65 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 10 May 2021 17:12:12 +0200 Subject: C solutions for week 112 --- challenge-112/abigail/README.md | 2 ++ challenge-112/abigail/c/ch-1.c | 78 +++++++++++++++++++++++++++++++++++++++++ challenge-112/abigail/c/ch-2.c | 25 +++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 challenge-112/abigail/c/ch-1.c create mode 100644 challenge-112/abigail/c/ch-2.c (limited to 'challenge-112') diff --git a/challenge-112/abigail/README.md b/challenge-112/abigail/README.md index 574d51411f..c619dd35d2 100644 --- a/challenge-112/abigail/README.md +++ b/challenge-112/abigail/README.md @@ -35,6 +35,7 @@ Output: "/a" ### Solutions * [AWK](awk/ch-1.awk) * [Bash](bash/ch-1.sh) +* [C](c/ch-1.c) * [Perl](perl/ch-1.pl) ### Blog @@ -53,6 +54,7 @@ This is just finding the `$n + 1` Fibonacci number. ### Solutions * [AWK](awk/ch-2.awk) * [Bash](bash/ch-2.sh) +* [C](c/ch-2.c) * [Perl](perl/ch-2.pl) ### Blog diff --git a/challenge-112/abigail/c/ch-1.c b/challenge-112/abigail/c/ch-1.c new file mode 100644 index 0000000000..d7445188a6 --- /dev/null +++ b/challenge-112/abigail/c/ch-1.c @@ -0,0 +1,78 @@ +# include +# include +# include +# include + +/* + * See ../README.md + */ + +/* + * Run as: cc -o ch-1.o ch-1.c; ./ch-1.o < input-file + */ + +/* + * Here, we will "eliminate" parts (".", or ".." and its parent) + * by replacing the parts with slashes. Then we print the string, + * without printing 2 slashes in succession. + */ + +int main (void) { + char * line = NULL; + size_t len = 0; + size_t str_len; + + while ((str_len = getline (&line, &len, stdin)) != -1) { + line [str_len - 1] = '/'; + for (size_t i = 0; i < str_len; i ++) { + if (line [i] == '.' && line [i - 1] == '/') { + /* Component starts with a . */ + if (line [i + 1] == '/') { + line [i] = '/'; /* Current directory */ + continue; + } + else { + if (line [i + 1] == '.' && line [i + 2] == '/') { + /* Parent directory. */ + /* First wipe this component */ + line [i] = '/'; + line [i + 1] = '/'; + /* Then wipe the previous component, if any. */ + /* First, skip the slashes */ + size_t j = i - 1; + while (j && line [j] == '/') { + j --; + } + /* Now, erase exactly one component */ + while (j && line [j] != '/') { + line [j] = '/'; + j --; + } + } + } + } + } + /* Get rid of trailing slashes */ + while (str_len > 1 && line [str_len - 1] == '/') { + str_len --; + } + /* Print string, eliminating double slashes */ + bool slash = false; + for (size_t i = 0; i < str_len; i ++) { + if (line [i] == '/') { + if (slash) { + continue; + } + slash = true; + } + else { + slash = false; + } + printf ("%c", line [i]); + } + printf ("\n"); + } + free (line); + + return (0); +} diff --git a/challenge-112/abigail/c/ch-2.c b/challenge-112/abigail/c/ch-2.c new file mode 100644 index 0000000000..97c36677ab --- /dev/null +++ b/challenge-112/abigail/c/ch-2.c @@ -0,0 +1,25 @@ +# include +# include +# include + +/* + * See ../README.md + */ + +/* + * Run as: cc -o ch-2.o ch-2.c; ./ch-2.o < input-file + */ + +int main (void) { + int n, f1, f2; + + while (scanf ("%d", &n) == 1) { + for (f1 = 0, f2 = 1;n --;) { + f2 += f1; + f1 = f2 - f1; + } + printf ("%d\n", f2); + } + + return (0); +} -- cgit From cdfa0959fe3c20fce76430b30577aa96f17f5787 Mon Sep 17 00:00:00 2001 From: chirvasitua Date: Mon, 10 May 2021 12:38:31 -0400 Subject: 1st commit on 112_raku --- challenge-112/stuart-little/raku/ch-1.p6 | 6 ++++++ challenge-112/stuart-little/raku/ch-2.p6 | 23 +++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100755 challenge-112/stuart-little/raku/ch-1.p6 create mode 100755 challenge-112/stuart-little/raku/ch-2.p6 (limited to 'challenge-112') diff --git a/challenge-112/stuart-little/raku/ch-1.p6 b/challenge-112/stuart-little/raku/ch-1.p6 new file mode 100755 index 0000000000..aa5f7f9434 --- /dev/null +++ b/challenge-112/stuart-little/raku/ch-1.p6 @@ -0,0 +1,6 @@ +#!/usr/bin/env perl6 +use v6; + +# run