diff options
| author | Roger Bell_West <roger@firedrake.org> | 2024-05-07 11:40:26 +0100 |
|---|---|---|
| committer | Roger Bell_West <roger@firedrake.org> | 2024-05-07 11:40:26 +0100 |
| commit | fa113e272fedf16505729bfabd2693714c2c1a91 (patch) | |
| tree | 5a3aac3f95c029a420cb6c196dc4ce9cb506f66c | |
| parent | c1756b0e7aed0ad70fa63feb2565c69215c9d426 (diff) | |
| download | perlweeklychallenge-club-fa113e272fedf16505729bfabd2693714c2c1a91.tar.gz perlweeklychallenge-club-fa113e272fedf16505729bfabd2693714c2c1a91.tar.bz2 perlweeklychallenge-club-fa113e272fedf16505729bfabd2693714c2c1a91.zip | |
RogerBW solutions for challenge no. 268
23 files changed, 866 insertions, 0 deletions
diff --git a/challenge-268/roger-bell-west/crystal/ch-1.cr b/challenge-268/roger-bell-west/crystal/ch-1.cr new file mode 100755 index 0000000000..9dede090fb --- /dev/null +++ b/challenge-268/roger-bell-west/crystal/ch-1.cr @@ -0,0 +1,18 @@ +#! /usr/bin/crystal + +def magicnumber(a, b) + b.min - a.min +end + +require "spec" +describe "#tmpl_var name=function>" do + it "test_ex1" do + magicnumber([3, 7, 5], [9, 5, 7]).should eq 2 + end + it "test_ex2" do + magicnumber([1, 2, 1], [5, 4, 4]).should eq 3 + end + it "test_ex3" do + magicnumber([2], [5]).should eq 3 + end +end diff --git a/challenge-268/roger-bell-west/crystal/ch-2.cr b/challenge-268/roger-bell-west/crystal/ch-2.cr new file mode 100755 index 0000000000..7f93a077e9 --- /dev/null +++ b/challenge-268/roger-bell-west/crystal/ch-2.cr @@ -0,0 +1,24 @@ +#! /usr/bin/crystal + +def numbergame(a0) + out = Array(Int32).new + a = a0.sort + a.each_slice(2) do |s| + out.push(s[1]) + out.push(s[0]) + end + out +end + +require "spec" +describe "#tmpl_var name=function>" do + it "test_ex1" do + numbergame([2, 5, 3, 4]).should eq [3, 2, 5, 4] + end + it "test_ex2" do + numbergame([9, 4, 1, 3, 6, 4, 6, 1]).should eq [1, 1, 4, 3, 6, 4, 9, 6] + end + it "test_ex3" do + numbergame([1, 2, 2, 3]).should eq [2, 1, 3, 2] + end +end diff --git a/challenge-268/roger-bell-west/javascript/ch-1.js b/challenge-268/roger-bell-west/javascript/ch-1.js new file mode 100755 index 0000000000..a0b78e4d4c --- /dev/null +++ b/challenge-268/roger-bell-west/javascript/ch-1.js @@ -0,0 +1,26 @@ +#! /usr/bin/node + +"use strict" + +function magicnumber(a, b) { + return Math.min(...b) - Math.min(...a) +} + +if (magicnumber([3, 7, 5], [9, 5, 7]) == 2) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (magicnumber([1, 2, 1], [5, 4, 4]) == 3) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (magicnumber([2], [5]) == 3) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write("\n"); diff --git a/challenge-268/roger-bell-west/javascript/ch-2.js b/challenge-268/roger-bell-west/javascript/ch-2.js new file mode 100755 index 0000000000..021ced4a94 --- /dev/null +++ b/challenge-268/roger-bell-west/javascript/ch-2.js @@ -0,0 +1,60 @@ +#! /usr/bin/node + +"use strict" + +function numbergame(a0) { + let out = []; + let a = a0; + a.sort(); + for (let i = 0; i < a.length; i += 2) { + out.push(a[i + 1]); + out.push(a[i]); + } + return out; +} + +// by Frank Tan +// https://stackoverflow.com/questions/38400594/javascript-deep-comparison +function deepEqual(a,b) +{ + if( (typeof a == 'object' && a != null) && + (typeof b == 'object' && b != null) ) + { + var count = [0,0]; + for( var key in a) count[0]++; + for( var key in b) count[1]++; + if( count[0]-count[1] != 0) {return false;} + for( var key in a) + { + if(!(key in b) || !deepEqual(a[key],b[key])) {return false;} + } + for( var key in b) + { + if(!(key in a) || !deepEqual(b[key],a[key])) {return false;} + } + return true; + } + else + { + return a === b; + } +} + +if (deepEqual(numbergame([2, 5, 3, 4]), [3, 2, 5, 4])) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (deepEqual(numbergame([9, 4, 1, 3, 6, 4, 6, 1]), [1, 1, 4, 3, 6, 4, 9, 6])) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write(" "); +if (deepEqual(numbergame([1, 2, 2, 3]), [2, 1, 3, 2])) { + process.stdout.write("Pass"); +} else { + process.stdout.write("FAIL"); +} +process.stdout.write("\n"); diff --git a/challenge-268/roger-bell-west/kotlin/ch-1.kt b/challenge-268/roger-bell-west/kotlin/ch-1.kt new file mode 100644 index 0000000000..05a9fb3d47 --- /dev/null +++ b/challenge-268/roger-bell-west/kotlin/ch-1.kt @@ -0,0 +1,26 @@ +fun magicnumber(a: List<Int>, b: List<Int>): Int { + return b.minOrNull()!! - a.minOrNull()!! +} + +fun main() { + + if (magicnumber(listOf(3, 7, 5), listOf(9, 5, 7)) == 2) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (magicnumber(listOf(1, 2, 1), listOf(5, 4, 4)) == 3) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (magicnumber(listOf(2), listOf(5)) == 3) { + print("Pass") + } else { + print("Fail") + } + println("") + +} diff --git a/challenge-268/roger-bell-west/kotlin/ch-2.kt b/challenge-268/roger-bell-west/kotlin/ch-2.kt new file mode 100644 index 0000000000..7307bb8934 --- /dev/null +++ b/challenge-268/roger-bell-west/kotlin/ch-2.kt @@ -0,0 +1,32 @@ +fun numbergame(a0: List<Int>): List<Int> { + var out = ArrayList<Int>() + val a = a0.sorted() + for (s in a.chunked(2)) { + out.add(s[1]) + out.add(s[0]) + } + return out.toList() +} + +fun main() { + + if (numbergame(listOf(2, 5, 3, 4)) == listOf(3, 2, 5, 4)) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (numbergame(listOf(9, 4, 1, 3, 6, 4, 6, 1)) == listOf(1, 1, 4, 3, 6, 4, 9, 6)) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (numbergame(listOf(1, 2, 2, 3)) == listOf(2, 1, 3, 2)) { + print("Pass") + } else { + print("Fail") + } + println("") + +} diff --git a/challenge-268/roger-bell-west/lua/ch-1.lua b/challenge-268/roger-bell-west/lua/ch-1.lua new file mode 100755 index 0000000000..27e9244c87 --- /dev/null +++ b/challenge-268/roger-bell-west/lua/ch-1.lua @@ -0,0 +1,27 @@ +#! /usr/bin/lua + +function magicnumber(a, b) + return math.min(table.unpack(b)) - math.min(table.unpack(a)) +end + +if magicnumber({3, 7, 5}, {9, 5, 7}) == 2 then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if magicnumber({1, 2, 1}, {5, 4, 4}) == 3 then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if magicnumber({2}, {5}) == 3 then + io.write("Pass") +else + io.write("FAIL") +end +print("") + diff --git a/challenge-268/roger-bell-west/lua/ch-2.lua b/challenge-268/roger-bell-west/lua/ch-2.lua new file mode 100755 index 0000000000..153513641c --- /dev/null +++ b/challenge-268/roger-bell-west/lua/ch-2.lua @@ -0,0 +1,63 @@ +#! /usr/bin/lua + +function numbergame(a0) + local out = {} + local a = a0 + table.sort(a) + for i = 1, #a, 2 do + table.insert(out, a[i + 1]) + table.insert(out, a[i]) + end + return out +end + +-- by Michael Anderson at +-- https://stackoverflow.com/questions/8722620/comparing-two-index-tables-by-index-value-in-lua +-- modified by Roger +function recursive_compare(t1,t2) + -- Use usual comparison first. + if t1==t2 then return true end + -- We only support non-default behavior for tables + if (type(t1)~="table") then return false end + -- They better have the same metatables + local mt1 = getmetatable(t1) + local mt2 = getmetatable(t2) + if( not recursive_compare(mt1,mt2) ) then return false end + -- Build list of all keys + local kk = {} + for k1, _ in pairs(t1) do + kk[k1] = true + end + for k2, _ in pairs(t2) do + kk[k2] = true + end + -- Check each key that exists in at least one table + for _, k in ipairs(kk) do + if (not recursive_compare(t1[k], t2[k])) then + return false + end + end + return true +end + +if recursive_compare(numbergame({2, 5, 3, 4}), {3, 2, 5, 4}) then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if recursive_compare(numbergame({9, 4, 1, 3, 6, 4, 6, 1}), {1, 1, 4, 3, 6, 4, 9, 6}) then + io.write("Pass") +else + io.write("FAIL") +end +io.write(" ") + +if recursive_compare(numbergame({1, 2, 2, 3}), {2, 1, 3, 2}) then + io.write("Pass") +else + io.write("FAIL") +end +print("") + diff --git a/challenge-268/roger-bell-west/perl/ch-1.pl b/challenge-268/roger-bell-west/perl/ch-1.pl new file mode 100755 index 0000000000..f2d93c832e --- /dev/null +++ b/challenge-268/roger-bell-west/perl/ch-1.pl @@ -0,0 +1,17 @@ +#! /usr/bin/perl + +use strict; +use warnings; +use experimental 'signatures'; + +use Test::More tests => 3; + +is(magicnumber([3, 7, 5], [9, 5, 7]), 2, 'example 1'); +is(magicnumber([1, 2, 1], [5, 4, 4]), 3, 'example 2'); +is(magicnumber([2], [5]), 3, 'example 3'); + +use List::Util qw(min); + +sub magicnumber($a, $b) { + return min(@{$b}) - min(@{$a}); +} diff --git a/challenge-268/roger-bell-west/perl/ch-2.pl b/challenge-268/roger-bell-west/perl/ch-2.pl new file mode 100755 index 0000000000..6ae1fb07f6 --- /dev/null +++ b/challenge-268/roger-bell-west/perl/ch-2.pl @@ -0,0 +1,23 @@ +#! /usr/bin/perl + +use strict; +use warnings; +use experimental 'signatures'; + +use Test::More tests => 3; + +is_deeply(numbergame([2, 5, 3, 4]), [3, 2, 5, 4], 'example 1'); +is_deeply(numbergame([9, 4, 1, 3, 6, 4, 6, 1]), [1, 1, 4, 3, 6, 4, 9, 6], 'example 2'); +is_deeply(numbergame([1, 2, 2, 3]), [2, 1, 3, 2], 'example 3'); + +use List::Util qw(pairs); + +sub numbergame($a0) { + my @out; + my @a = sort {$::a <=> $::b }@{$a0}; + foreach my $p (pairs @a) { + push @out, $p->[1]; + push @out, $p->[0]; + } + return \@out; +} diff --git a/challenge-268/roger-bell-west/postscript/ch-1.ps b/challenge-268/roger-bell-west/postscript/ch-1.ps new file mode 100644 index 0000000000..dce4868a68 --- /dev/null +++ b/challenge-268/roger-bell-west/postscript/ch-1.ps @@ -0,0 +1,63 @@ +%!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 + +/reduce { % array proc -> value + 2 dict begin + /p exch def + /a exch def + a 0 get + 1 1 a length 1 sub { + a exch get + p + } for + end +} bind def + +/listmin { + { min } reduce +} 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 + +/magicnumber { + listmin exch listmin sub +} bind def + +(magicnumber) test.start +[3 7 5] [9 5 7] magicnumber 2 eq test +[1 2 1] [5 4 4] magicnumber 3 eq test +[2] [5] magicnumber 3 eq test +test.end diff --git a/challenge-268/roger-bell-west/postscript/ch-2.ps b/challenge-268/roger-bell-west/postscript/ch-2.ps new file mode 100644 index 0000000000..49ed0cd2eb --- /dev/null +++ b/challenge-268/roger-bell-west/postscript/ch-2.ps @@ -0,0 +1,202 @@ +%!PS + +% begin included library code +% see https://codeberg.org/Firedrake/postscript-libraries/ +/deepeq { + 2 dict begin + /a exch def + /b exch def + a type b type eq { + a type /dicttype eq { + a length b length eq { + << + a { + pop + true + } forall + b { + pop + true + } forall + >> + true exch + { + pop + dup a exch known { + dup b exch known { + dup a exch get exch b exch get deepeq not { + pop false + } if + } { + false + } ifelse + } { + false + } ifelse + } forall + } { + false + } ifelse + } { + a type dup /arraytype eq exch /stringtype eq or { + a length b length eq { + true + 0 1 a length 1 sub { + dup a exch get exch b exch get deepeq not { + pop false + exit + } if + } for + } { + false + } ifelse + } { + a b eq + } ifelse + } ifelse + } { + false + } ifelse + end +} bind def + +/quicksort { + { quicksort.cmp } quicksort.with_comparator +} bind def + +/quicksort.with_comparator { % [ a c b ] { comparator } -> [ a b c ] + 2 dict begin + /cmp exch def + /arr exch def + arr length 0 gt { + 0 arr length 1 sub quicksort.main + } if + arr + end +} bind def + +/quicksort.cmp { + 2 copy + lt { + pop pop -1 + } { + gt { + 1 + } { + 0 + } ifelse + } 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 + +/quicksort.partition { + 3 dict begin + /pivot arr hi lo add 2 idiv get def + /i lo 1 sub def + /j hi 1 add def + { + { + /i i 1 add def + arr i get pivot cmp 0 ge { + exit + } if + } loop + { + /j j 1 sub def + arr j get pivot cmp 0 le { + exit + } if + } loop + i j ge { + j + exit + } if + i j quicksort.swap + } loop + end +} bind def + +/quicksort.swap { + 2 dict begin + /bi exch def + /ai exch def + arr ai get + arr bi get + arr exch ai exch put + arr exch bi exch put + 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 + +/quicksort.main { % lo hi -> (null) + 3 dict begin + /hi exch def + /lo exch def + /xit false def + lo 0 lt { + /xit true def + } if + hi 0 lt { + /xit true def + } if + lo hi ge { + /xit true def + } if + xit not { + /p quicksort.partition def + lo p quicksort.main + p 1 add hi quicksort.main + } if + end +} bind def + + +% end included library code + +/numbergame { + 0 dict begin + quicksort + [ exch + aload length /l exch def + l 2 idiv { + exch + l 2 roll + } repeat + ] + end +} bind def + +(numbergame) test.start +[2 5 3 4] numbergame [3 2 5 4] deepeq test +[9 4 1 3 6 4 6 1] numbergame [1 1 4 3 6 4 9 6] deepeq test +[1 2 2 3] numbergame [2 1 3 2] deepeq test +test.end diff --git a/challenge-268/roger-bell-west/python/ch-1.py b/challenge-268/roger-bell-west/python/ch-1.py new file mode 100755 index 0000000000..3e3e70f8e8 --- /dev/null +++ b/challenge-268/roger-bell-west/python/ch-1.py @@ -0,0 +1,19 @@ +#! /usr/bin/python3 + +def magicnumber(a, b): + return min(b) - min(a) + +import unittest + +class TestMagicnumber(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(magicnumber([3, 7, 5], [9, 5, 7]), 2, 'example 1') + + def test_ex2(self): + self.assertEqual(magicnumber([1, 2, 1], [5, 4, 4]), 3, 'example 2') + + def test_ex3(self): + self.assertEqual(magicnumber([2], [5]), 3, 'example 3') + +unittest.main() diff --git a/challenge-268/roger-bell-west/python/ch-2.py b/challenge-268/roger-bell-west/python/ch-2.py new file mode 100755 index 0000000000..0555e51797 --- /dev/null +++ b/challenge-268/roger-bell-west/python/ch-2.py @@ -0,0 +1,24 @@ +#! /usr/bin/python3 + +def numbergame(a0): + out = [] + a = sorted(a0) + for i in range(0, len(a), 2): + out.append(a[i + 1]) + out.append(a[i]) + return out + +import unittest + +class TestNumbergame(unittest.TestCase): + + def test_ex1(self): + self.assertEqual(numbergame([2, 5, 3, 4]), [3, 2, 5, 4], 'example 1') + + def test_ex2(self): + self.assertEqual(numbergame([9, 4, 1, 3, 6, 4, 6, 1]), [1, 1, 4, 3, 6, 4, 9, 6], 'example 2') + + def test_ex3(self): + self.assertEqual(numbergame([1, 2, 2, 3]), [2, 1, 3, 2], 'example 3') + +unittest.main() diff --git a/challenge-268/roger-bell-west/raku/ch-1.p6 b/challenge-268/roger-bell-west/raku/ch-1.p6 new file mode 100755 index 0000000000..3f2ff0e83c --- /dev/null +++ b/challenge-268/roger-bell-west/raku/ch-1.p6 @@ -0,0 +1,13 @@ +#! /usr/bin/raku + +use Test; + +plan 3; + +is(magicnumber([3, 7, 5], [9, 5, 7]), 2, 'example 1'); +is(magicnumber([1, 2, 1], [5, 4, 4]), 3, 'example 2'); +is(magicnumber([2], [5]), 3, 'example 3'); + +sub magicnumber(@a, @b) { + return min(@b) - min(@a); +} diff --git a/challenge-268/roger-bell-west/raku/ch-2.p6 b/challenge-268/roger-bell-west/raku/ch-2.p6 new file mode 100755 index 0000000000..6185c8f799 --- /dev/null +++ b/challenge-268/roger-bell-west/raku/ch-2.p6 @@ -0,0 +1,19 @@ +#! /usr/bin/raku + +use Test; + +plan 3; + +is-deeply(numbergame([2, 5, 3, 4]), [3, 2, 5, 4], 'example 1'); +is-deeply(numbergame([9, 4, 1, 3, 6, 4, 6, 1]), [1, 1, 4, 3, 6, 4, 9, 6], 'example 2'); +is-deeply(numbergame([1, 2, 2, 3]), [2, 1, 3, 2], 'example 3'); + +sub numbergame(@a0) { + my @out; + my @a = @a0.sort({$^a <=> $^b}); + for @a -> $i, $j { + @out.push($j); + @out.push($i); + } + return @out; +} diff --git a/challenge-268/roger-bell-west/ruby/ch-1.rb b/challenge-268/roger-bell-west/ruby/ch-1.rb new file mode 100755 index 0000000000..878bb341d9 --- /dev/null +++ b/challenge-268/roger-bell-west/ruby/ch-1.rb @@ -0,0 +1,23 @@ +#! /usr/bin/ruby + +def magicnumber(a, b) + return b.min - a.min +end + +require 'test/unit' + +class TestMagicnumber < Test::Unit::TestCase + + def test_ex1 + assert_equal(2, magicnumber([3, 7, 5], [9, 5, 7])) + end + + def test_ex2 + assert_equal(3, magicnumber([1, 2, 1], [5, 4, 4])) + end + + def test_ex3 + assert_equal(3, magicnumber([2], [5])) + end + +end diff --git a/challenge-268/roger-bell-west/ruby/ch-2.rb b/challenge-268/roger-bell-west/ruby/ch-2.rb new file mode 100755 index 0000000000..a28098af5f --- /dev/null +++ b/challenge-268/roger-bell-west/ruby/ch-2.rb @@ -0,0 +1,29 @@ +#! /usr/bin/ruby + +def numbergame(a0) + out = [] + a = a0.sort + a.each_slice(2) do |s| + out.push(s[1]) + out.push(s[0]) + end + return out +end + +require 'test/unit' + +class TestNumbergame < Test::Unit::TestCase + + def test_ex1 + assert_equal([3, 2, 5, 4], numbergame([2, 5, 3, 4])) + end + + def test_ex2 + assert_equal([1, 1, 4, 3, 6, 4, 9, 6], numbergame([9, 4, 1, 3, 6, 4, 6, 1])) + end + + def test_ex3 + assert_equal([2, 1, 3, 2], numbergame([1, 2, 2, 3])) + end + +end diff --git a/challenge-268/roger-bell-west/rust/ch-1.rs b/challenge-268/roger-bell-west/rust/ch-1.rs new file mode 100755 index 0000000000..ce508c5276 --- /dev/null +++ b/challenge-268/roger-bell-west/rust/ch-1.rs @@ -0,0 +1,21 @@ +#! /bin/sh +//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x --nocapture; rm -f ${0}x ; exit + +#[test] +fn test_ex1() { + assert_eq!(magicnumber(vec![3, 7, 5], vec![9, 5, 7]), 2); +} + +#[test] +fn test_ex2() { + assert_eq!(magicnumber(vec![1, 2, 1], vec![5, 4, 4]), 3); +} + +#[test] +fn test_ex3() { + assert_eq!(magicnumber(vec![2], vec![5]), 3); +} + +fn magicnumber(a: Vec<i32>, b: Vec<i32>) -> i32 { + b.iter().min().unwrap() - a.iter().min().unwrap() +} diff --git a/challenge-268/roger-bell-west/rust/ch-2.rs b/challenge-268/roger-bell-west/rust/ch-2.rs new file mode 100755 index 0000000000..304ba5eba9 --- /dev/null +++ b/challenge-268/roger-bell-west/rust/ch-2.rs @@ -0,0 +1,32 @@ +#! /bin/sh +//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x --nocapture; rm -f ${0}x ; exit + +#[test] +fn test_ex1() { + assert_eq!(numbergame(vec![2, 5, 3, 4]), vec![3, 2, 5, 4]); +} + +#[test] +fn test_ex2() { + assert_eq!( + numbergame(vec![9, 4, 1, 3, 6, 4, 6, 1]), + vec![1, 1, 4, 3, 6, 4, 9, 6] + ); +} + +#[test] +fn test_ex3() { + assert_eq!(numbergame(vec![1, 2, 2, 3]), vec![2, 1, 3, 2]); +} + +fn numbergame(a0: Vec<i32>) -> Vec<i32> { + let mut out = Vec::new(); + let mut a = a0; + a.sort(); + let mut ai = a.iter(); + while let Some(i) = ai.next() { + out.push(*ai.next().unwrap()); + out.push(*i); + } + out +} diff --git a/challenge-268/roger-bell-west/scala/ch-1.scala b/challenge-268/roger-bell-west/scala/ch-1.scala new file mode 100644 index 0000000000..3fa6dc5e5f --- /dev/null +++ b/challenge-268/roger-bell-west/scala/ch-1.scala @@ -0,0 +1,27 @@ + +object Magicnumber { + def magicnumber(a: List[Int], b: List[Int]): Int = { + return b.min - a.min + } + def main(args: Array[String]) { + if (magicnumber(List(3, 7, 5), List(9, 5, 7)) == 2) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (magicnumber(List(1, 2, 1), List(5, 4, 4)) == 3) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (magicnumber(List(2), List(5)) == 3) { + print("Pass") + } else { + print("Fail") + } + println("") + + } +} diff --git a/challenge-268/roger-bell-west/scala/ch-2.scala b/challenge-268/roger-bell-west/scala/ch-2.scala new file mode 100644 index 0000000000..c153ef4a94 --- /dev/null +++ b/challenge-268/roger-bell-west/scala/ch-2.scala @@ -0,0 +1,34 @@ +import scala.collection.mutable.ListBuffer + +object Numbergame { + def numbergame(a0: List[Int]): List[Int] = { + var out = new ListBuffer[Int] + val a = a0.sortWith(_ < _) + for (s <- a.grouped(2)) { + out += s(1) + out += s(0) + } + return out.toList + } + def main(args: Array[String]) { + if (numbergame(List(2, 5, 3, 4)) == List(3, 2, 5, 4)) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (numbergame(List(9, 4, 1, 3, 6, 4, 6, 1)) == List(1, 1, 4, 3, 6, 4, 9, 6)) { + print("Pass") + } else { + print("Fail") + } + print(" ") + if (numbergame(List(1, 2, 2, 3)) == List(2, 1, 3, 2)) { + print("Pass") + } else { + print("Fail") + } + println("") + + } +} diff --git a/challenge-268/roger-bell-west/tests.json b/challenge-268/roger-bell-west/tests.json new file mode 100644 index 0000000000..4e99abc4f7 --- /dev/null +++ b/challenge-268/roger-bell-west/tests.json @@ -0,0 +1,44 @@ +{ + "ch-1" : [ + { + "function" : "magicnumber", + "multiarg" : true, + "arguments" : [ + [ 3, 7, 5 ], + [ 9, 5, 7 ] + ], + "result" : 2 + }, + { + "multiarg" : true, + "arguments" : [ + [ 1, 2, 1 ], + [ 5, 4, 4 ] + ], + "result" : 3 + }, + { + "multiarg" : 1, + "arguments" : [ + [ 2 ], + [ 5 ] + ], + "result" : 3 + } + ], + "ch-2" : [ + { + "function" : "numbergame", + "arguments" : [ 2, 5, 3, 4 ], + "result" : [ 3, 2, 5, 4 ] + }, + { + "arguments" : [ 9, 4, 1, 3, 6, 4, 6, 1 ], + "result" : [ 1, 1, 4, 3, 6, 4, 9, 6 ] + }, + { + "result" : [ 2, 1, 3, 2 ], + "arguments" : [ 1, 2, 2, 3 ] + } + ] +} |
