From 0bdf5928c01ed343627fb572ba43ec2e77bd43f7 Mon Sep 17 00:00:00 2001 From: Roger Bell_West Date: Mon, 17 May 2021 12:59:43 +0100 Subject: Solutions for challenge #113 --- challenge-113/roger-bell-west/perl/ch-1.pl | 26 ++++++++++++++++++++++ challenge-113/roger-bell-west/perl/ch-2.pl | 27 +++++++++++++++++++++++ challenge-113/roger-bell-west/python/ch-1.py | 27 +++++++++++++++++++++++ challenge-113/roger-bell-west/python/ch-2.py | 23 ++++++++++++++++++++ challenge-113/roger-bell-west/raku/ch-1.p6 | 24 +++++++++++++++++++++ challenge-113/roger-bell-west/raku/ch-2.p6 | 25 ++++++++++++++++++++++ challenge-113/roger-bell-west/ruby/ch-1.rb | 32 ++++++++++++++++++++++++++++ challenge-113/roger-bell-west/ruby/ch-2.rb | 29 +++++++++++++++++++++++++ challenge-113/roger-bell-west/rust/ch-1.rs | 28 ++++++++++++++++++++++++ challenge-113/roger-bell-west/rust/ch-2.rs | 25 ++++++++++++++++++++++ 10 files changed, 266 insertions(+) create mode 100755 challenge-113/roger-bell-west/perl/ch-1.pl create mode 100755 challenge-113/roger-bell-west/perl/ch-2.pl create mode 100755 challenge-113/roger-bell-west/python/ch-1.py create mode 100755 challenge-113/roger-bell-west/python/ch-2.py create mode 100755 challenge-113/roger-bell-west/raku/ch-1.p6 create mode 100755 challenge-113/roger-bell-west/raku/ch-2.p6 create mode 100755 challenge-113/roger-bell-west/ruby/ch-1.rb create mode 100755 challenge-113/roger-bell-west/ruby/ch-2.rb create mode 100644 challenge-113/roger-bell-west/rust/ch-1.rs create mode 100755 challenge-113/roger-bell-west/rust/ch-2.rs diff --git a/challenge-113/roger-bell-west/perl/ch-1.pl b/challenge-113/roger-bell-west/perl/ch-1.pl new file mode 100755 index 0000000000..6e2769f7a2 --- /dev/null +++ b/challenge-113/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,26 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Test::More tests => 2; + +is(ri(25,7),0,'example 1'); +is(ri(24,7),1,'example 2'); + +sub ri { + my ($n,$d)=@_; + my @e=grep /$d/,(1..$n); + foreach my $i (1..(1<<(scalar @e))-1) { + my $s=0; + foreach my $ii (0..$#e) { + if (1<<$ii & $i) { + $s+=$e[$ii]; + } + } + if ($s==$n) { + return 1; + } + } + return 0; +} diff --git a/challenge-113/roger-bell-west/perl/ch-2.pl b/challenge-113/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..d7d8004355 --- /dev/null +++ b/challenge-113/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,27 @@ +#! /usr/bin/perl + +use strict; +use warnings; + +use Test::More tests => 1; + +is_deeply(rbt([1,2,3,4,-1,5,6,-1,7]),[27,26,25,24,-1,23,22,-1,21],'example 1'); + +sub rbt { + my $ti=shift; + my $s=0; + foreach my $n (@{$ti}) { + if ($n>=0) { + $s+=$n; + } + } + my @to; + foreach my $n (@{$ti}) { + if ($n>=0) { + push @to,$s-$n; + } else { + push @to,$n; + } + } + return \@to; +} diff --git a/challenge-113/roger-bell-west/python/ch-1.py b/challenge-113/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..4252d22ba5 --- /dev/null +++ b/challenge-113/roger-bell-west/python/ch-1.py @@ -0,0 +1,27 @@ +#! /usr/bin/python3 + +import unittest +import re + +def ri(n,d): + dd=re.compile(".*"+str(d)+".*") + e=[i for i in range(1,n+1) if re.match(dd,str(i))] + for i in range(1,1<0: + s += n + to=list() + for n in ti: + if n>0: + to.append(s-n) + else: + to.append(n) + return to + +class TestRbt(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(rbt([1,2,3,4,-1,5,6,-1,7]),[27,26,25,24,-1,23,22,-1,21],'example 1') + +unittest.main() diff --git a/challenge-113/roger-bell-west/raku/ch-1.p6 b/challenge-113/roger-bell-west/raku/ch-1.p6 new file mode 100755 index 0000000000..99a72b99b6 --- /dev/null +++ b/challenge-113/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,24 @@ +#! /usr/bin/perl6 + +use Test; + +plan 2; + +is(ri(25,7),0,'example 1'); +is(ri(24,7),1,'example 2'); + +sub ri($n,$d) { + my @e=grep /$d/,(1..$n); + for 1..1+<@e.elems-1 -> $i { + my $s=0; + for 0..@e.elems-1 -> $ii { + if (1+<$ii +& $i) { + $s+=@e[$ii]; + } + } + if ($s==$n) { + return 1; + } + } + return 0; +} diff --git a/challenge-113/roger-bell-west/raku/ch-2.p6 b/challenge-113/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..d416e0c7a7 --- /dev/null +++ b/challenge-113/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,25 @@ +#! /usr/bin/perl6 + +use Test; + +plan 1; + +is-deeply(rbt([1,2,3,4,-1,5,6,-1,7]),[27,26,25,24,-1,23,22,-1,21],'example 1'); + +sub rbt(@ti) { + my $s=0; + for @ti -> $n { + if ($n>=0) { + $s+=$n; + } + } + my @to; + for @ti -> $n { + if ($n>=0) { + push @to,$s-$n; + } else { + push @to,$n; + } + } + return @to; +} \ No newline at end of file diff --git a/challenge-113/roger-bell-west/ruby/ch-1.rb b/challenge-113/roger-bell-west/ruby/ch-1.rb new file mode 100755 index 0000000000..3e95e669b2 --- /dev/null +++ b/challenge-113/roger-bell-west/ruby/ch-1.rb @@ -0,0 +1,32 @@ +#! /usr/bin/ruby + +def ri(n,d) + dd=Regexp.new(d.to_s) + e=1.upto(n).find_all {|i| i.to_s =~ dd} + 1.upto(1<0 then + s += n + end + } + to=[] + ti.each {|n| + if n>0 then + to.push(s-n) + else + to.push(n) + end + } + return to +end + +require 'test/unit' + +class TestRbt < Test::Unit::TestCase + + def test_ex1 + assert_equal([27,26,25,24,-1,23,22,-1,21],rbt([1,2,3,4,-1,5,6,-1,7])) + end + +end diff --git a/challenge-113/roger-bell-west/rust/ch-1.rs b/challenge-113/roger-bell-west/rust/ch-1.rs new file mode 100644 index 0000000000..d930b4d363 --- /dev/null +++ b/challenge-113/roger-bell-west/rust/ch-1.rs @@ -0,0 +1,28 @@ +use regex::Regex; + +#[test] +fn test_ex1() { + assert_eq!(ri(25,7),0); +} + +#[test] +fn test_ex2() { + assert_eq!(ri(24,7),1); +} + +fn ri(n: u64,d:u64) -> u8 { + let dd=Regex::new(&d.to_string()).unwrap(); + let e=(1..=n).filter(|i| dd.is_match(&i.to_string())).collect::>(); + for i in 1..1< 0 { + s += e[ii] + } + } + if s==n { + return 1; + } + } + return 0; +} diff --git a/challenge-113/roger-bell-west/rust/ch-2.rs b/challenge-113/roger-bell-west/rust/ch-2.rs new file mode 100755 index 0000000000..5a423fbc9a --- /dev/null +++ b/challenge-113/roger-bell-west/rust/ch-2.rs @@ -0,0 +1,25 @@ +#! /bin/sh +//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x; rm -f ${0}x ; exit + +#[test] +fn test_ex1() { + assert_eq!(rbt(vec![1,2,3,4,-1,5,6,-1,7]),vec![27,26,25,24,-1,23,22,-1,21]); +} + +fn rbt (ti: Vec) -> Vec { + let mut s: i64=0; + for n in &ti { + if *n>0 { + s += n; + } + } + let mut to=vec![]; + for n in ti { + if n>0 { + to.push(s-n); + } else { + to.push(n); + } + } + return to; +} -- cgit