aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli <adeadmarshal@gmail.com>2023-09-30 21:15:22 +0330
committerGitHub <noreply@github.com>2023-09-30 21:15:22 +0330
commitf5dd3ae9b8aa0a23c4b4d9ec53d38c357e372e61 (patch)
treed7a60c3d13d81b2a12fe819f4e5e8ca59e459801
parent9b6b37b4c1144df60cd5edf5e6aabd9c1ac30979 (diff)
parent4f0cf89dcc92da3c3852d25b3e14e441f5787e04 (diff)
downloadperlweeklychallenge-club-f5dd3ae9b8aa0a23c4b4d9ec53d38c357e372e61.tar.gz
perlweeklychallenge-club-f5dd3ae9b8aa0a23c4b4d9ec53d38c357e372e61.tar.bz2
perlweeklychallenge-club-f5dd3ae9b8aa0a23c4b4d9ec53d38c357e372e61.zip
Merge branch 'manwar:master' into TWC236
-rw-r--r--challenge-235/dave-jacoby/blog.txt2
-rw-r--r--challenge-236/athanasius/perl/ch-1.pl204
-rw-r--r--challenge-236/athanasius/perl/ch-2.pl249
-rw-r--r--challenge-236/athanasius/raku/ch-1.raku197
-rw-r--r--challenge-236/athanasius/raku/ch-2.raku234
-rw-r--r--challenge-236/bob-lied/README6
-rw-r--r--challenge-236/bob-lied/blog.txt2
-rw-r--r--challenge-236/bob-lied/perl/ch-1.pl117
-rw-r--r--challenge-236/bob-lied/perl/ch-2.pl89
-rw-r--r--challenge-236/dave-jacoby/perl/ch-1.pl64
-rw-r--r--challenge-236/dave-jacoby/perl/ch-2.pl53
-rw-r--r--challenge-236/demerphq/perl/ch-1.pl60
-rw-r--r--challenge-236/demerphq/perl/ch-2.pl70
-rw-r--r--challenge-236/laurent-rosenfeld/blog1.txt1
-rw-r--r--challenge-236/laurent-rosenfeld/perl/ch-1.pl34
-rw-r--r--challenge-236/laurent-rosenfeld/raku/ch-1.raku33
-rwxr-xr-xchallenge-236/perlboy1967/perl/ch-1.pl58
-rwxr-xr-xchallenge-236/perlboy1967/perl/ch-2.pl51
-rw-r--r--challenge-236/robert-dicicco/perl/ch-2.pl94
-rw-r--r--challenge-236/robert-dicicco/python/ch-2.py93
-rw-r--r--challenge-236/robert-dicicco/raku/ch-2.raku97
-rw-r--r--challenge-236/robert-dicicco/ruby/ch-2.rb102
-rw-r--r--challenge-236/shimon-ben-avraham/README373
-rw-r--r--challenge-236/shimon-ben-avraham/blog.txt1
-rw-r--r--challenge-236/shimon-ben-avraham/raku/ch-2.md372
-rwxr-xr-xchallenge-236/shimon-ben-avraham/raku/ch-2.raku128
-rw-r--r--challenge-236/shimon-ben-avraham/raku/ch-2.sl410
-rw-r--r--challenge-236/steven-wilson/python/ch-1.py56
-rw-r--r--challenge-236/steven-wilson/python/ch-2.py34
-rw-r--r--stats/pwc-current.json285
-rw-r--r--stats/pwc-language-breakdown-summary.json76
-rw-r--r--stats/pwc-language-breakdown.json1490
-rw-r--r--stats/pwc-leaders.json758
-rw-r--r--stats/pwc-summary-1-30.json96
-rw-r--r--stats/pwc-summary-121-150.json32
-rw-r--r--stats/pwc-summary-151-180.json50
-rw-r--r--stats/pwc-summary-181-210.json84
-rw-r--r--stats/pwc-summary-211-240.json56
-rw-r--r--stats/pwc-summary-241-270.json42
-rw-r--r--stats/pwc-summary-271-300.json32
-rw-r--r--stats/pwc-summary-31-60.json114
-rw-r--r--stats/pwc-summary-61-90.json110
-rw-r--r--stats/pwc-summary-91-120.json40
-rw-r--r--stats/pwc-summary.json64
44 files changed, 5005 insertions, 1608 deletions
diff --git a/challenge-235/dave-jacoby/blog.txt b/challenge-235/dave-jacoby/blog.txt
new file mode 100644
index 0000000000..92c92df39c
--- /dev/null
+++ b/challenge-235/dave-jacoby/blog.txt
@@ -0,0 +1,2 @@
+https://jacoby.github.io/2023/09/20/there-goes-my-zero-weekly-challenge-235.html
+
diff --git a/challenge-236/athanasius/perl/ch-1.pl b/challenge-236/athanasius/perl/ch-1.pl
new file mode 100644
index 0000000000..39c862f198
--- /dev/null
+++ b/challenge-236/athanasius/perl/ch-1.pl
@@ -0,0 +1,204 @@
+#!perl
+
+################################################################################
+=comment
+
+Perl Weekly Challenge 236
+=========================
+
+TASK #1
+-------
+*Exact Change*
+
+Submitted by: Mohammad S Anwar
+
+You are asked to sell juice each costs $5. You are given an array of bills. You
+can only sell ONE juice to each customer but make sure you return exact change
+back. You only have $5, $10 and $20 notes. You do not have any change in hand at
+first.
+
+Write a script to find out if it is possible to sell to each customers with
+correct change.
+
+Example 1
+
+ Input: @bills = (5, 5, 5, 10, 20)
+ Output: true
+
+ From the first 3 customers, we collect three $5 bills in order.
+ From the fourth customer, we collect a $10 bill and give back a $5.
+ From the fifth customer, we give a $10 bill and a $5 bill.
+ Since all customers got correct change, we output true.
+
+Example 2
+
+ Input: @bills = (5, 5, 10, 10, 20)
+ Output: false
+
+ From the first two customers in order, we collect two $5 bills.
+ For the next two customers in order, we collect a $10 bill and give back a $5
+ bill.
+ For the last customer, we can not give the change of $15 back because we only
+ have two $10 bills.
+ Since not every customer received the correct change, the answer is false.
+
+Example 3
+
+ Input: @bills = (5, 5, 5, 20)
+ Output: true
+
+=cut
+################################################################################
+
+#--------------------------------------#
+# Copyright © 2023 PerlMonk Athanasius #
+#--------------------------------------#
+
+#===============================================================================
+=comment
+
+Interface
+---------
+If no command-line arguments are given, the test suite is run.
+
+=cut
+#===============================================================================
+
+use v5.32.1;
+use warnings;
+use Const::Fast;
+use Regexp::Common qw( number );
+use Test::More;
+
+const my $USAGE =>
+"Usage:
+ perl $0 [<bills> ...]
+ perl $0
+
+ [<bills> ...] A list of bills: \$5, \$10, and \$20 only\n";
+
+#-------------------------------------------------------------------------------
+BEGIN
+#-------------------------------------------------------------------------------
+{
+ $| = 1;
+ print "\nChallenge 236, Task #1: Exact Change (Perl)\n\n";
+}
+
+#===============================================================================
+MAIN:
+#===============================================================================
+{
+ if (scalar @ARGV == 0)
+ {
+ run_tests();
+ }
+ else
+ {
+ my $bills = parse_command_line();
+
+ printf "Input: \@bills = (%s)\n", join ', ', @$bills;
+
+ my $can_give_change = give_change( $bills );
+
+ printf "Output: %s\n", $can_give_change ? 'True' : 'False';
+ }
+}
+
+#-------------------------------------------------------------------------------
+sub give_change
+#-------------------------------------------------------------------------------
+{
+ my ($bills) = @_;
+ my %cash_in_hand = (5 => 0, 10 => 0, 20 => 0);
+
+ for my $bill (@$bills)
+ {
+ ++$cash_in_hand{ $bill };
+
+ if ($bill == 10) # $5 change due
+ {
+ return 0 if $cash_in_hand{ 5 } == 0;
+
+ --$cash_in_hand{ 5 };
+ }
+ elsif ($bill == 20) # $15 change due
+ {
+ if ($cash_in_hand{ 10 } >= 1 &&
+ $cash_in_hand{ 5 } >= 1)
+ {
+ --$cash_in_hand{ 10 };
+ --$cash_in_hand{ 5 };
+ }
+ elsif ($cash_in_hand{ 5 } >= 3)
+ {
+ $cash_in_hand{ 5 } -= 3;
+ }
+ else
+ {
+ return 0;
+ }
+ }
+ }
+
+ return 1;
+}
+
+#-------------------------------------------------------------------------------
+sub parse_command_line
+#-------------------------------------------------------------------------------
+{
+ for (@ARGV)
+ {
+ / ^ $RE{num}{int} $ /x
+ or error( qq["$_" is not a valid integer] );
+
+ $_ == 5 || $_ == 10 || $_ == 20
+ or error( qq["$_" is not a valid note denomination]);
+ }
+
+ return \@ARGV;
+}
+
+#-------------------------------------------------------------------------------
+sub run_tests
+#-------------------------------------------------------------------------------
+{
+ print "Running the test suite\n";
+
+ while (my $line = <DATA>)
+ {
+ chomp $line;
+
+ my ($test_name, $bills_str, $expected) = split / \| /x, $line;
+
+ for ($test_name, $bills_str, $expected)
+ {
+ s/ ^ \s+ //x;
+ s/ \s+ $ //x;
+ }
+
+ my @bills = split / \s+ /x, $bills_str;
+ my $can_give_change = give_change( \@bills ) ? 'True' : 'False';
+
+ is $can_give_change, $expected, $test_name;
+ }
+
+ done_testing;
+}
+
+#-------------------------------------------------------------------------------
+sub error
+#-------------------------------------------------------------------------------
+{
+ my ($message) = @_;
+
+ die "ERROR: $message\n$USAGE";
+}
+
+################################################################################
+
+__DATA__
+Example 1|5 5 5 10 20|True
+Example 2|5 5 10 10 20|False
+Example 3|5 5 5 20 |True
diff --git a/challenge-236/athanasius/perl/ch-2.pl b/challenge-236/athanasius/perl/ch-2.pl
new file mode 100644
index 0000000000..cc033fbbe3
--- /dev/null
+++ b/challenge-236/athanasius/perl/ch-2.pl
@@ -0,0 +1,249 @@
+#!perl
+
+################################################################################
+=comment
+
+Perl Weekly Challenge 236
+=========================
+
+TASK #2
+-------
+*Array Loops*
+
+Submitted by: Mark Anderson
+
+You are given an array of unique integers.
+
+Write a script to determine how many loops are in the given array.
+
+ To determine a loop: Start at an index and take the number at array[index]
+ and then proceed to that index and continue this until you end up at the
+ starting index.
+
+Example 1
+
+ Input: @ints = (4,6,3,8,15,0,13,18,7,16,14,19,17,5,11,1,12,2,9,10)
+ Output: 3
+
+ To determine the 1st loop, start at index 0, the number at that index is 4,
+ proceed to index 4, the number at that index is 15, proceed to index 15 and so
+ on until you're back at index 0.
+
+ Loops are as below:
+ [4 15 1 6 13 5 0]
+ [3 8 7 18 9 16 12 17 2]
+ [14 11 19 10]
+
+Example 2
+
+ Input: @ints = (0,1,13,7,6,8,10,11,2,14,16,4,12,9,17,5,3,18,15,19)
+ Output: 6
+
+ Loops are as below:
+ [0]
+ [1]
+ [13 9 14 17 18 15 5 8 2]
+ [7 11 4 6 10 16 3]
+ [12]
+ [19]
+
+Example 3
+
+ Input: @ints = (9,8,3,11,5,7,13,19,12,4,14,10,18,2,16,1,0,15,6,17)
+ Output: 1
+
+ Loop is as below:
+ [9 4 5 7 19 17 15 1 8 12 18 6 13 2 3 11 10 14 16 0]
+
+=cut
+################################################################################
+
+#--------------------------------------#
+# Copyright © 2023 PerlMonk Athanasius #
+#--------------------------------------#
+
+#===============================================================================
+=comment
+
+Assumption
+----------
+The contents of the input array are the valid indices for that array (in any
+order). Therefore:
+1. The minimum array value is 0.
+2. For an array of n elements, the maximum array value is (n - 1).
+3. Since the array values are unique, each valid index is included in the input
+ array exactly once.
+
+Interface
+---------
+1. If no command-line arguments are given, the test suite is run. Otherwise:
+2. If VERBOSE is set to a true value (the default), the output is followed by
+ details of the loops found.
+
+=cut
+#===============================================================================
+
+use v5.32.1;
+use warnings;
+use Const::Fast;
+use List::Util qw( max min uniqint );
+use Regexp::Common qw( number );
+use Test::More;
+
+const my $FALSE => 0;
+const my $TRUE => 1;
+const my $VERBOSE => $TRUE;
+const my $USAGE =>
+"Usage:
+ perl $0 [<ints> ...]
+ perl $0
+
+ [<ints> ...] A non-empty list of all valid array indices in any order\n";
+
+#-------------------------------------------------------------------------------
+BEGIN
+#-------------------------------------------------------------------------------
+{
+ $| = 1;
+ print "\nChallenge 236, Task #2: Array Loops (Perl)\n\n";
+}
+
+#===============================================================================
+MAIN:
+#===============================================================================
+{
+ if (scalar @ARGV == 0)
+ {
+ run_tests();
+ }
+ else
+ {
+ my $ints = parse_command_line();
+
+ printf "Input: \@ints = (%s)\n", join ',', @$ints;
+
+ my $loops = find_loops( $ints );
+ my $count = scalar @$loops;
+
+ print "Output: $count\n";
+
+ if ($VERBOSE)
+ {
+ printf "\nLoop%s as below:\n", $count == 1 ? ' is' : 's are';
+ printf "[%s]\n", join ' ', @$_ for @$loops;
+ }
+ }
+}
+
+#-------------------------------------------------------------------------------
+sub find_loops
+#-------------------------------------------------------------------------------
+{
+ my ($ints) = @_;
+ my @loops;
+ my @found = ($FALSE) x scalar @$ints;
+
+ for my $i (0 .. $#$ints)
+ {
+ next if $found[ $i ];
+
+ my $start = $ints->[ $i ];
+ my @loop = $start;
+ my $last = $start;
+ my $next = -1;
+
+ $found[ $start ] = 1;
+
+ while ($TRUE)
+ {
+ $next = $ints->[ $last ];
+
+ last if $next == $start;
+
+ push @loop, $next;
+
+ $found[ $next ] = $TRUE;
+
+ $last = $next;
+ }
+
+ push @loops, [ @loop ];
+ }
+
+ return \@loops;
+}
+
+#-------------------------------------------------------------------------------
+sub parse_command_line
+#-------------------------------------------------------------------------------
+{
+ / ^ $RE{num}{int} $ /x or error( qq["$_" is not a valid integer] )
+ for @ARGV;
+
+ my $min = min @ARGV;
+ my $max = max @ARGV;
+
+ $min == 0 or error( qq[Minimum is "$min", should be 0] );
+ $max == $#ARGV or error( qq[Maximum is "$max", should be $#ARGV] );
+
+ scalar @ARGV == scalar uniqint @ARGV
+ or error( qq[Duplicate found] );
+
+ return \@ARGV;
+}
+
+#-------------------------------------------------------------------------------
+sub run_tests
+#-------------------------------------------------------------------------------
+{
+ print "Running the test suite\n";
+
+ while (my $line = <DATA>)
+ {
+ chomp $line;
+
+ my ($test_name, $ints_str) = split / \| /x, $line;
+
+ $line = <DATA>;
+
+ my @exp_strs = split / \| /x, $line;
+
+ for ($test_name, $ints_str, @exp_strs)
+ {
+ s/ ^ \s+ //x;
+ s/ \s+ $ //x;
+ }
+
+ my @ints = split / \s+ /x, $ints_str;
+ my $loops = find_loops( \@ints );
+ my @expected;
+
+ for my $exp_str (@exp_strs)
+ {
+ push @expected, [ split / \s+ /x, $exp_str ];
+ }
+
+ is_deeply $loops, \@expected, $test_name;
+ }
+
+ done_testing;
+}
+
+#-------------------------------------------------------------------------------
+sub error
+#-------------------------------------------------------------------------------
+{
+ my ($message) = @_;
+
+ die "ERROR: $message\n$USAGE";
+}
+
+################################################################################
+
+__DATA__
+Example 1|4 6 3 8 15 0 13 18 7 16 14 19 17 5 11 1 12 2 9 10
+ 4 15 1 6 13 5 0| 3 8 7 18 9 16 12 17 2|14 11 19 10
+Example 2|0 1 13 7 6 8 10 11 2 14 16 4 12 9 17 5 3 18 15 19
+ 0| 1|13 9 14 17 18 15 5 8 2| 7 11 4 6 10 16 3|12|19
+Example 3|9 8 3 11 5 7 13 19 12 4 14 10 18 2 16 1 0 15 6 17
+ 9 4 5 7 19 17 15 1 8 12 18 6 13 2 3 11 10 14 16 0
diff --git a/challenge-236/athanasius/raku/ch-1.raku b/challenge-236/athanasius/raku/ch-1.raku
new file mode 100644
index 0000000000..1a5a2365ac
--- /dev/null
+++ b/challenge-236/athanasius/raku/ch-1.raku
@@ -0,0 +1,197 @@
+use v6d;
+
+################################################################################
+=begin comment
+
+Perl Weekly Challenge 236
+=========================
+
+TASK #1
+-------
+*Exact Change*
+
+Submitted by: Mohammad S Anwar
+
+You are asked to sell juice each costs $5. You are given an array of bills. You
+can only sell ONE juice to each customer but make sure you return exact change
+back. You only have $5, $10 and $20 notes. You do not have any change in hand at
+first.
+
+Write a script to find out if it is possible to sell to each customers with
+correct change.
+
+Example 1
+
+ Input: @bills = (5, 5, 5, 10, 20)
+ Output: true
+
+ From the first 3 customers, we collect three $5 bills in order.
+ From the fourth customer, we collect a $10 bill and give back a $5.
+ From the fifth customer, we give a $10 bill and a $5 bill.
+ Since all customers got correct change, we output true.
+
+Example 2
+
+ Input: @bills = (5, 5, 10, 10, 20)
+ Output: false
+
+ From the first two customers in order, we collect two $5 bills.
+ For the next two customers in order, we collect a $10 bill and give back a $5
+ bill.
+ For the last customer, we can not give the change of $15 back because we only
+ have two $10 bills.
+ Since not every customer received the correct change, the answer is false.
+
+Example 3
+
+ Input: @bills = (5, 5, 5, 20)
+ Output: true
+
+=end comment
+################################################################################
+
+#--------------------------------------#
+# Copyright © 2023 PerlMonk Athanasius #
+#--------------------------------------#
+
+#===============================================================================
+=begin comment
+
+Interface
+---------
+If no command-line arguments are given, the test suite is run.
+
+=end comment
+#===============================================================================
+
+use Test;
+
+subset Bill of Int where * ~~ 5 | 10 | 20;
+
+#-------------------------------------------------------------------------------
+BEGIN
+#-------------------------------------------------------------------------------
+{
+ "\nChallenge 236, Task #1: Exact Change (Raku)\n".put;
+}
+
+#===============================================================================
+multi sub MAIN
+(
+ #| A list of bills: $5, $10, and $20 only
+
+ *@bills where { .elems > 0 && .all ~~ Bill:D }
+)
+#===============================================================================
+{
+ "Input: \@bills = (%s)\n".printf: @bills.join: ', ';
+
+ my Bool $can-give-change = give-change( @bills );
+
+ "Output: %s\n".printf: $can-give-change ?? 'True' !! 'False';
+}
+
+#===============================================================================
+multi sub MAIN() # No input: run the test suite
+#===============================================================================
+{
+ run-tests();
+}
+
+#-------------------------------------------------------------------------------
+sub give-change( List:D[Bill:D] $bills --> Bool:D )
+#-------------------------------------------------------------------------------
+{
+ my UInt %cash-in-hand{Bill} = 5 => 0, 10 => 0, 20 => 0;
+
+ for @$bills -> Bill $bill
+ {
+ ++%cash-in-hand{ $bill.Int };
+
+ if $bill == 10 # $5 change due
+ {
+ return False if %cash-in-hand{ 5 } == 0;
+
+ --%cash-in-hand{ 5 };
+ }
+ elsif $bill == 20 # $15 change due
+ {
+ if %cash-in-hand{ 10 } >= 1 &&
+ %cash-in-hand{ 5 } >= 1
+ {
+ --%cash-in-hand{ 10 };
+ --%cash-in-hand{ 5 };
+ }
+ elsif %cash-in-hand{ 5 } >= 3
+ {
+ %cash-in-hand{ 5 } -= 3;
+ }
+ else
+ {
+ return False;
+ }
+ }
+ }
+
+ return True;
+}
+
+#-------------------------------------------------------------------------------
+sub run-tests()
+#-------------------------------------------------------------------------------
+{
+ 'Running the test suite'.put;
+
+ for test-data.lines -> Str $line
+ {
+ my Str ($test-name, $bills-str, $expected) = $line.split: / \| /;
+
+ for $test-name, $bills-str, $expected
+ {
+ s/ ^ \s+ //;
+ s/ \s+ $ //;
+ }
+
+ my Bill @bills = $bills-str.split( / \s+ / ).map: { .Int };
+ my Str $can-give-change = give-change( @bills ) ?? 'True' !! 'False';
+
+ is $can-give-change, $expected, $test-name;
+ }
+
+ done-testing;
+}
+
+#-------------------------------------------------------------------------------
+sub error( Str:D $message )
+#-------------------------------------------------------------------------------
+{
+ "ERROR: $message".put;
+
+ USAGE();
+
+ exit 0;
+}
+
+#-------------------------------------------------------------------------------
+sub USAGE()
+#-------------------------------------------------------------------------------
+{
+ my Str $usage = $*USAGE;
+
+ $usage ~~ s:g/ ($*PROGRAM-NAME) /raku $0/;
+
+ $usage.put;
+}
+
+#-------------------------------------------------------------------------------
+sub test-data( --> Str:D )
+#-------------------------------------------------------------------------------
+{
+ return q:to/END/;
+ Example 1|5 5 5 10 20|True
+ Example 2|5 5 10 10 20|False
+ Example 3|5 5 5 20 |True
+ END
+}
+
+################################################################################
diff --git a/challenge-236/athanasius/raku/ch-2.raku b/challenge-236/athanasius/raku/ch-2.raku
new file mode 100644
index 0000000000..a5c201b395
--- /dev/null
+++ b/challenge-236/athanasius/raku/ch-2.raku
@@ -0,0 +1,234 @@
+use v6d;
+
+################################################################################
+=begin comment
+
+Perl Weekly Challenge 236
+=========================
+
+TASK #2
+-------
+*Array Loops*
+
+Submitted by: Mark Anderson
+
+You are given an array of unique integers.
+
+Write a script to determine how many loops are in the given array.
+
+ To determine a loop: Start at an index and take the number at array[index]
+ and then proceed to that index and continue this until you end up at the
+ starting index.
+
+Example 1
+
+ Input: @ints = (4,6,3,8,15,0,13,18,7,16,14,19,17,5,11,1,12,2,9,10)
+ Output: 3
+
+ To determine the 1st loop, start at index 0, the number at that index is 4,
+ proceed to index 4, the number at that index is 15, proceed to index 15 and so
+ on until you're back at index 0.
+
+ Loops are as below:
+ [4 15 1 6 13 5 0]
+ [3 8 7 18 9 16 12 17 2]
+ [14 11 19 10]
+
+Example 2
+
+ Input: @ints = (0,1,13,7,6,8,10,11,2,14,16,4,12,9,17,5,3,18,15,19)
+ Output: 6
+
+ Loops are as below:
+ [0]
+ [1]
+ [13 9 14 17 18 15 5 8 2]
+ [7 11 4 6 10 16 3]
+ [12]
+ [19]
+
+Example 3
+
+ Input: @ints = (9,8,3,11,5,7,13,19,12,4,14,10,18,2,16,1,0,15,6,17)
+ Output: 1
+
+ Loop is as below:
+ [9 4 5 7 19 17 15 1 8 12 18 6 13 2 3 11 10 14 16 0]
+
+=end comment
+################################################################################
+
+#--------------------------------------#
+# Copyright © 2023 PerlMonk Athanasius #
+#--------------------------------------#
+
+#===============================================================================
+=begin comment
+
+Assumption
+----------
+The contents of the input array are the valid indices for that array (in any
+order). Therefore:
+1. The minimum array value is 0.
+2. For an array of n elements, the maximum array value is (n - 1).
+3. Since the array values are unique, each valid index is included in the input
+ array exactly once.
+
+Interface
+---------
+1. If no command-line arguments are given, the test suite is run. Otherwise:
+2. If VERBOSE is set to True (the default), the output is followed by details of
+ the loops found.
+
+=end comment
+#===============================================================================
+
+use Test;
+
+my Bool