From 16bc0dcb20a36d06296ef7de89c6c0f3a4da25dd Mon Sep 17 00:00:00 2001 From: drbaggy Date: Mon, 2 Aug 2021 10:09:27 +0100 Subject: challenge 1 arbitrary size! --- challenge-124/james-smith/perl/ch-1.pl | 52 ++++++++++++++++++++++++++++++++++ challenge-124/james-smith/perl/ch-2.pl | 22 ++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 challenge-124/james-smith/perl/ch-1.pl create mode 100644 challenge-124/james-smith/perl/ch-2.pl diff --git a/challenge-124/james-smith/perl/ch-1.pl b/challenge-124/james-smith/perl/ch-1.pl new file mode 100644 index 0000000000..98695a06ea --- /dev/null +++ b/challenge-124/james-smith/perl/ch-1.pl @@ -0,0 +1,52 @@ +#!/usr/local/bin/perl + +use strict; + +use warnings; +use feature qw(say); +use Test::More; +use Benchmark qw(cmpthese timethis); +use Data::Dumper qw(Dumper); +my $tau = 6.283185307179586476925286766559; + + +my $radius = @ARGV ? shift @ARGV : 10; +my $cross = @ARGV ? shift @ARGV : $radius; + $cross++ if $cross&1; + +### A simple one to render the cross as drawin the question... + +unless($radius) { + my @pts = qw(-1 3 4 5 5 5 5 5 4 3 -1 0 0 0 -1 0 0); + say $_ < 0 ? ' ^^^^^' + : !$_ ? ' ^' + : ' ' x (6-$_) . '^' . ' 'x($_*2-1) .'^' + foreach @pts; + exit; +} + +## We will render the relevant sized venus symbol... + +## Create the canvas.. +my @a = map { ' ' x ($radius*2+1) } 0..$radius*2+$cross; + +## Now we draw the circle... +foreach my $x (0..$radius) { + my $y = int sqrt( $radius**2 - $x**2 ); + substr $a[ $radius - $x ],$radius-$y,1,'^'; + substr $a[ $radius + $x ],$radius-$y,1,'^'; + substr $a[ $radius - $x ],$radius+$y,1,'^'; + substr $a[ $radius + $x ],$radius+$y,1,'^'; + substr $a[ $radius - $y ],$radius-$x,1,'^'; + substr $a[ $radius + $y ],$radius-$x,1,'^'; + substr $a[ $radius - $y ],$radius+$x,1,'^'; + substr $a[ $radius + $y ],$radius+$x,1,'^'; +} + +## And the two parts of the cross... +substr $a[2*$radius+$_],$radius,1,'^' foreach 0..$cross; +substr $a[2*$radius+$cross/2],$radius-$cross/2,$cross+1,'^'x($cross+1); + +### Finally we render the canvas... +say $_ foreach @a; + diff --git a/challenge-124/james-smith/perl/ch-2.pl b/challenge-124/james-smith/perl/ch-2.pl new file mode 100644 index 0000000000..2348c8b946 --- /dev/null +++ b/challenge-124/james-smith/perl/ch-2.pl @@ -0,0 +1,22 @@ +#!/usr/local/bin/perl + +use strict; + +use warnings; +use feature qw(say); +use Test::More; +use Benchmark qw(cmpthese timethis); +use Data::Dumper qw(Dumper); + +my @TESTS = ( + [ 0, 1 ], +); + +is( my_function($_->[0]), $_->[1] ) foreach @TESTS; + +done_testing(); + +sub my_function { + return 1; +} + -- cgit From 104dd682d296f7ab6aedafd35a2d86f16a7a79b5 Mon Sep 17 00:00:00 2001 From: Mark A Date: Mon, 2 Aug 2021 03:16:14 -0600 Subject: ch-2.raku --- challenge-124/mark-anderson/raku/ch-2.raku | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 challenge-124/mark-anderson/raku/ch-2.raku diff --git a/challenge-124/mark-anderson/raku/ch-2.raku b/challenge-124/mark-anderson/raku/ch-2.raku new file mode 100644 index 0000000000..6762d2c45e --- /dev/null +++ b/challenge-124/mark-anderson/raku/ch-2.raku @@ -0,0 +1,18 @@ +#!/usr/bin/env raku + +say tug-of-war(10, 20 ... 100); +say tug-of-war(10, -15, 20, 30, -25, 0, 5, 40, -5); + +sub tug-of-war(+$list) +{ + my $n = $list.elems div 2; + + my %h = $list.combinations($n).map(-> @a + { + my @b = ($list (-) @a).keys; + + abs(@b.sum - @a.sum) => @a ~ ' ' ~ @b; + }); + + .head($n), .tail(* - $n) with %h.min.value.split(/\s/).cache; +} -- cgit From c1646be90db79f876b0bafed002c3976333ee540 Mon Sep 17 00:00:00 2001 From: Scimon Proctor Date: Mon, 2 Aug 2021 10:35:01 +0100 Subject: Challege 1 (with variable sizing) --- challenge-124/simon-proctor/raku/ch-1.raku | 47 ++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 challenge-124/simon-proctor/raku/ch-1.raku diff --git a/challenge-124/simon-proctor/raku/ch-1.raku b/challenge-124/simon-proctor/raku/ch-1.raku new file mode 100644 index 0000000000..da4022e6b9 --- /dev/null +++ b/challenge-124/simon-proctor/raku/ch-1.raku @@ -0,0 +1,47 @@ +#!/usr/bin/env raku + +constant SYM = '♀'; + +multi sub MAIN( 1 ) is hidden-from-USAGE { say SYM } + +#| Given a radius for the circle draw the Female Symbol +multi sub MAIN( + UInt $rad where * <= 20 #= Radius from 1 to 20 +) { + draw-circle( $rad ); + draw-cross( $rad ); +} + +sub draw-circle( \rad ) { + # Totally nicked this from here : https://stackoverflow.com/questions/1022178/how-to-make-a-circle-on-a-grid + my \grid-size = (rad * 2)+1; + my @grid = [ [ " " xx grid-size ] xx grid-size ]; + my Int $x = 0; + my Int $y = rad; + my Int $d = 3 - (2 * rad); + my \c = rad; + repeat { + @grid[c+$y][c+$x] = SYM; + @grid[c-$y][c+$x] = SYM; + @grid[c-$y][c-$x] = SYM; + @grid[c+$y][c-$x] = SYM; + @grid[c+$x][c+$y] = SYM; + @grid[c-$x][c+$y] = SYM; + @grid[c-$x][c-$y] = SYM; + @grid[c+$x][c-$y] = SYM; + if ( $d < 0 ) { + $d = $d + (4 * $x) + 6 + } else { + $d = $d + 4 * ( $x - $y) + 10; + $y--; + } + $x++; + } while ($x <= $y); + .say for @grid.map( *.join("") ); +} + +sub draw-cross( \rad ) { + (" " x rad ~ SYM).say for 1..^rad; + (" " ~ (SYM x (rad*2)-1)).say; + (" " x rad ~ SYM).say for 1..^rad; +} -- cgit From 6d12a38472aa39e44be069f9600f9aa87c63699c Mon Sep 17 00:00:00 2001 From: drbaggy Date: Mon, 2 Aug 2021 10:57:33 +0100 Subject: first pass at ch-2 --- challenge-124/james-smith/perl/ch-2.pl | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/challenge-124/james-smith/perl/ch-2.pl b/challenge-124/james-smith/perl/ch-2.pl index 2348c8b946..005a10e8f8 100644 --- a/challenge-124/james-smith/perl/ch-2.pl +++ b/challenge-124/james-smith/perl/ch-2.pl @@ -8,15 +8,30 @@ use Test::More; use Benchmark qw(cmpthese timethis); use Data::Dumper qw(Dumper); -my @TESTS = ( - [ 0, 1 ], -); - -is( my_function($_->[0]), $_->[1] ) foreach @TESTS; - done_testing(); -sub my_function { - return 1; +match_teams( map { $_*10 } 1..10 ); +match_teams( qw(10 -15 20 30 -25 0 5 40 -5) ); + +sub match_teams { + my @n = @_; + my $diff = shift @n; + my $best = []; + separate( \@n, 1 + int(@n/2), [$diff], [], $diff, $best ); + say "Team 1: [@{$best->[0]}]; Team 2[@{$best->[1]}]; difference $best->[2]"; + sub separate { + my($nums,$maxsize,$team1,$team2,$diff,$be) = @_; + if(@{$nums}==0) { + unless( defined $be->[0] && abs $diff>=$be->[2] ) { + $be->[0] = $team1; + $be->[1] = $team2; + $be->[2] = abs $diff; + } + return; + } + my $next = shift @{$nums}; + separate( [@{$nums}], $maxsize, [@{$team1},$next], $team2, $diff+$next, $be ) if @{$team1} < $maxsize; + separate( [@{$nums}], $maxsize, $team1, [@{$team2},$next], $diff-$next, $be ) if @{$team2} < $maxsize; + } } -- cgit From 7995d5f5700d575afe9554f8857d2bab02297c39 Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 2 Aug 2021 13:44:32 +0200 Subject: Tests for week 124 --- challenge-124/abigail/t/ctest.ini | 8 ++++++++ challenge-124/abigail/t/input-1-1 | 0 challenge-124/abigail/t/input-2-1 | 2 ++ challenge-124/abigail/t/output-2-1.exp | 4 ++++ 4 files changed, 14 insertions(+) create mode 100644 challenge-124/abigail/t/ctest.ini create mode 100644 challenge-124/abigail/t/input-1-1 create mode 100644 challenge-124/abigail/t/input-2-1 create mode 100644 challenge-124/abigail/t/output-2-1.exp diff --git a/challenge-124/abigail/t/ctest.ini b/challenge-124/abigail/t/ctest.ini new file mode 100644 index 0000000000..126831bc8e --- /dev/null +++ b/challenge-124/abigail/t/ctest.ini @@ -0,0 +1,8 @@ +# +# Configuration file for running tests, using ctest. +# See https://github.com/Abigail/Misc/blob/master/ctest +# + +[names] +1-1 = Fixed output +2-1 = Given Examples diff --git a/challenge-124/abigail/t/input-1-1 b/challenge-124/abigail/t/input-1-1 new file mode 100644 index 0000000000..e69de29bb2 diff --git a/challenge-124/abigail/t/input-2-1 b/challenge-124/abigail/t/input-2-1 new file mode 100644 index 0000000000..f4c3a07582 --- /dev/null +++ b/challenge-124/abigail/t/input-2-1 @@ -0,0 +1,2 @@ +10 20 30 40 50 60 70 80 90 100 +10 -15 20 30 -25 0 5 40 -5 diff --git a/challenge-124/abigail/t/output-2-1.exp b/challenge-124/abigail/t/output-2-1.exp new file mode 100644 index 0000000000..d97454eade --- /dev/null +++ b/challenge-124/abigail/t/output-2-1.exp @@ -0,0 +1,4 @@ +30 40 60 70 80 +10 20 50 90 100 +30 0 5 -5 +10 -15 20 -25 40 -- cgit From 282c689388854d7ffbdfd9d621f54eb89d31efa8 Mon Sep 17 00:00:00 2001 From: Kjetil S Date: Mon, 2 Aug 2021 13:58:09 +0200 Subject: challenge 124, ch-1.pl and ch-2.pl --- challenge-124/kjetillll/perl/ch-1.pl | 2 ++ challenge-124/kjetillll/perl/ch-2.pl | 31 +++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 challenge-124/kjetillll/perl/ch-1.pl create mode 100644 challenge-124/kjetillll/perl/ch-2.pl diff --git a/challenge-124/kjetillll/perl/ch-1.pl b/challenge-124/kjetillll/perl/ch-1.pl new file mode 100644 index 0000000000..dbfb4cbf8a --- /dev/null +++ b/challenge-124/kjetillll/perl/ch-1.pl @@ -0,0 +1,2 @@ +#!/usr/bin/env perl +print qx(curl -si https://theweeklychallenge.org/blog/perl-weekly-challenge-124/)=~m|([\s^]+)| ? $1 : '' diff --git a/challenge-124/kjetillll/perl/ch-2.pl b/challenge-124/kjetillll/perl/ch-2.pl new file mode 100644 index 0000000000..17bf7bb83e --- /dev/null +++ b/challenge-124/kjetillll/perl/ch-2.pl @@ -0,0 +1,31 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +sub sum{my$s;map$s+=$_,@_;$s} + +sub div{ + my %least; + for my $div (0..2**@_-1){ + my @ss=([],[]); + push( @{ $ss[$div%2] }, $_) and $div>>=1 for @_; + next if @{$ss[0]} != @{$ss[1]} + @_%2; + my $diff=abs( sum(@{$ss[0]}) - sum(@{$ss[1]}) ); + %least=(diff=>$diff,subsets=>\@ss) + if not exists $least{diff} + or $diff < $least{diff}; + } + @{$least{subsets}} +} + +#Run on input list given as command line args +#or two test cases if no input args is given. + +my @cases = @ARGV ? ( [@ARGV] ) + : ( [10, 20, 30, 40, 50, 60, 70, 80, 90, 100], + [10, -15, 20, 30, -25, 0, 5, 40, -5] ); +for ( @cases ) { + print "-" x 50, "\n"; + print "Input: @$_\n"; + print "Output sum ".sum(@$_).": @$_\n" for div(@$_); +} -- cgit From e685df4fffef7af82623d6ec92a06fe7bc9f5139 Mon Sep 17 00:00:00 2001 From: Kjetil S Date: Mon, 2 Aug 2021 14:11:23 +0200 Subject: challenge 124, ch-1.pl and ch-2.pl --- challenge-124/kjetillll/perl/README | 1 + 1 file changed, 1 insertion(+) create mode 100644 challenge-124/kjetillll/perl/README diff --git a/challenge-124/kjetillll/perl/README b/challenge-124/kjetillll/perl/README new file mode 100644 index 0000000000..15198597ff --- /dev/null +++ b/challenge-124/kjetillll/perl/README @@ -0,0 +1 @@ +Solution by kjetillll -- cgit From bec1ced3637dd6309e4b844370107e29c8b724e9 Mon Sep 17 00:00:00 2001 From: Kjetil S Date: Mon, 2 Aug 2021 14:12:44 +0200 Subject: challenge 124, ch-1.pl and ch-2.pl --- challenge-124/kjetillll/README | 1 + challenge-124/kjetillll/perl/README | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 challenge-124/kjetillll/README delete mode 100644 challenge-124/kjetillll/perl/README diff --git a/challenge-124/kjetillll/README b/challenge-124/kjetillll/README new file mode 100644 index 0000000000..15198597ff --- /dev/null +++ b/challenge-124/kjetillll/README @@ -0,0 +1 @@ +Solution by kjetillll diff --git a/challenge-124/kjetillll/perl/README b/challenge-124/kjetillll/perl/README deleted file mode 100644 index 15198597ff..0000000000 --- a/challenge-124/kjetillll/perl/README +++ /dev/null @@ -1 +0,0 @@ -Solution by kjetillll -- cgit From 5f95c54ed2bbe846d6341eec2a2cb38c567cc62c Mon Sep 17 00:00:00 2001 From: chirvasitua Date: Mon, 2 Aug 2021 08:20:07 -0400 Subject: 1st commit on 124_raku --- challenge-124/stuart-little/raku/ch-1.raku | 24 ++++++++++++++++++++++++ challenge-124/stuart-little/raku/ch-2.raku | 22 ++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100755 challenge-124/stuart-little/raku/ch-1.raku create mode 100755 challenge-124/stuart-little/raku/ch-2.raku diff --git a/challenge-124/stuart-little/raku/ch-1.raku b/challenge-124/stuart-little/raku/ch-1.raku new file mode 100755 index 0000000000..bfd2a26910 --- /dev/null +++ b/challenge-124/stuart-little/raku/ch-1.raku @@ -0,0 +1,24 @@ +#!/usr/bin/env raku +use v6; + +# run