From 64e4444d06a421e83688678fb47e8c5d8f4ba987 Mon Sep 17 00:00:00 2001 From: Roger Bell_West Date: Tue, 20 Aug 2024 09:46:28 +0100 Subject: RogerBW solutions for challenge no. 283 --- challenge-283/roger-bell-west/crystal/ch-1.cr | 25 ++++++++ challenge-283/roger-bell-west/crystal/ch-2.cr | 24 +++++++ challenge-283/roger-bell-west/javascript/ch-1.js | 45 +++++++++++++ challenge-283/roger-bell-west/javascript/ch-2.js | 32 ++++++++++ challenge-283/roger-bell-west/kotlin/ch-1.kt | 41 ++++++++++++ challenge-283/roger-bell-west/kotlin/ch-2.kt | 29 +++++++++ challenge-283/roger-bell-west/lua/ch-1.lua | 47 ++++++++++++++ challenge-283/roger-bell-west/lua/ch-2.lua | 36 +++++++++++ challenge-283/roger-bell-west/perl/ch-1.pl | 23 +++++++ challenge-283/roger-bell-west/perl/ch-2.pl | 21 +++++++ challenge-283/roger-bell-west/postscript/ch-1.ps | 80 ++++++++++++++++++++++++ challenge-283/roger-bell-west/postscript/ch-2.ps | 71 +++++++++++++++++++++ challenge-283/roger-bell-west/python/ch-1.py | 27 ++++++++ challenge-283/roger-bell-west/python/ch-2.py | 24 +++++++ challenge-283/roger-bell-west/raku/ch-1.p6 | 21 +++++++ challenge-283/roger-bell-west/raku/ch-2.p6 | 19 ++++++ challenge-283/roger-bell-west/ruby/ch-1.rb | 32 ++++++++++ challenge-283/roger-bell-west/ruby/ch-2.rb | 29 +++++++++ challenge-283/roger-bell-west/rust/ch-1.rs | 31 +++++++++ challenge-283/roger-bell-west/rust/ch-2.rs | 21 +++++++ challenge-283/roger-bell-west/scala/ch-1.scala | 44 +++++++++++++ challenge-283/roger-bell-west/scala/ch-2.scala | 32 ++++++++++ challenge-283/roger-bell-west/tests.json | 32 ++++++++++ 23 files changed, 786 insertions(+) create mode 100755 challenge-283/roger-bell-west/crystal/ch-1.cr create mode 100755 challenge-283/roger-bell-west/crystal/ch-2.cr create mode 100755 challenge-283/roger-bell-west/javascript/ch-1.js create mode 100755 challenge-283/roger-bell-west/javascript/ch-2.js create mode 100644 challenge-283/roger-bell-west/kotlin/ch-1.kt create mode 100644 challenge-283/roger-bell-west/kotlin/ch-2.kt create mode 100755 challenge-283/roger-bell-west/lua/ch-1.lua create mode 100755 challenge-283/roger-bell-west/lua/ch-2.lua create mode 100755 challenge-283/roger-bell-west/perl/ch-1.pl create mode 100755 challenge-283/roger-bell-west/perl/ch-2.pl create mode 100644 challenge-283/roger-bell-west/postscript/ch-1.ps create mode 100644 challenge-283/roger-bell-west/postscript/ch-2.ps create mode 100755 challenge-283/roger-bell-west/python/ch-1.py create mode 100755 challenge-283/roger-bell-west/python/ch-2.py create mode 100755 challenge-283/roger-bell-west/raku/ch-1.p6 create mode 100755 challenge-283/roger-bell-west/raku/ch-2.p6 create mode 100755 challenge-283/roger-bell-west/ruby/ch-1.rb create mode 100755 challenge-283/roger-bell-west/ruby/ch-2.rb create mode 100755 challenge-283/roger-bell-west/rust/ch-1.rs create mode 100755 challenge-283/roger-bell-west/rust/ch-2.rs create mode 100644 challenge-283/roger-bell-west/scala/ch-1.scala create mode 100644 challenge-283/roger-bell-west/scala/ch-2.scala create mode 100644 challenge-283/roger-bell-west/tests.json diff --git a/challenge-283/roger-bell-west/crystal/ch-1.cr b/challenge-283/roger-bell-west/crystal/ch-1.cr new file mode 100755 index 0000000000..52315dc1f8 --- /dev/null +++ b/challenge-283/roger-bell-west/crystal/ch-1.cr @@ -0,0 +1,25 @@ +#! /usr/bin/crystal + +def uniquenumber(a) + c = Hash(Int32, Int32).new(default_value: 0) + a.each do |n| + c[n] += 1 + end + c.select{|k, v| v == 1}.map{|k, v| k}[0] +end + +require "spec" +describe "uniquenumber" do + it "test_ex1" do + uniquenumber([3, 3, 1]).should eq 1 + end + it "test_ex2" do + uniquenumber([3, 2, 4, 2, 4]).should eq 3 + end + it "test_ex3" do + uniquenumber([1]).should eq 1 + end + it "test_ex4" do + uniquenumber([4, 3, 1, 1, 1, 4]).should eq 3 + end +end diff --git a/challenge-283/roger-bell-west/crystal/ch-2.cr b/challenge-283/roger-bell-west/crystal/ch-2.cr new file mode 100755 index 0000000000..85550aefe2 --- /dev/null +++ b/challenge-283/roger-bell-west/crystal/ch-2.cr @@ -0,0 +1,24 @@ +#! /usr/bin/crystal + +def digitcountvalue(a) + c = Hash(Int32, Int32).new(default_value: 0) + a.each do |n| + c[n] += 1 + end + 0.upto(a.size - 1) do |ix| + if a[ix] != c[ix] + return false + end + end + true +end + +require "spec" +describe "digitcountvalue" do + it "test_ex1" do + digitcountvalue([1, 2, 1, 0]).should eq true + end + it "test_ex2" do + digitcountvalue([0, 3, 0]).should eq false + end +end diff --git a/challenge-283/roger-bell-west/javascript/ch-1.js b/challenge-283/roger-bell-west/javascript/ch-1.js new file mode 100755 index 0000000000..259805d837 --- /dev/null +++ b/challenge-283/roger-bell-west/javascript/ch-1.js @@ -0,0 +1,45 @@ +#! /usr/bin/node + +"use strict" + +function uniquenumber(a) { + let c = new Map(); + for (let p of a) { + if (c.has(p)) { + c.set(p,c.get(p)+1); + } else { + c.set(p,1); + } + } + for (let p of c.keys()) { + if (c.get(p) == 1) { + return p; + } + } + return -1; +} + +if (uniquenumber([3, 3, 1]) == 1) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (uniquenumber([3, 2, 4, 2, 4]) == 3) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (uniquenumber([1]) == 1) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (uniquenumber([4, 3, 1, 1, 1, 4]) == 3) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write("\n"); diff --git a/challenge-283/roger-bell-west/javascript/ch-2.js b/challenge-283/roger-bell-west/javascript/ch-2.js new file mode 100755 index 0000000000..cf24c061c9 --- /dev/null +++ b/challenge-283/roger-bell-west/javascript/ch-2.js @@ -0,0 +1,32 @@ +#! /usr/bin/node + +"use strict" + +function digitcountvalue(a) { + let c = new Map(); + for (let ix = 0; ix < a.length; ix++) { + c.set(ix, 0); + } + for (let p of a) { + c.set(p, c.get(p) + 1); + } + for (let ix = 0; ix < a.length; ix++) { + if (a[ix] != c.get(ix)) { + return false; + } + } + return true; +} + +if (digitcountvalue([1, 2, 1, 0])) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (!digitcountvalue([0, 3, 0])) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write("\n"); diff --git a/challenge-283/roger-bell-west/kotlin/ch-1.kt b/challenge-283/roger-bell-west/kotlin/ch-1.kt new file mode 100644 index 0000000000..037a2d70fb --- /dev/null +++ b/challenge-283/roger-bell-west/kotlin/ch-1.kt @@ -0,0 +1,41 @@ +fun uniquenumber(a: List): Int { + var c = mutableMapOf().withDefault({0}) + for (p in a) { + c.set(p, c.getValue(p) + 1) + } + for (p in c.keys) { + if (c.getValue(p) == 1) { + return p + } + } + return -1 +} + +fun main() { + + if (uniquenumber(listOf(3, 3, 1)) == 1) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (uniquenumber(listOf(3, 2, 4, 2, 4)) == 3) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (uniquenumber(listOf(1)) == 1) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (uniquenumber(listOf(4, 3, 1, 1, 1, 4)) == 3) { + print("Pass") + } else { + print("Fail") + } + println("") + +} diff --git a/challenge-283/roger-bell-west/kotlin/ch-2.kt b/challenge-283/roger-bell-west/kotlin/ch-2.kt new file mode 100644 index 0000000000..77807f17cd --- /dev/null +++ b/challenge-283/roger-bell-west/kotlin/ch-2.kt @@ -0,0 +1,29 @@ +fun digitcountvalue(a: List): Boolean { + var c = mutableMapOf().withDefault({0}) + for (p in a) { + c.set(p, c.getValue(p) + 1) + } + for (ix in 0 .. a.size - 1) { + if (a[ix] != c.getValue(ix)) { + return false + } + } + return true +} + +fun main() { + + if (digitcountvalue(listOf(1, 2, 1, 0))) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (!digitcountvalue(listOf(0, 3, 0))) { + print("Pass") + } else { + print("Fail") + } + println("") + +} diff --git a/challenge-283/roger-bell-west/lua/ch-1.lua b/challenge-283/roger-bell-west/lua/ch-1.lua new file mode 100755 index 0000000000..0aed7ca01b --- /dev/null +++ b/challenge-283/roger-bell-west/lua/ch-1.lua @@ -0,0 +1,47 @@ +#! /usr/bin/lua + +function uniquenumber(a) + local c = {} + for _, n in ipairs(a) do + if c[n] == nil then + c[n] = 1 + else + c[n] = c[n] + 1 + end + end + for k, v in pairs(c) do + if v == 1 then + return k + end + end + return -1 +end + +if uniquenumber({3, 3, 1}) == 1 then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if uniquenumber({3, 2, 4, 2, 4}) == 3 then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if uniquenumber({1}) == 1 then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if uniquenumber({4, 3, 1, 1, 1, 4}) == 3 then + io.write("Pass") +else + io.write("FAIL") +end +print("") + diff --git a/challenge-283/roger-bell-west/lua/ch-2.lua b/challenge-283/roger-bell-west/lua/ch-2.lua new file mode 100755 index 0000000000..ef6f8fda89 --- /dev/null +++ b/challenge-283/roger-bell-west/lua/ch-2.lua @@ -0,0 +1,36 @@ +#! /usr/bin/lua + +function digitcountvalue(a) + local c = {} + for ix = 1, #a do + c[ix - 1] = 0 + end + for _, n in ipairs(a) do + if c[n] == nil then + c[n] = 1 + else + c[n] = c[n] + 1 + end + end + for ix = 1, #a do + if a[ix] ~= c[ix - 1] then + return false + end + end + return true +end + +if digitcountvalue({1, 2, 1, 0}) then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if not digitcountvalue({0, 3, 0}) then + io.write("Pass") +else + io.write("FAIL") +end +print("") + diff --git a/challenge-283/roger-bell-west/perl/ch-1.pl b/challenge-283/roger-bell-west/perl/ch-1.pl new file mode 100755 index 0000000000..2a64c93691 --- /dev/null +++ b/challenge-283/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,23 @@ +#! /usr/bin/perl + +use strict; +use warnings; +use experimental 'signatures'; + +use Test::More tests => 4; + +is(uniquenumber([3, 3, 1]), 1, 'example 1'); +is(uniquenumber([3, 2, 4, 2, 4]), 3, 'example 2'); +is(uniquenumber([1]), 1, 'example 3'); +is(uniquenumber([4, 3, 1, 1, 1, 4]), 3, 'example 4'); + +sub uniquenumber($a) { + my %c; + map {$c{$_}++} @{$a}; + while (my ($k, $v) = each %c) { + if ($v == 1) { + return $k; + } + } + return -1; +} diff --git a/challenge-283/roger-bell-west/perl/ch-2.pl b/challenge-283/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..1a944d4f1e --- /dev/null +++ b/challenge-283/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,21 @@ +#! /usr/bin/perl + +use strict; +use warnings; +use experimental 'signatures'; + +use Test::More tests => 2; + +is(digitcountvalue([1, 2, 1, 0]), 1, 'example 1'); +is(digitcountvalue([0, 3, 0]), 0, 'example 2'); + +sub digitcountvalue($a) { + my %c; + map {$c{$_}++} @{$a}; + foreach my $ix (0 .. $#{$a}) { + if ($a->[$ix] != ($c{$ix} || 0)) { + return 0; + } + } + return 1; +} diff --git a/challenge-283/roger-bell-west/postscript/ch-1.ps b/challenge-283/roger-bell-west/postscript/ch-1.ps new file mode 100644 index 0000000000..aa6d534372 --- /dev/null +++ b/challenge-283/roger-bell-west/postscript/ch-1.ps @@ -0,0 +1,80 @@ +%!PS + +% begin included library code +% see https://codeberg.org/Firedrake/postscript-libraries/ +/keys { % dict -> array of dict keys + [ exch + { + pop + } forall + ] +} bind def + +/test { + /test.count test.count 1 add def + { + /test.pass test.pass 1 add def + } { + ( ) print + test.count (....) cvs print + (-fail) print + } ifelse +} bind def + +/test.end { + ( ) print + test.count 0 gt { + (Passed ) print + test.pass (...) cvs print + (/) print + test.count (...) cvs print + ( \() print + test.pass 100 mul test.count idiv (...) cvs print + (%\)) print + (\r\n) print + } if +} bind def + +/test.start { + print (:) print + /test.pass 0 def + /test.count 0 def +} bind def + +/dget { + 3 1 roll + 2 copy + known { + get exch pop + } { + pop pop + } ifelse +} bind def + + +% end included library code + +/uniquenumber { + 0 dict begin + /c 0 dict def + { + /n exch def + c n c n 0 dget 1 add put + } forall + -1 + c keys { + /n exch def + c n 0 dget 1 eq { + pop n + exit + } if + } forall + end +} bind def + +(uniquenumber) test.start +[3 3 1] uniquenumber 1 eq test +[3 2 4 2 4] uniquenumber 3 eq test +[1] uniquenumber 1 eq test +[4 3 1 1 1 4] uniquenumber 3 eq test +test.end diff --git a/challenge-283/roger-bell-west/postscript/ch-2.ps b/challenge-283/roger-bell-west/postscript/ch-2.ps new file mode 100644 index 0000000000..7c0f9ba2bb --- /dev/null +++ b/challenge-283/roger-bell-west/postscript/ch-2.ps @@ -0,0 +1,71 @@ +%!PS + +% begin included library code +% see https://codeberg.org/Firedrake/postscript-libraries/ +/test.start { + print (:) print + /test.pass 0 def + /test.count 0 def +} bind def + +/test { + /test.count test.count 1 add def + { + /test.pass test.pass 1 add def + } { + ( ) print + test.count (....) cvs print + (-fail) print + } ifelse +} bind def + +/dget { + 3 1 roll + 2 copy + known { + get exch pop + } { + pop pop + } ifelse +} bind def + +/test.end { + ( ) print + test.count 0 gt { + (Passed ) print + test.pass (...) cvs print + (/) print + test.count (...) cvs print + ( \() print + test.pass 100 mul test.count idiv (...) cvs print + (%\)) print + (\r\n) print + } if +} bind def + + +% end included library code + +/digitcountvalue { + 0 dict begin + /a exch def + /c 0 dict def + a { + /n exch def + c n c n 0 dget 1 add put + } forall + true + 0 1 a length 1 sub { + /ix exch def + a ix get c ix 0 dget ne { + pop false + exit + } if + } for + end +} bind def + +(digitcountvalue) test.start +[1 2 1 0] digitcountvalue test +[0 3 0] digitcountvalue not test +test.end diff --git a/challenge-283/roger-bell-west/python/ch-1.py b/challenge-283/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..2faf69700a --- /dev/null +++ b/challenge-283/roger-bell-west/python/ch-1.py @@ -0,0 +1,27 @@ +#! /usr/bin/python3 + +from collections import defaultdict + +def uniquenumber(a): + c = defaultdict(lambda: 0) + for n in a: + c[n] += 1 + return [k for k in c.keys() if c[k] == 1][0] + +import unittest + +class TestUniquenumber(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(uniquenumber([3, 3, 1]), 1, 'example 1') + + def test_ex2(self): + self.assertEqual(uniquenumber([3, 2, 4, 2, 4]), 3, 'example 2') + + def test_ex3(self): + self.assertEqual(uniquenumber([1]), 1, 'example 3') + + def test_ex4(self): + self.assertEqual(uniquenumber([4, 3, 1, 1, 1, 4]), 3, 'example 4') + +unittest.main() diff --git a/challenge-283/roger-bell-west/python/ch-2.py b/challenge-283/roger-bell-west/python/ch-2.py new file mode 100755 index 0000000000..d672bdc6e3 --- /dev/null +++ b/challenge-283/roger-bell-west/python/ch-2.py @@ -0,0 +1,24 @@ +#! /usr/bin/python3 + +from collections import defaultdict + +def digitcountvalue(a): + c = defaultdict(lambda: 0) + for n in a: + c[n] += 1 + for ix in range(len(a)): + if a[ix] != c[ix]: + return False; + return True + +import unittest + +class TestDigitcountvalue(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(digitcountvalue([1, 2, 1, 0]), True, 'example 1') + + def test_ex2(self): + self.assertEqual(digitcountvalue([0, 3, 0]), False, 'example 2') + +unittest.main() diff --git a/challenge-283/roger-bell-west/raku/ch-1.p6 b/challenge-283/roger-bell-west/raku/ch-1.p6 new file mode 100755 index 0000000000..c1df149cea --- /dev/null +++ b/challenge-283/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,21 @@ +#! /usr/bin/raku + +use Test; + +plan 4; + +is(uniquenumber([3, 3, 1]), 1, 'example 1'); +is(uniquenumber([3, 2, 4, 2, 4]), 3, 'example 2'); +is(uniquenumber([1]), 1, 'example 3'); +is(uniquenumber([4, 3, 1, 1, 1, 4]), 3, 'example 4'); + +sub uniquenumber(@a) { + my %c; + @a.map({%c{$_}++}); + for %c.kv -> $k, $v { + if ($v == 1) { + return $k; + } + } + return -1; +} diff --git a/challenge-283/roger-bell-west/raku/ch-2.p6 b/challenge-283/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..aaf3446a75 --- /dev/null +++ b/challenge-283/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,19 @@ +#! /usr/bin/raku + +use Test; + +plan 2; + +is(digitcountvalue([1, 2, 1, 0]), True, 'example 1'); +is(digitcountvalue([0, 3, 0]), False, 'example 2'); + +sub digitcountvalue(@a) { + my %c; + @a.map({%c{$_}++}); + for 0 .. @a.end -> $ix { + if (@a[$ix] != (%c{$ix} || 0)) { + return False; + } + } + return True; +} diff --git a/challenge-283/roger-bell-west/ruby/ch-1.rb b/challenge-283/roger-bell-west/ruby/ch-1.rb new file mode 100755 index 0000000000..9c5f5bf785 --- /dev/null +++ b/challenge-283/roger-bell-west/ruby/ch-1.rb @@ -0,0 +1,32 @@ +#! /usr/bin/ruby + +def uniquenumber(a) + c = Hash.new + c.default = 0 + a.each do |n| + c[n] += 1 + end + c.select{|k, v| v == 1}.map{|k, v| k}[0] +end + +require 'test/unit' + +class TestUniquenumber < Test::Unit::TestCase + + def test_ex1 + assert_equal(1, uniquenumber([3, 3, 1])) + end + + def test_ex2 + assert_equal(3, uniquenumber([3, 2, 4, 2, 4])) + end + + def test_ex3 + assert_equal(1, uniquenumber([1])) + end + + def test_ex4 + assert_equal(3, uniquenumber([4, 3, 1, 1, 1, 4])) + end + +end diff --git a/challenge-283/roger-bell-west/ruby/ch-2.rb b/challenge-283/roger-bell-west/ruby/ch-2.rb new file mode 100755 index 0000000000..459fc57223 --- /dev/null +++ b/challenge-283/roger-bell-west/ruby/ch-2.rb @@ -0,0 +1,29 @@ +#! /usr/bin/ruby + +def digitcountvalue(a) + c = Hash.new + c.default = 0 + a.each do |n| + c[n] += 1 + end + 0.upto(a.size - 1) do |ix| + if a[ix] != c[ix] + return false + end + end + true +end + +require 'test/unit' + +class TestDigitcountvalue < Test::Unit::TestCase + + def test_ex1 + assert_equal(true, digitcountvalue([1, 2, 1, 0])) + end + + def test_ex2 + assert_equal(false, digitcountvalue([0, 3, 0])) + end + +end diff --git a/challenge-283/roger-bell-west/rust/ch-1.rs b/challenge-283/roger-bell-west/rust/ch-1.rs new file mode 100755 index 0000000000..e8a6b0bf9f --- /dev/null +++ b/challenge-283/roger-bell-west/rust/ch-1.rs @@ -0,0 +1,31 @@ +use counter::Counter; + +#[test] +fn test_ex1() { + assert_eq!(uniquenumber(vec![3, 3, 1]), 1); +} + +#[test] +fn test_ex2() { + assert_eq!(uniquenumber(vec![3, 2, 4, 2, 4]), 3); +} + +#[test] +fn test_ex3() { + assert_eq!(uniquenumber(vec![1]), 1); +} + +#[test] +fn test_ex4() { + assert_eq!(uniquenumber(vec![4, 3, 1, 1, 1, 4]), 3); +} + +fn uniquenumber(a: Vec) -> i32 { + let c = a.into_iter().collect::>(); + for (k, v) in c.iter() { + if *v == 1 { + return *k; + } + } + -1 +} diff --git a/challenge-283/roger-bell-west/rust/ch-2.rs b/challenge-283/roger-bell-west/rust/ch-2.rs new file mode 100755 index 0000000000..ad700b23ec --- /dev/null +++ b/challenge-283/roger-bell-west/rust/ch-2.rs @@ -0,0 +1,21 @@ +use counter::Counter; + +#[test] +fn test_ex1() { + assert_eq!(digitcountvalue(vec![1, 2, 1, 0]), true); +} + +#[test] +fn test_ex2() { + assert_eq!(digitcountvalue(vec![0, 3, 0]), false); +} + +fn digitcountvalue(a: Vec) -> bool { + let c = a.clone().into_iter().collect::>(); + for ix in 0..a.len() { + if a[ix] != c[&ix] { + return false; + } + } + true +} diff --git a/challenge-283/roger-bell-west/scala/ch-1.scala b/challenge-283/roger-bell-west/scala/ch-1.scala new file mode 100644 index 0000000000..1d3a6384d5 --- /dev/null +++ b/challenge-283/roger-bell-west/scala/ch-1.scala @@ -0,0 +1,44 @@ +import scala.collection.mutable + +object Uniquenumber { + def uniquenumber(a: List[Int]): Int = { + var c = mutable.Map.empty[Int, Int].withDefaultValue(0) + for (p <- a) { + c += (p -> (c(p) + 1)) + } + var ret = -1; + for (p <- c.keys) { + if (ret == -1 && c(p) == 1) { + ret = p + } + } + return ret + } + def main(args: Array[String]) { + if (uniquenumber(List(3, 3, 1)) == 1) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (uniquenumber(List(3, 2, 4, 2, 4)) == 3) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (uniquenumber(List(1)) == 1) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (uniquenumber(List(4, 3, 1, 1, 1, 4)) == 3) { + print("Pass") + } else { + print("Fail") + } + println("") + + } +} diff --git a/challenge-283/roger-bell-west/scala/ch-2.scala b/challenge-283/roger-bell-west/scala/ch-2.scala new file mode 100644 index 0000000000..3bbacfdd5d --- /dev/null +++ b/challenge-283/roger-bell-west/scala/ch-2.scala @@ -0,0 +1,32 @@ +import scala.collection.mutable + +object Digitcountvalue { + def digitcountvalue(a: List[Int]): Boolean = { + var c = mutable.Map.empty[Int, Int].withDefaultValue(0) + for (p <- a) { + c += (p -> (c(p) + 1)) + } + var ret = true + for (ix <- 0 until a.size) { + if (a(ix) != c(ix)) { + ret = false + } + } + ret + } + def main(args: Array[String]) { + if (digitcountvalue(List(1, 2, 1, 0))) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (!digitcountvalue(List(0, 3, 0))) { + print("Pass") + } else { + print("Fail") + } + println("") + + } +} diff --git a/challenge-283/roger-bell-west/tests.json b/challenge-283/roger-bell-west/tests.json new file mode 100644 index 0000000000..e6d52f8fea --- /dev/null +++ b/challenge-283/roger-bell-west/tests.json @@ -0,0 +1,32 @@ +{ + "ch-1" : [ + { + "function" : "uniquenumber", + "arguments" : [ 3, 3, 1 ], + "result" : 1 + }, + { + "arguments" : [ 3, 2, 4, 2, 4 ], + "result" : 3 + }, + { + "arguments" : [ 1 ], + "result" : 1 + }, + { + "arguments" : [ 4, 3, 1, 1, 1, 4 ], + "result" : 3 + } + ], + "ch-2" : [ + { + "function" : "digitcountvalue", + "arguments" : [ 1, 2, 1, 0 ], + "result" : true + }, + { + "arguments" : [ 0, 3, 0 ], + "result": false + } + ] +} -- cgit