diff options
Diffstat (limited to 'challenge-109')
| -rwxr-xr-x | challenge-109/roger-bell-west/perl/ch-1.pl | 20 | ||||
| -rwxr-xr-x | challenge-109/roger-bell-west/perl/ch-2.pl | 31 | ||||
| -rwxr-xr-x | challenge-109/roger-bell-west/python/ch-1.py | 20 | ||||
| -rwxr-xr-x | challenge-109/roger-bell-west/python/ch-2.py | 26 | ||||
| -rwxr-xr-x | challenge-109/roger-bell-west/raku/ch-1.p6 | 20 | ||||
| -rwxr-xr-x | challenge-109/roger-bell-west/raku/ch-2.p6 | 27 | ||||
| -rwxr-xr-x | challenge-109/roger-bell-west/ruby/ch-1.rb | 19 | ||||
| -rwxr-xr-x | challenge-109/roger-bell-west/ruby/ch-2.rb | 29 | ||||
| -rwxr-xr-x | challenge-109/roger-bell-west/rust/ch-1.rs | 21 | ||||
| -rw-r--r-- | challenge-109/roger-bell-west/rust/ch-2.rs | 29 |
10 files changed, 242 insertions, 0 deletions
diff --git a/challenge-109/roger-bell-west/perl/ch-1.pl b/challenge-109/roger-bell-west/perl/ch-1.pl new file mode 100755 index 0000000000..d9c2df80ba --- /dev/null +++ b/challenge-109/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,20 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use List::Util qw(sum); + +use Test::More tests => 1; + +is_deeply(chowla(20),[0, 0, 0, 2, 0, 5, 0, 6, 3, 7, 0, 15, 0, 9, 8, 14, 0, 20, 0, 21],'example 1'); + +sub chowla { + my $count=shift; + my @a; + foreach my $n (1..$count) { + push @a,sum(0,grep {$n % $_ == 0} (2..int($n/2))); + } + return \@a; +} + diff --git a/challenge-109/roger-bell-west/perl/ch-2.pl b/challenge-109/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..a2494b6e0d --- /dev/null +++ b/challenge-109/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,31 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Algorithm::Permute; + +use Test::More tests => 3; + +{ + my @q=@{foursquare(1..7)}; + is($q[0],$q[2]+$q[3],'test 1'); + is($q[1]+$q[2],$q[4]+$q[5],'test 2'); + is($q[3]+$q[4],$q[6],'test 3'); +} + +sub foursquare { + my @in=@_; + my @sol; + Algorithm::Permute::permute { + my $b=$in[1]+$in[2]+$in[3]; + if ($in[0]+$in[1]==$b) { + my $c=$in[3]+$in[4]+$in[5]; + if ($b==$c && $c == $in[5]+$in[6]) { + @sol=@in; + } + } + } @in; + return \@sol; +} + diff --git a/challenge-109/roger-bell-west/python/ch-1.py b/challenge-109/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..52daa1c69d --- /dev/null +++ b/challenge-109/roger-bell-west/python/ch-1.py @@ -0,0 +1,20 @@ +#! /usr/bin/python3 + +import unittest + +def chowla(count): + a=[] + for n in range(1,count+1): + s=0 + for i in range(2,n): + if n % i == 0: + s += i + a.append(s) + return a + +class TestChowla(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(chowla(20),[0, 0, 0, 2, 0, 5, 0, 6, 3, 7, 0, 15, 0, 9, 8, 14, 0, 20, 0, 21],'example 1') + +unittest.main() diff --git a/challenge-109/roger-bell-west/python/ch-2.py b/challenge-109/roger-bell-west/python/ch-2.py new file mode 100755 index 0000000000..83c0586833 --- /dev/null +++ b/challenge-109/roger-bell-west/python/ch-2.py @@ -0,0 +1,26 @@ +#! /usr/bin/python3 + +import unittest + +from itertools import permutations + +def foursquare(src): + sol=[] + for t in permutations(src): + b=t[1]+t[2]+t[3] + if t[0]+t[1]==b: + c=t[3]+t[4]+t[5] + if b==c and c == t[5]+t[6]: + sol=t + break + return sol + +class TestFoursquare(unittest.TestCase): + + def test_ex1(self): + q=foursquare([1,2,3,4,5,6,7]) + self.assertEqual(q[0],q[2]+q[3],'test 1') + self.assertEqual(q[1]+q[2],q[4]+q[5],'test 2') + self.assertEqual(q[3]+q[4],q[6],'test 3') + +unittest.main() diff --git a/challenge-109/roger-bell-west/raku/ch-1.p6 b/challenge-109/roger-bell-west/raku/ch-1.p6 new file mode 100755 index 0000000000..ea5d3662ec --- /dev/null +++ b/challenge-109/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,20 @@ +#! /usr/bin/perl6 + +use Test; + +plan 1; + +is-deeply(chowla(20),[0, 0, 0, 2, 0, 5, 0, 6, 3, 7, 0, 15, 0, 9, 8, 14, 0, 20, 0, 21],'example 1'); + +sub chowla($count) { + my @a; + for 1..$count -> $n { + push @a,sum(gather { + take 0; + for (2..floor($n/2)) { + take $_ if $n %% $_ + } + }); + } + return @a; +} diff --git a/challenge-109/roger-bell-west/raku/ch-2.p6 b/challenge-109/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..e4574fe2cc --- /dev/null +++ b/challenge-109/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,27 @@ +#! /usr/bin/perl6 + +use Test; + +plan 3; + +{ + my @q=foursquare(1..7); + is(@q[0],@q[2]+@q[3],'test 1'); + is(@q[1]+@q[2],@q[4]+@q[5],'test 2'); + is(@q[3]+@q[4],@q[6],'test 3'); +} + +sub foursquare(@in) { + my @sol; + for @in.permutations -> @t { + my $b=@t[1]+@t[2]+@t[3]; + if (@t[0]+@t[1]==$b) { + my $c=@t[3]+@t[4]+@t[5]; + if ($b==$c && $c == @t[5]+@t[6]) { + @sol=@t; + last; + } + } + } + return @sol; +} diff --git a/challenge-109/roger-bell-west/ruby/ch-1.rb b/challenge-109/roger-bell-west/ruby/ch-1.rb new file mode 100755 index 0000000000..5c6699c116 --- /dev/null +++ b/challenge-109/roger-bell-west/ruby/ch-1.rb @@ -0,0 +1,19 @@ +#! /usr/bin/ruby + +def chowla(count) + a=[] + 1.upto(count) do |n| + a.push(2.upto((n/2).floor).select{|i| n % i == 0}.sum) + end + return a +end + +require 'test/unit' + +class TestChowla < Test::Unit::TestCase + + def test_ex1 + assert_equal([0, 0, 0, 2, 0, 5, 0, 6, 3, 7, 0, 15, 0, 9, 8, 14, 0, 20, 0, 21],chowla(20)) + end + +end diff --git a/challenge-109/roger-bell-west/ruby/ch-2.rb b/challenge-109/roger-bell-west/ruby/ch-2.rb new file mode 100755 index 0000000000..ad294d792c --- /dev/null +++ b/challenge-109/roger-bell-west/ruby/ch-2.rb @@ -0,0 +1,29 @@ +#! /usr/bin/ruby + +def foursquare(src) + sol=[] + src.permutation do |t| + b=t[1]+t[2]+t[3] + if t[0]+t[1]==b then + c=t[3]+t[4]+t[5] + if b==c && c == t[5]+t[6] then + sol=t + break + end + end + end + return sol +end + +require 'test/unit' + +class TestFoursquare < Test::Unit::TestCase + + def test_ex1 + q=foursquare([1,2,3,4,5,6,7]) + assert_equal(q[0],q[2]+q[3]) + assert_equal(q[1]+q[2],q[4]+q[5]) + assert_equal(q[3]+q[4],q[6]) + end + +end diff --git a/challenge-109/roger-bell-west/rust/ch-1.rs b/challenge-109/roger-bell-west/rust/ch-1.rs new file mode 100755 index 0000000000..c9776825b0 --- /dev/null +++ b/challenge-109/roger-bell-west/rust/ch-1.rs @@ -0,0 +1,21 @@ +#! /bin/sh +//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x; rm -f ${0}x ; exit + +#[test] +fn test_ex1() { + assert_eq!(chowla(20),vec![0, 0, 0, 2, 0, 5, 0, 6, 3, 7, 0, 15, 0, 9, 8, 14, 0, 20, 0, 21]); +} + +fn chowla(count: usize) -> Vec<usize> { + let mut a: Vec<usize>=vec![]; + for n in 1..=count { + let mut s=0; + for i in 2..=n/2 { + if n % i == 0 { + s += i + } + } + a.push(s); + } + return a; +} diff --git a/challenge-109/roger-bell-west/rust/ch-2.rs b/challenge-109/roger-bell-west/rust/ch-2.rs new file mode 100644 index 0000000000..a7f46258c0 --- /dev/null +++ b/challenge-109/roger-bell-west/rust/ch-2.rs @@ -0,0 +1,29 @@ +use permutohedron::LexicalPermutation; + +#[test] +fn test_ex1() { + let q=foursquare((1..=7).collect::<Vec<i32>>()); + assert_eq!(q[0],q[2]+q[3]); + assert_eq!(q[1]+q[2],q[4]+q[5]); + assert_eq!(q[3]+q[4],q[6]); +} + +fn foursquare(src: Vec<i32>) -> Vec<i32> { + let mut t=src; + let mut sol: Vec<i32>=vec![]; + t.sort(); + loop { + let b=t[1]+t[2]+t[3]; + if t[0]+t[1]==b { + let c=t[3]+t[4]+t[5]; + if b==c && c == t[5]+t[6] { + sol=t; + break; + } + } + if !t.next_permutation() { + break; + } + } + return sol; +} |
