aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoger Bell_West <roger@firedrake.org>2021-05-03 14:10:33 +0100
committerRoger Bell_West <roger@firedrake.org>2021-05-03 14:10:33 +0100
commit533b087a2db50b2c9214c758d7d0243cba0ab8d8 (patch)
tree5b32924d916f868327e0da32a8a5490db03846c2
parent0381a39b17ccd040302474f25d3c1cbbef703327 (diff)
downloadperlweeklychallenge-club-533b087a2db50b2c9214c758d7d0243cba0ab8d8.tar.gz
perlweeklychallenge-club-533b087a2db50b2c9214c758d7d0243cba0ab8d8.tar.bz2
perlweeklychallenge-club-533b087a2db50b2c9214c758d7d0243cba0ab8d8.zip
Solutions to challenge #111.
-rwxr-xr-xchallenge-111/roger-bell-west/perl/ch-1.pl37
-rwxr-xr-xchallenge-111/roger-bell-west/perl/ch-2.pl22
-rwxr-xr-xchallenge-111/roger-bell-west/python/ch-1.py33
-rwxr-xr-xchallenge-111/roger-bell-west/python/ch-2.py19
-rwxr-xr-xchallenge-111/roger-bell-west/raku/ch-1.p634
-rwxr-xr-xchallenge-111/roger-bell-west/raku/ch-2.p618
-rwxr-xr-xchallenge-111/roger-bell-west/ruby/ch-1.rb42
-rwxr-xr-xchallenge-111/roger-bell-west/ruby/ch-2.rb21
-rwxr-xr-xchallenge-111/roger-bell-west/rust/ch-1.rs41
-rwxr-xr-xchallenge-111/roger-bell-west/rust/ch-2.rs30
10 files changed, 297 insertions, 0 deletions
diff --git a/challenge-111/roger-bell-west/perl/ch-1.pl b/challenge-111/roger-bell-west/perl/ch-1.pl
new file mode 100755
index 0000000000..e60b344d0d
--- /dev/null
+++ b/challenge-111/roger-bell-west/perl/ch-1.pl
@@ -0,0 +1,37 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+
+is(sm([[ 1, 2, 3, 5, 7 ],
+ [ 9, 11, 15, 19, 20 ],
+ [ 23, 24, 25, 29, 31 ],
+ [ 32, 33, 39, 40, 42 ],
+ [ 45, 47, 48, 49, 50 ]],35),0,'example 1');
+
+is(sm([[ 1, 2, 3, 5, 7 ],
+ [ 9, 11, 15, 19, 20 ],
+ [ 23, 24, 25, 29, 31 ],
+ [ 32, 33, 39, 40, 42 ],
+ [ 45, 47, 48, 49, 50 ]],39),1,'example 2');
+
+sub sm {
+ my ($matrix,$search)=@_;
+ my $f=0;
+ foreach my $row (@{$matrix}) {
+ if ($row->[0] <= $search) {
+ if ($row->[-1] >= $search) {
+ if (exists {map {$_ => 1} @{$row}}->{$search}) {
+ $f=1;
+ }
+ last;
+ }
+ } else {
+ last;
+ }
+ }
+ return $f;
+}
+
diff --git a/challenge-111/roger-bell-west/perl/ch-2.pl b/challenge-111/roger-bell-west/perl/ch-2.pl
new file mode 100755
index 0000000000..0bf05384eb
--- /dev/null
+++ b/challenge-111/roger-bell-west/perl/ch-2.pl
@@ -0,0 +1,22 @@
+#! /usr/bin/perl
+
+use strict;
+use warnings;
+
+my $ml=0;
+my @r;
+while (<>) {
+ chomp;
+ my $l=length($_);
+ if ($l >= $ml) {
+ if (join('',sort split '',$_) eq $_) {
+ if ($l > $ml) {
+ @r=();
+ $ml=$l;
+ }
+ push @r,$_;
+ }
+ }
+}
+
+print map{"$_\n"} @r;
diff --git a/challenge-111/roger-bell-west/python/ch-1.py b/challenge-111/roger-bell-west/python/ch-1.py
new file mode 100755
index 0000000000..37c20999bc
--- /dev/null
+++ b/challenge-111/roger-bell-west/python/ch-1.py
@@ -0,0 +1,33 @@
+#! /usr/bin/python3
+
+import unittest
+
+def sm(matrix,search):
+ f=0
+ for row in matrix:
+ if row[0] <= search:
+ if row[len(row)-1] >= search:
+ if search in row:
+ f=1
+ break
+ else:
+ break
+ return f
+
+class TestSm(unittest.TestCase):
+
+ def test_ex1(self):
+ self.assertEqual(sm([[ 1, 2, 3, 5, 7 ],
+ [ 9, 11, 15, 19, 20 ],
+ [ 23, 24, 25, 29, 31 ],
+ [ 32, 33, 39, 40, 42 ],
+ [ 45, 47, 48, 49, 50 ]],35),0,'example 1');
+
+ def test_ex2(self):
+ self.assertEqual(sm([[ 1, 2, 3, 5, 7 ],
+ [ 9, 11, 15, 19, 20 ],
+ [ 23, 24, 25, 29, 31 ],
+ [ 32, 33, 39, 40, 42 ],
+ [ 45, 47, 48, 49, 50 ]],39),1,'example 2');
+
+unittest.main()
diff --git a/challenge-111/roger-bell-west/python/ch-2.py b/challenge-111/roger-bell-west/python/ch-2.py
new file mode 100755
index 0000000000..d145d4f981
--- /dev/null
+++ b/challenge-111/roger-bell-west/python/ch-2.py
@@ -0,0 +1,19 @@
+#! /usr/bin/python3
+
+import fileinput
+
+ml=0
+r=list()
+for line in fileinput.input():
+ l=len(line)
+ if l >= ml:
+ line=line.rstrip()
+ ll=list(line)
+ if sorted(ll) == ll:
+ if l > ml:
+ r=list()
+ ml=l
+ r.append(line)
+
+for l in r:
+ print(l)
diff --git a/challenge-111/roger-bell-west/raku/ch-1.p6 b/challenge-111/roger-bell-west/raku/ch-1.p6
new file mode 100755
index 0000000000..b5d27bc674
--- /dev/null
+++ b/challenge-111/roger-bell-west/raku/ch-1.p6
@@ -0,0 +1,34 @@
+#! /usr/bin/perl6
+
+use Test;
+plan 2;
+
+is(sm(([ 1, 2, 3, 5, 7 ],
+ [ 9, 11, 15, 19, 20 ],
+ [ 23, 24, 25, 29, 31 ],
+ [ 32, 33, 39, 40, 42 ],
+ [ 45, 47, 48, 49, 50 ]),35),0,'example 1');
+
+is(sm(([ 1, 2, 3, 5, 7 ],
+ [ 9, 11, 15, 19, 20 ],
+ [ 23, 24, 25, 29, 31 ],
+ [ 32, 33, 39, 40, 42 ],
+ [ 45, 47, 48, 49, 50 ]),39),1,'example 2');
+
+sub sm(@matrix,$search) {
+ my $f=0;
+ for (@matrix) -> @row {
+ if (@row[0] <= $search) {
+ if (@row[*-1] >= $search) {
+ if ($search ∈ @row) {
+ $f=1;
+ }
+ last;
+ }
+ } else {
+ last;
+ }
+ }
+ return $f;
+}
+
diff --git a/challenge-111/roger-bell-west/raku/ch-2.p6 b/challenge-111/roger-bell-west/raku/ch-2.p6
new file mode 100755
index 0000000000..d3c2d94a08
--- /dev/null
+++ b/challenge-111/roger-bell-west/raku/ch-2.p6
@@ -0,0 +1,18 @@
+#! /usr/bin/perl6
+
+my $ml=0;
+my @r;
+for lines() {
+ my $l=chars($_);
+ if ($l >= $ml) {
+ if ($_.comb.sort.join('') eq $_) {
+ if ($l > $ml) {
+ @r=();
+ $ml=$l;
+ }
+ push @r,$_;
+ }
+ }
+}
+
+say $_ for @r;
diff --git a/challenge-111/roger-bell-west/ruby/ch-1.rb b/challenge-111/roger-bell-west/ruby/ch-1.rb
new file mode 100755
index 0000000000..93cbf26a1c
--- /dev/null
+++ b/challenge-111/roger-bell-west/ruby/ch-1.rb
@@ -0,0 +1,42 @@
+#! /usr/bin/ruby
+
+def sm(matrix,search)
+ f=0
+ matrix.each {|row|
+ if row[0] <= search then
+ if row[-1] >= search then
+ if row.include?(search) then
+ f=1
+ end
+ break
+ end
+ else
+ break
+ end
+ }
+ return f
+end
+
+require 'test/unit'
+
+class TestSm < Test::Unit::TestCase
+
+ def test_ex1
+ assert_equal(0,sm([[ 1, 2, 3, 5, 7 ],
+ [ 9, 11, 15, 19, 20 ],
+ [ 23, 24, 25, 29, 31 ],
+ [ 32, 33, 39, 40, 42 ],
+ [ 45, 47, 48, 49, 50 ]],35))
+ end
+
+
+ def test_ex2
+ assert_equal(1,sm([[ 1, 2, 3, 5, 7 ],
+ [ 9, 11, 15, 19, 20 ],
+ [ 23, 24, 25, 29, 31 ],
+ [ 32, 33, 39, 40, 42 ],
+ [ 45, 47, 48, 49, 50 ]],39))
+ end
+
+
+end
diff --git a/challenge-111/roger-bell-west/ruby/ch-2.rb b/challenge-111/roger-bell-west/ruby/ch-2.rb
new file mode 100755
index 0000000000..0adaf19daf
--- /dev/null
+++ b/challenge-111/roger-bell-west/ruby/ch-2.rb
@@ -0,0 +1,21 @@
+#! /usr/bin/ruby
+
+ml=0
+r=[]
+while line=gets
+ l=line.length()
+ line=line.chomp()
+ if l >= ml then
+ if line.split('').sort.join('') == line then
+ if l > ml then
+ r=[]
+ ml=l
+ end
+ r.push(line)
+ end
+ end
+end
+
+r.each {|l|
+ print "#{l}\n"
+}
diff --git a/challenge-111/roger-bell-west/rust/ch-1.rs b/challenge-111/roger-bell-west/rust/ch-1.rs
new file mode 100755
index 0000000000..0d3d97bbbe
--- /dev/null
+++ b/challenge-111/roger-bell-west/rust/ch-1.rs
@@ -0,0 +1,41 @@
+#! /bin/sh
+//usr/bin/env rustc --test $0 -o ${0}x && ./${0}x; rm -f ${0}x ; exit
+
+#[test]
+fn test_ex1() {
+ assert_eq!(sm(vec![
+ vec![1,2,3,5,7],
+ vec![9,11,15,19,20],
+ vec![23,24,25,29,31],
+ vec![32,33,39,40,42],
+ vec![45,47,48,49,50]
+ ],35),0);
+}
+
+#[test]
+fn test_ex2() {
+ assert_eq!(sm(vec![
+ vec![1,2,3,5,7],
+ vec![9,11,15,19,20],
+ vec![23,24,25,29,31],
+ vec![32,33,39,40,42],
+ vec![45,47,48,49,50]
+ ],39),1);
+}
+
+fn sm(matrix: Vec<Vec<u64>>,search: u64) -> u8 {
+ let mut f=0;
+ for row in matrix {
+ if row[0] <= search {
+ if row[row.len()-1] >= search {
+ if row.contains(&search) {
+ f=1;
+ }
+ break;
+ }
+ } else {
+ break;
+ }
+ }
+ return f;
+}
diff --git a/challenge-111/roger-bell-west/rust/ch-2.rs b/challenge-111/roger-bell-west/rust/ch-2.rs
new file mode 100755
index 0000000000..a944698628
--- /dev/null
+++ b/challenge-111/roger-bell-west/rust/ch-2.rs
@@ -0,0 +1,30 @@
+#! /bin/sh
+//usr/bin/env rustc $0 -o ${0}x && ./${0}x; rm -f ${0}x ; exit
+
+use std::io;
+use std::io::prelude::*;
+
+fn main() {
+ let mut r: Vec<String>=vec![];
+ let mut ml: usize=0;
+ let stdin = io::stdin();
+ for li in stdin.lock().lines() {
+ let line=li.unwrap();
+ let l=line.len();
+ if l >= ml {
+ let ll: Vec<char>=line.chars().collect::<Vec<_>>();
+ let mut ls=ll.clone();
+ ls.sort();
+ if ll == ls {
+ if l > ml {
+ r=vec![];
+ ml=l;
+ }
+ r.push(line);
+ }
+ }
+ }
+ for l in r {
+ println!("{}",l);
+ }
+}