aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xchallenge-116/roger-bell-west/perl/ch-1.pl38
-rwxr-xr-xchallenge-116/roger-bell-west/perl/ch-2.pl23
-rwxr-xr-xchallenge-116/roger-bell-west/python/ch-1.py42
-rwxr-xr-xchallenge-116/roger-bell-west/python/ch-2.py28
-rwxr-xr-xchallenge-116/roger-bell-west/raku/ch-1.p636
-rwxr-xr-xchallenge-116/roger-bell-west/raku/ch-2.p621
-rwxr-xr-xchallenge-116/roger-bell-west/ruby/ch-1.rb51
-rwxr-xr-xchallenge-116/roger-bell-west/ruby/ch-2.rb34
-rwxr-xr-xchallenge-116/roger-bell-west/rust/ch-1.rs53
-rwxr-xr-xchallenge-116/roger-bell-west/rust/ch-2.rs31
10 files changed, 357 insertions, 0 deletions
diff --git a/challenge-116/roger-bell-west/perl/ch-1.pl b/challenge-116/roger-bell-west/perl/ch-1.pl
new file mode 100755
index 0000000000..6981900498
--- /dev/null
+++ b/challenge-116/roger-bell-west/perl/ch-1.pl
@@ -0,0 +1,38 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 5;
+
+is_deeply(ns(1234),[1,2,3,4],'example 1');
+is_deeply(ns(91011),[9,10,11],'example 2');
+is_deeply(ns(10203),[10203],'example 3');
+is_deeply(ns(910911),[910,911],'example 4');
+is_deeply(ns(9109119),[9109119],'example 5');
+
+sub ns {
+ my $n=shift;
+ my $l=length($n);
+ foreach my $sl (1..int($l/2)) {
+ my $i=$sl;
+ my @e=(substr($n,0,$sl));
+ while (1) {
+ if ($l-$i == 0) {
+ last;
+ }
+ push @e,$e[-1]+1;
+ my $el=length($e[-1]);
+ if ($l-$i < $el ||
+ substr($n,$i,$el) ne $e[-1]) {
+ @e=();
+ last;
+ }
+ $i+=$el;
+ }
+ if (@e) {
+ return \@e;
+ }
+ }
+ return [$n];
+}
diff --git a/challenge-116/roger-bell-west/perl/ch-2.pl b/challenge-116/roger-bell-west/perl/ch-2.pl
new file mode 100755
index 0000000000..f7a983e4a6
--- /dev/null
+++ b/challenge-116/roger-bell-west/perl/ch-2.pl
@@ -0,0 +1,23 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 3;
+
+is(sos(34),1,'example 1');
+is(sos(50),1,'example 2');
+is(sos(52),0,'example 3');
+
+sub sos {
+ my $n=shift;
+ my $t=0;
+ foreach (split '',$n) {
+ $t+=$_*$_;
+ }
+ my $s=int(sqrt($t));
+ if ($s*$s==$t) {
+ return 1;
+ }
+ return 0;
+}
diff --git a/challenge-116/roger-bell-west/python/ch-1.py b/challenge-116/roger-bell-west/python/ch-1.py
new file mode 100755
index 0000000000..5ae072ca37
--- /dev/null
+++ b/challenge-116/roger-bell-west/python/ch-1.py
@@ -0,0 +1,42 @@
+#! /usr/bin/python3
+
+import unittest
+
+def ns(n):
+ ns=str(n)
+ l=len(ns)
+ for sl in range(1,int(l/2)+1):
+ i=sl
+ e=[int(ns[0:sl])]
+ while 1:
+ if l-i==0:
+ break
+ e.append(e[-1]+1)
+ es=str(e[-1])
+ el=len(es)
+ if l-i < el or ns[i:i+el] != es:
+ e=[]
+ break
+ i+=el
+ if len(e)>0:
+ return e
+ return [n]
+
+class TestNs(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(ns(1234),[1,2,3,4],'example 1')
+
+ def test_ex2(self):
+ self.assertEqual(ns(91011),[9,10,11],'example 2')
+
+ def test_ex3(self):
+ self.assertEqual(ns(10203),[10203],'example 3')
+
+ def test_ex4(self):
+ self.assertEqual(ns(910911),[910,911],'example 4')
+
+ def test_ex5(self):
+ self.assertEqual(ns(9109119),[9109119],'example 4')
+
+unittest.main()
diff --git a/challenge-116/roger-bell-west/python/ch-2.py b/challenge-116/roger-bell-west/python/ch-2.py
new file mode 100755
index 0000000000..cbe1ae5d13
--- /dev/null
+++ b/challenge-116/roger-bell-west/python/ch-2.py
@@ -0,0 +1,28 @@
+#! /usr/bin/python3
+
+import unittest
+
+from math import sqrt
+
+def sos(n):
+ t=0
+ for i in str(n):
+ ii=int(i)
+ t+=ii*ii
+ s=int(sqrt(t))
+ if s*s == t:
+ return 1
+ return 0
+
+class TestSos(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(sos(34),1,"example 1")
+
+ def test_ex2(self):
+ self.assertEqual(sos(50),1,"example 2")
+
+ def test_ex3(self):
+ self.assertEqual(sos(52),0,"example 3")
+
+unittest.main()
diff --git a/challenge-116/roger-bell-west/raku/ch-1.p6 b/challenge-116/roger-bell-west/raku/ch-1.p6
new file mode 100755
index 0000000000..19f4802722
--- /dev/null
+++ b/challenge-116/roger-bell-west/raku/ch-1.p6
@@ -0,0 +1,36 @@
+#! /usr/bin/perl6
+
+use Test;
+
+plan 5;
+
+is-deeply(ns(1234),[1,2,3,4],'example 1');
+is-deeply(ns(91011),[9,10,11],'example 2');
+is-deeply(ns(10203),[10203],'example 3');
+is-deeply(ns(910911),[910,911],'example 4');
+is-deeply(ns(9109119),[9109119],'example 5');
+
+sub ns($n) {
+ my $l=chars($n);
+ for 1..floor($l/2) -> $sl {
+ my $i=$sl;
+ my @e=(substr($n,0,$sl))+0;
+ while (1) {
+ if ($l-$i == 0) {
+ last;
+ }
+ push @e,@e[*-1]+1;
+ my $el=chars(@e[*-1]);
+ if ($l-$i < $el ||
+ substr($n,$i,$el) ne @e[*-1]) {
+ @e=();
+ last;
+ }
+ $i+=$el;
+ }
+ if (@e) {
+ return @e;
+ }
+ }
+ return [$n];
+}
diff --git a/challenge-116/roger-bell-west/raku/ch-2.p6 b/challenge-116/roger-bell-west/raku/ch-2.p6
new file mode 100755
index 0000000000..5b727aa3b6
--- /dev/null
+++ b/challenge-116/roger-bell-west/raku/ch-2.p6
@@ -0,0 +1,21 @@
+#! /usr/bin/perl6
+
+use Test;
+
+plan 3;
+
+is(sos(34),1,'example 1');
+is(sos(50),1,'example 2');
+is(sos(52),0,'example 3');
+
+sub sos($n) {
+ my $t=0;
+ for $n.comb() {
+ $t+=$_*$_;
+ }
+ my $s=floor(sqrt($t));
+ if ($s*$s==$t) {
+ return 1;
+ }
+ return 0;
+}
diff --git a/challenge-116/roger-bell-west/ruby/ch-1.rb b/challenge-116/roger-bell-west/ruby/ch-1.rb
new file mode 100755
index 0000000000..f5aced94f4
--- /dev/null
+++ b/challenge-116/roger-bell-west/ruby/ch-1.rb
@@ -0,0 +1,51 @@
+#! /usr/bin/ruby
+# coding: utf-8
+
+require 'test/unit'
+
+def ns(n)
+ ns=n.to_s
+ l=ns.length
+ 1.upto((l/2).to_i) {|sl|
+ i=sl
+ e=[ns[0..sl-1].to_i]
+ while 1
+ if l-i==0 then
+ break
+ end
+ e.push(e[-1]+1);
+ es=e[-1].to_s;
+ el=es.length
+ if l-i < el ||
+ ns[i..i+el-1] != es then
+ e=[]
+ break
+ end
+ i+=el
+ end
+ if e.length>0 then
+ return e
+ end
+ }
+ return [n]
+end
+
+class TestNs < Test::Unit::TestCase
+
+ def test_ex1
+ assert_equal([1,2,3,4],ns(1234))
+ end
+ def test_ex2
+ assert_equal([9,10,11],ns(91011))
+ end
+ def test_ex3
+ assert_equal([10203],ns(10203))
+ end
+ def test_ex4
+ assert_equal([910,911],ns(910911))
+ end
+ def test_ex5
+ assert_equal([9109119],ns(9109119))
+ end
+
+end
diff --git a/challenge-116/roger-bell-west/ruby/ch-2.rb b/challenge-116/roger-bell-west/ruby/ch-2.rb
new file mode 100755
index 0000000000..09bff45948
--- /dev/null
+++ b/challenge-116/roger-bell-west/ruby/ch-2.rb
@@ -0,0 +1,34 @@
+#! /usr/bin/ruby
+# coding: utf-8
+
+require 'test/unit'
+
+def sos(n)
+ t=0
+ n.to_s.chars {|i|
+ ii=i.to_i
+ t+=ii*ii
+ }
+ s=Integer.sqrt(t)
+ if s*s==t then
+ return 1
+ end
+ return 0
+end
+
+
+class TestSos < Test::Unit::TestCase
+
+ def test_ex1
+ assert_equal(1,sos(34))
+ end
+
+ def test_ex2
+ assert_equal(1,sos(50))
+ end
+
+ def test_ex3
+ assert_equal(0,sos(52))
+ end
+
+end
diff --git a/challenge-116/roger-bell-west/rust/ch-1.rs b/challenge-116/roger-bell-west/rust/ch-1.rs
new file mode 100755
index 0000000000..15f474eada
--- /dev/null
+++ b/challenge-116/roger-bell-west/rust/ch-1.rs
@@ -0,0 +1,53 @@
+#! /bin/sh
+//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x; rm -f ${0}x ; exit
+
+#[test]
+fn test_ex1() {
+ assert_eq!(ns(1234),vec![1,2,3,4]);
+}
+
+#[test]
+fn test_ex2() {
+ assert_eq!(ns(91011),vec![9,10,11]);
+}
+
+#[test]
+fn test_ex3() {
+ assert_eq!(ns(10203),vec![10203]);
+}
+
+#[test]
+fn test_ex4() {
+ assert_eq!(ns(910911),vec![910,911]);
+}
+
+#[test]
+fn test_ex5() {
+ assert_eq!(ns(9109119),vec![9109119]);
+}
+
+fn ns (n: u32) -> Vec<u32> {
+ let ns=n.to_string();
+ let l=ns.len();
+ for sl in 1..l/2+1 {
+ let mut i=sl;
+ let mut e=vec![ns[0..sl].parse::<u32>().unwrap()];
+ loop {
+ if l==i {
+ break;
+ }
+ e.push(e.last().unwrap()+1);
+ let es=e.last().unwrap().to_string();
+ let el=es.len();
+ if l-i < el || ns[i..i+el] != es {
+ e=vec![];
+ break;
+ }
+ i+=el
+ }
+ if e.len()>0 {
+ return e
+ }
+ }
+ return vec![n];
+}
diff --git a/challenge-116/roger-bell-west/rust/ch-2.rs b/challenge-116/roger-bell-west/rust/ch-2.rs
new file mode 100755
index 0000000000..0d26a9a810
--- /dev/null
+++ b/challenge-116/roger-bell-west/rust/ch-2.rs
@@ -0,0 +1,31 @@
+#! /bin/sh
+//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x; rm -f ${0}x ; exit
+
+#[test]
+fn test_ex1() {
+ assert_eq!(sos(34),1);
+}
+
+#[test]
+fn test_ex2() {
+ assert_eq!(sos(50),1);
+}
+
+#[test]
+fn test_ex3() {
+ assert_eq!(sos(52),0);
+}
+
+fn sos (n: u32) -> u8 {
+ let mut t=0;
+ for i in n.to_string().chars() {
+ let ii=i.to_digit(10).unwrap();
+ t+=ii*ii;
+ }
+ let s=(t as f64).sqrt() as u32;
+ if s*s == t {
+ return 1;
+ } else {
+ return 0;
+ }
+}