From f406bb878bbbfa00276a10275537fac95d575cb2 Mon Sep 17 00:00:00 2001 From: Roger Bell_West Date: Tue, 13 Feb 2024 11:37:42 +0000 Subject: RogerBW solutions for challenge no. 256 --- challenge-256/roger-bell-west/javascript/ch-1.js | 36 ++++++++++ challenge-256/roger-bell-west/javascript/ch-2.js | 35 ++++++++++ challenge-256/roger-bell-west/kotlin/ch-1.kt | 36 ++++++++++ challenge-256/roger-bell-west/kotlin/ch-2.kt | 37 ++++++++++ challenge-256/roger-bell-west/lua/ch-1.lua | 37 ++++++++++ challenge-256/roger-bell-west/lua/ch-2.lua | 36 ++++++++++ challenge-256/roger-bell-west/perl/ch-1.pl | 25 +++++++ challenge-256/roger-bell-west/perl/ch-2.pl | 28 ++++++++ challenge-256/roger-bell-west/postscript/ch-1.ps | 87 ++++++++++++++++++++++++ challenge-256/roger-bell-west/postscript/ch-2.ps | 72 ++++++++++++++++++++ challenge-256/roger-bell-west/python/ch-1.py | 27 ++++++++ challenge-256/roger-bell-west/python/ch-2.py | 25 +++++++ challenge-256/roger-bell-west/raku/ch-1.p6 | 23 +++++++ challenge-256/roger-bell-west/raku/ch-2.p6 | 24 +++++++ challenge-256/roger-bell-west/ruby/ch-1.rb | 35 ++++++++++ challenge-256/roger-bell-west/ruby/ch-2.rb | 34 +++++++++ challenge-256/roger-bell-west/rust/ch-1.rs | 33 +++++++++ challenge-256/roger-bell-west/rust/ch-2.rs | 34 +++++++++ challenge-256/roger-bell-west/scala/ch-1.scala | 38 +++++++++++ challenge-256/roger-bell-west/scala/ch-2.scala | 36 ++++++++++ challenge-256/roger-bell-west/tests.yaml | 40 +++++++++++ 21 files changed, 778 insertions(+) create mode 100755 challenge-256/roger-bell-west/javascript/ch-1.js create mode 100755 challenge-256/roger-bell-west/javascript/ch-2.js create mode 100644 challenge-256/roger-bell-west/kotlin/ch-1.kt create mode 100644 challenge-256/roger-bell-west/kotlin/ch-2.kt create mode 100755 challenge-256/roger-bell-west/lua/ch-1.lua create mode 100755 challenge-256/roger-bell-west/lua/ch-2.lua create mode 100755 challenge-256/roger-bell-west/perl/ch-1.pl create mode 100755 challenge-256/roger-bell-west/perl/ch-2.pl create mode 100644 challenge-256/roger-bell-west/postscript/ch-1.ps create mode 100644 challenge-256/roger-bell-west/postscript/ch-2.ps create mode 100755 challenge-256/roger-bell-west/python/ch-1.py create mode 100755 challenge-256/roger-bell-west/python/ch-2.py create mode 100755 challenge-256/roger-bell-west/raku/ch-1.p6 create mode 100755 challenge-256/roger-bell-west/raku/ch-2.p6 create mode 100755 challenge-256/roger-bell-west/ruby/ch-1.rb create mode 100755 challenge-256/roger-bell-west/ruby/ch-2.rb create mode 100755 challenge-256/roger-bell-west/rust/ch-1.rs create mode 100755 challenge-256/roger-bell-west/rust/ch-2.rs create mode 100644 challenge-256/roger-bell-west/scala/ch-1.scala create mode 100644 challenge-256/roger-bell-west/scala/ch-2.scala create mode 100644 challenge-256/roger-bell-west/tests.yaml diff --git a/challenge-256/roger-bell-west/javascript/ch-1.js b/challenge-256/roger-bell-west/javascript/ch-1.js new file mode 100755 index 0000000000..487faea806 --- /dev/null +++ b/challenge-256/roger-bell-west/javascript/ch-1.js @@ -0,0 +1,36 @@ +#! /usr/bin/node + +"use strict" + +function maximumpairs(a) { + let n = 0; + let r = new Set; + for (let s of a) { + const t = s.split("").reverse().join(""); + if (r.has(t)) { + n++; + } else { + r.add(s); + } + } + return n; +} + +if (maximumpairs(['ab', 'de', 'ed', 'bc']) == 1) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (maximumpairs(['aa', 'ba', 'cd', 'ed']) == 0) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (maximumpairs(['uv', 'qp', 'st', 'vu', 'mn', 'pq']) == 2) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write("\n"); diff --git a/challenge-256/roger-bell-west/javascript/ch-2.js b/challenge-256/roger-bell-west/javascript/ch-2.js new file mode 100755 index 0000000000..62f3a05be9 --- /dev/null +++ b/challenge-256/roger-bell-west/javascript/ch-2.js @@ -0,0 +1,35 @@ +#! /usr/bin/node + +"use strict" + +function mergestrings(a, b) { + let out = ""; + for (let i = 0; i < Math.max(a.length, b.length); i++) { + if (i <= a.length - 1) { + out += a.substring(i, i+1); + } + if (i <= b.length - 1) { + out += b.substring(i, i+1); + } + } + return out; +} + +if (mergestrings('abcd', '1234') == 'a1b2c3d4') { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (mergestrings('abc', '12345') == 'a1b2c345') { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (mergestrings('abcde', '123') == 'a1b2c3de') { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write("\n"); diff --git a/challenge-256/roger-bell-west/kotlin/ch-1.kt b/challenge-256/roger-bell-west/kotlin/ch-1.kt new file mode 100644 index 0000000000..bd433350bd --- /dev/null +++ b/challenge-256/roger-bell-west/kotlin/ch-1.kt @@ -0,0 +1,36 @@ +fun maximumpairs(a: List): Int { + var n = 0 + var r = mutableSetOf() + for (s in a) { + val t = s.reversed() + if (r.contains(t)) { + n += 1 + } else { + r.add(s) + } + } + return n +} + +fun main() { + + if (maximumpairs(listOf("ab", "de", "ed", "bc")) == 1) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (maximumpairs(listOf("aa", "ba", "cd", "ed")) == 0) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (maximumpairs(listOf("uv", "qp", "st", "vu", "mn", "pq")) == 2) { + print("Pass") + } else { + print("Fail") + } + println("") + +} diff --git a/challenge-256/roger-bell-west/kotlin/ch-2.kt b/challenge-256/roger-bell-west/kotlin/ch-2.kt new file mode 100644 index 0000000000..d2dbdaa800 --- /dev/null +++ b/challenge-256/roger-bell-west/kotlin/ch-2.kt @@ -0,0 +1,37 @@ +import kotlin.math.max + +fun mergestrings(a: String, b: String): String { + var out = "" + for (i in 0 .. listOf(a.length, b.length).maxOrNull()!! - 1) { + if (i <= a.length - 1) { + out += a.substring(i, i+1) + } + if (i <= b.length - 1) { + out += b.substring(i, i+1) + } + } + return out +} + +fun main() { + + if (mergestrings("abcd", "1234") == "a1b2c3d4") { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (mergestrings("abc", "12345") == "a1b2c345") { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (mergestrings("abcde", "123") == "a1b2c3de") { + print("Pass") + } else { + print("Fail") + } + println("") + +} diff --git a/challenge-256/roger-bell-west/lua/ch-1.lua b/challenge-256/roger-bell-west/lua/ch-1.lua new file mode 100755 index 0000000000..b8316b4b7c --- /dev/null +++ b/challenge-256/roger-bell-west/lua/ch-1.lua @@ -0,0 +1,37 @@ +#! /usr/bin/lua + +function maximumpairs(a) + local n = 0 + local r = {} + for _, s in ipairs(a) do + local t = string.reverse(s) + if r[t] ~= nil then + n = n + 1 + else + r[s] = true + end + end + return n +end + +if maximumpairs({"ab", "de", "ed", "bc"}) == 1 then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if maximumpairs({"aa", "ba", "cd", "ed"}) == 0 then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if maximumpairs({"uv", "qp", "st", "vu", "mn", "pq"}) == 2 then + io.write("Pass") +else + io.write("FAIL") +end +print("") + diff --git a/challenge-256/roger-bell-west/lua/ch-2.lua b/challenge-256/roger-bell-west/lua/ch-2.lua new file mode 100755 index 0000000000..afbaa80653 --- /dev/null +++ b/challenge-256/roger-bell-west/lua/ch-2.lua @@ -0,0 +1,36 @@ +#! /usr/bin/lua + +function mergestrings(a, b) + local out = "" + for i = 1, math.max(string.len(a), string.len(b)) do + if i <= string.len(a) then + out = out .. string.sub(a, i, i) + end + if i <= string.len(b) then + out = out .. string.sub(b, i, i) + end + end + return out +end + +if mergestrings("abcd", 1234) == "a1b2c3d4" then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if mergestrings("abc", 12345) == "a1b2c345" then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if mergestrings("abcde", 123) == "a1b2c3de" then + io.write("Pass") +else + io.write("FAIL") +end +print("") + diff --git a/challenge-256/roger-bell-west/perl/ch-1.pl b/challenge-256/roger-bell-west/perl/ch-1.pl new file mode 100755 index 0000000000..9ab01536ff --- /dev/null +++ b/challenge-256/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,25 @@ +#! /usr/bin/perl + +use strict; +use warnings; +use experimental 'signatures'; + +use Test::More tests => 3; + +is(maximumpairs(['ab', 'de', 'ed', 'bc']), 1, 'example 1'); +is(maximumpairs(['aa', 'ba', 'cd', 'ed']), 0, 'example 2'); +is(maximumpairs(['uv', 'qp', 'st', 'vu', 'mn', 'pq']), 2, 'example 3'); + +sub maximumpairs($a) { + my $n = 0; + my %r; + foreach my $s (@{$a}) { + my $t = reverse($s); + if (exists $r{$t}) { + $n++; + } else { + $r{$s} = 1; + } + } + return $n; +} diff --git a/challenge-256/roger-bell-west/perl/ch-2.pl b/challenge-256/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..44f704f864 --- /dev/null +++ b/challenge-256/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,28 @@ +#! /usr/bin/perl + +use strict; +use warnings; +use experimental 'signatures'; + +use Test::More tests => 3; + +is(mergestrings('abcd', 1234), 'a1b2c3d4', 'example 1'); +is(mergestrings('abc', 12345), 'a1b2c345', 'example 2'); +is(mergestrings('abcde', 123), 'a1b2c3de', 'example 3'); + +use List::Util qw(max); + +sub mergestrings($a, $b) { + my @aa = split '', $a; + my @bb = split '', $b; + my $out; + foreach my $i (0 .. max($#aa, $#bb)) { + if ($i <= $#aa) { + $out .= $aa[$i]; + } + if ($i <= $#bb) { + $out .= $bb[$i]; + } + } + return $out; +} diff --git a/challenge-256/roger-bell-west/postscript/ch-1.ps b/challenge-256/roger-bell-west/postscript/ch-1.ps new file mode 100644 index 0000000000..5af26ad4c7 --- /dev/null +++ b/challenge-256/roger-bell-west/postscript/ch-1.ps @@ -0,0 +1,87 @@ +%!PS + +% begin included library code +% see https://codeberg.org/Firedrake/postscript-libraries/ +/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 + +/s2a { + [ exch { } forall ] +} bind def + +/test.start { + print (:) print + /test.pass 0 def + /test.count 0 def +} bind def + +/a2s { + 2 dict begin + /i exch def + i length dup string /o exch def + 1 sub 0 exch 1 exch { + dup i 3 -1 roll get o 3 1 roll put + } for + o + end +} bind def + +/reverse { + 1 dict begin + dup length /l exch def + [ exch + aload pop + 2 1 l { + -1 roll + } for + ] + end +} 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 + + +% end included library code + +/maximumpairs { + 0 dict begin + /n 0 def + /r 0 dict def + { + /s exch def + /t s s2a reverse a2s def + r t known { + /n n 1 add def + } { + r s true put + } ifelse + } forall + n + end +} bind def + +(maximumpairs) test.start +[(ab) (de) (ed) (bc)] maximumpairs 1 eq test +[(aa) (ba) (cd) (ed)] maximumpairs 0 eq test +[(uv) (qp) (st) (vu) (mn) (pq)] maximumpairs 2 eq test +test.end diff --git a/challenge-256/roger-bell-west/postscript/ch-2.ps b/challenge-256/roger-bell-west/postscript/ch-2.ps new file mode 100644 index 0000000000..cbe7bc8998 --- /dev/null +++ b/challenge-256/roger-bell-west/postscript/ch-2.ps @@ -0,0 +1,72 @@ +%!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.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 + +/a2s { + 2 dict begin + /i exch def + i length dup string /o exch def + 1 sub 0 exch 1 exch { + dup i 3 -1 roll get o 3 1 roll put + } for + o + end +} 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 + + +% end included library code + +/mergestrings { + 0 dict begin + /b exch def + /a exch def + [ + 0 1 a length b length max 1 sub { + /i exch def + i a length lt { + a i get + } if + i b length lt { + b i get + } if + } for + ] a2s + end +} bind def + +(mergestrings) test.start +(abcd) (1234) mergestrings (a1b2c3d4) eq test +(abc) (12345) mergestrings (a1b2c345) eq test +(abcde) (123) mergestrings (a1b2c3de) eq test +test.end diff --git a/challenge-256/roger-bell-west/python/ch-1.py b/challenge-256/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..41f87da92a --- /dev/null +++ b/challenge-256/roger-bell-west/python/ch-1.py @@ -0,0 +1,27 @@ +#! /usr/bin/python3 + +def maximumpairs(a): + n = 0 + r = set() + for s in a: + t = s[::-1] + if t in r: + n += 1 + else: + r.add(s) + return n + +import unittest + +class TestMaximumpairs(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(maximumpairs(["ab", "de", "ed", "bc"]), 1, 'example 1') + + def test_ex2(self): + self.assertEqual(maximumpairs(["aa", "ba", "cd", "ed"]), 0, 'example 2') + + def test_ex3(self): + self.assertEqual(maximumpairs(["uv", "qp", "st", "vu", "mn", "pq"]), 2, 'example 3') + +unittest.main() diff --git a/challenge-256/roger-bell-west/python/ch-2.py b/challenge-256/roger-bell-west/python/ch-2.py new file mode 100755 index 0000000000..ee02a99f35 --- /dev/null +++ b/challenge-256/roger-bell-west/python/ch-2.py @@ -0,0 +1,25 @@ +#! /usr/bin/python3 + +def mergestrings(a, b): + out = "" + for i in range(max(len(a), len(b))): + if i < len(a): + out += a[i] + if i < len(b): + out += b[i] + return out + +import unittest + +class TestMergestrings(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(mergestrings("abcd", "1234"), "a1b2c3d4", 'example 1') + + def test_ex2(self): + self.assertEqual(mergestrings("abc", "12345"), "a1b2c345", 'example 2') + + def test_ex3(self): + self.assertEqual(mergestrings("abcde", "123"), "a1b2c3de", 'example 3') + +unittest.main() diff --git a/challenge-256/roger-bell-west/raku/ch-1.p6 b/challenge-256/roger-bell-west/raku/ch-1.p6 new file mode 100755 index 0000000000..a889b25d78 --- /dev/null +++ b/challenge-256/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,23 @@ +#! /usr/bin/raku + +use Test; + +plan 3; + +is(maximumpairs(['ab', 'de', 'ed', 'bc']), 1, 'example 1'); +is(maximumpairs(['aa', 'ba', 'cd', 'ed']), 0, 'example 2'); +is(maximumpairs(['uv', 'qp', 'st', 'vu', 'mn', 'pq']), 2, 'example 3'); + +sub maximumpairs(@a) { + my $n = 0; + my $r = SetHash.new; + for @a -> $s { + my $t = $s.flip; + if ($r{$t}:exists) { + $n++; + } else { + $r{$s} = 1; + } + } + return $n; +} diff --git a/challenge-256/roger-bell-west/raku/ch-2.p6 b/challenge-256/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..4d806b107b --- /dev/null +++ b/challenge-256/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,24 @@ +#! /usr/bin/raku + +use Test; + +plan 3; + +is(mergestrings('abcd', 1234), 'a1b2c3d4', 'example 1'); +is(mergestrings('abc', 12345), 'a1b2c345', 'example 2'); +is(mergestrings('abcde', 123), 'a1b2c3de', 'example 3'); + +sub mergestrings($a, $b) { + my @aa = $a.comb; + my @bb = $b.comb; + my $out; + for 0 .. max(@aa.end, @bb.end) -> $i { + if ($i <= @aa.end) { + $out ~= @aa[$i]; + } + if ($i <= @bb.end) { + $out ~= @bb[$i]; + } + } + return $out; +} diff --git a/challenge-256/roger-bell-west/ruby/ch-1.rb b/challenge-256/roger-bell-west/ruby/ch-1.rb new file mode 100755 index 0000000000..447cbd195c --- /dev/null +++ b/challenge-256/roger-bell-west/ruby/ch-1.rb @@ -0,0 +1,35 @@ +#! /usr/bin/ruby + +require 'set' + +def maximumpairs(a) + n = 0 + r = Set.new + a.each do |s| + t = s.reverse + if r.include?(t) then + n += 1 + else + r.add(s) + end + end + return n +end + +require 'test/unit' + +class TestMaximumpairs < Test::Unit::TestCase + + def test_ex1 + assert_equal(1, maximumpairs(['ab', 'de', 'ed', 'bc'])) + end + + def test_ex2 + assert_equal(0, maximumpairs(['aa', 'ba', 'cd', 'ed'])) + end + + def test_ex3 + assert_equal(2, maximumpairs(['uv', 'qp', 'st', 'vu', 'mn', 'pq'])) + end + +end diff --git a/challenge-256/roger-bell-west/ruby/ch-2.rb b/challenge-256/roger-bell-west/ruby/ch-2.rb new file mode 100755 index 0000000000..f85f21409f --- /dev/null +++ b/challenge-256/roger-bell-west/ruby/ch-2.rb @@ -0,0 +1,34 @@ +#! /usr/bin/ruby + +def mergestrings(a, b) + aa = a.chars.to_a + bb = b.chars.to_a + out = "" + 0.upto([a.length, b.length].max - 1) do |i| + if i < a.length then + out += aa[i] + end + if i < b.length then + out += bb[i] + end + end + return out +end + +require 'test/unit' + +class TestMergestrings < Test::Unit::TestCase + + def test_ex1 + assert_equal('a1b2c3d4', mergestrings('abcd', '1234')) + end + + def test_ex2 + assert_equal('a1b2c345', mergestrings('abc', '12345')) + end + + def test_ex3 + assert_equal('a1b2c3de', mergestrings('abcde', '123')) + end + +end diff --git a/challenge-256/roger-bell-west/rust/ch-1.rs b/challenge-256/roger-bell-west/rust/ch-1.rs new file mode 100755 index 0000000000..810ce5bc64 --- /dev/null +++ b/challenge-256/roger-bell-west/rust/ch-1.rs @@ -0,0 +1,33 @@ +#! /bin/sh +//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x --nocapture; rm -f ${0}x ; exit + +use std::collections::HashSet; + +#[test] +fn test_ex1() { + assert_eq!(maximumpairs(vec!["ab", "de", "ed", "bc"]), 1); +} + +#[test] +fn test_ex2() { + assert_eq!(maximumpairs(vec!["aa", "ba", "cd", "ed"]), 0); +} + +#[test] +fn test_ex3() { + assert_eq!(maximumpairs(vec!["uv", "qp", "st", "vu", "mn", "pq"]), 2); +} + +fn maximumpairs(a: Vec<&str>) -> u32 { + let mut n = 0; + let mut r: HashSet = HashSet::new(); + for s in a { + let t = s.chars().rev().collect::(); + if r.contains(&t) { + n += 1; + } else { + r.insert(s.to_string()); + } + } + n +} diff --git a/challenge-256/roger-bell-west/rust/ch-2.rs b/challenge-256/roger-bell-west/rust/ch-2.rs new file mode 100755 index 0000000000..59af687020 --- /dev/null +++ b/challenge-256/roger-bell-west/rust/ch-2.rs @@ -0,0 +1,34 @@ +#! /bin/sh +//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x --nocapture; rm -f ${0}x ; exit + +use std::cmp::max; + +#[test] +fn test_ex1() { + assert_eq!(mergestrings("abcd", "1234"), "a1b2c3d4"); +} + +#[test] +fn test_ex2() { + assert_eq!(mergestrings("abc", "12345"), "a1b2c345"); +} + +#[test] +fn test_ex3() { + assert_eq!(mergestrings("abcde", "123"), "a1b2c3de"); +} + +fn mergestrings(a: &str, b: &str) -> String { + let aa = a.chars().collect::>(); + let bb = b.chars().collect::>(); + let mut out: String = String::new(); + for i in 0 .. max(a.len(), b.len()) { + if i < a.len() { + out.push(aa[i]); + } + if i < b.len() { + out.push(bb[i]); + } + } + out +} diff --git a/challenge-256/roger-bell-west/scala/ch-1.scala b/challenge-256/roger-bell-west/scala/ch-1.scala new file mode 100644 index 0000000000..82cc40f0ad --- /dev/null +++ b/challenge-256/roger-bell-west/scala/ch-1.scala @@ -0,0 +1,38 @@ +import scala.collection.mutable + +object Maximumpairs { + def maximumpairs(a: List[String]): Int = { + var n = 0 + var r = mutable.Set.empty[String] + for (s <- a) { + val t = s.reverse + if (r.contains(t)) { + n += 1 + } else { + r += s + } + } + return n + } + def main(args: Array[String]) { + if (maximumpairs(List("ab", "de", "ed", "bc")) == 1) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (maximumpairs(List("aa", "ba", "cd", "ed")) == 0) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (maximumpairs(List("uv", "qp", "st", "vu", "mn", "pq")) == 2) { + print("Pass") + } else { + print("Fail") + } + println("") + + } +} diff --git a/challenge-256/roger-bell-west/scala/ch-2.scala b/challenge-256/roger-bell-west/scala/ch-2.scala new file mode 100644 index 0000000000..e97afb1a26 --- /dev/null +++ b/challenge-256/roger-bell-west/scala/ch-2.scala @@ -0,0 +1,36 @@ + +object Mergestrings { + def mergestrings(a: String, b: String): String = { + var out = "" + for (i <- 0 to List(a.length, b.length).max) { + if (i <= a.length - 1) { + out += a.substring(i, i+1) + } + if (i <= b.length - 1) { + out += b.substring(i, i+1) + } + } + return out + } + def main(args: Array[String]) { + if (mergestrings("abcd", "1234") == "a1b2c3d4") { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (mergestrings("abc", "12345") == "a1b2c345") { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (mergestrings("abcde", "123") == "a1b2c3de") { + print("Pass") + } else { + print("Fail") + } + println("") + + } +} diff --git a/challenge-256/roger-bell-west/tests.yaml b/challenge-256/roger-bell-west/tests.yaml new file mode 100644 index 0000000000..4a44a7ad7b --- /dev/null +++ b/challenge-256/roger-bell-west/tests.yaml @@ -0,0 +1,40 @@ +--- +ch-1: + - function: maximumpairs + arguments: + - ab + - de + - ed + - bc + result: 1 + - arguments: + - aa + - ba + - cd + - ed + result: 0 + - arguments: + - uv + - qp + - st + - vu + - mn + - pq + result: 2 +ch-2: + - function: mergestrings + multiarg: true + arguments: + - abcd + - "1234" + result: "a1b2c3d4" + - multiarg: true + arguments: + - abc + - "12345" + result: "a1b2c345" + - multiarg: true + arguments: + - abcde + - "123" + result: "a1b2c3de" -- cgit