aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Sajid Anwar <Mohammad.Anwar@yahoo.com>2024-08-18 15:09:16 +0100
committerGitHub <noreply@github.com>2024-08-18 15:09:16 +0100
commitd833fec8f6b78d515f045bcbe24f29e2ada46670 (patch)
treecbff229e0221aa7330b135761d8953973c11bddc
parent786a7af32b40f7790ca44a06db0b0295d2a15927 (diff)
parentadd8d7fd4eb2ad39bd4e70bc0f2566b3d5528f21 (diff)
downloadperlweeklychallenge-club-d833fec8f6b78d515f045bcbe24f29e2ada46670.tar.gz
perlweeklychallenge-club-d833fec8f6b78d515f045bcbe24f29e2ada46670.tar.bz2
perlweeklychallenge-club-d833fec8f6b78d515f045bcbe24f29e2ada46670.zip
Merge pull request #10637 from simongreen-net/master
sgreen solutions to challenge 282
-rw-r--r--challenge-282/sgreen/README.md4
-rw-r--r--challenge-282/sgreen/bog.txt1
-rwxr-xr-xchallenge-282/sgreen/perl/ch-1.pl26
-rwxr-xr-xchallenge-282/sgreen/perl/ch-2.pl29
-rwxr-xr-xchallenge-282/sgreen/python/ch-1.py30
-rwxr-xr-xchallenge-282/sgreen/python/ch-2.py32
-rwxr-xr-xchallenge-282/sgreen/python/test.py21
7 files changed, 141 insertions, 2 deletions
diff --git a/challenge-282/sgreen/README.md b/challenge-282/sgreen/README.md
index 5716a00b5c..eff69133e3 100644
--- a/challenge-282/sgreen/README.md
+++ b/challenge-282/sgreen/README.md
@@ -1,3 +1,3 @@
-# The Weekly Challenge 281
+# The Weekly Challenge 282
-Blog: [The one about a chess board](https://dev.to/simongreennet/the-one-about-a-chess-board-57mh)
+Blog: [Good keys](https://dev.to/simongreennet/good-keys-2elk)
diff --git a/challenge-282/sgreen/bog.txt b/challenge-282/sgreen/bog.txt
new file mode 100644
index 0000000000..c1f10b4c52
--- /dev/null
+++ b/challenge-282/sgreen/bog.txt
@@ -0,0 +1 @@
+https://dev.to/simongreennet/good-keys-2elk \ No newline at end of file
diff --git a/challenge-282/sgreen/perl/ch-1.pl b/challenge-282/sgreen/perl/ch-1.pl
new file mode 100755
index 0000000000..6880f6d5e7
--- /dev/null
+++ b/challenge-282/sgreen/perl/ch-1.pl
@@ -0,0 +1,26 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use experimental 'signatures';
+
+sub main ($int) {
+ my @value = split //, $int;
+ my $length = scalar(@value);
+
+ foreach my $pos ( 0 .. $length - 3 ) {
+ if ( $value[$pos] == $value[ $pos + 1 ]
+ and $value[$pos] == $value[ $pos + 2 ]
+ and ( $pos == 0 or $value[$pos] != $value[ $pos - 1 ] )
+ and ( $pos + 3 == $length or $value[$pos] != $value[ $pos + 3 ] ) )
+ {
+ say $value[$pos] x 3;
+ return;
+ }
+ }
+
+ say '-1';
+}
+
+main( $ARGV[0] ); \ No newline at end of file
diff --git a/challenge-282/sgreen/perl/ch-2.pl b/challenge-282/sgreen/perl/ch-2.pl
new file mode 100755
index 0000000000..9664def925
--- /dev/null
+++ b/challenge-282/sgreen/perl/ch-2.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+use feature 'say';
+use experimental 'signatures';
+
+sub main ($str) {
+ # Convert the string to lower case
+ $str = lc $str;
+
+ # Start with the first letter
+ my $current_key = substr( $str, 0, 1 );
+
+ # Count the number of times we change keys
+ my $changes = 0;
+
+ foreach my $letter ( split //, $str ) {
+ if ( $letter ne $current_key ) {
+ # We need to change key
+ $current_key = $letter;
+ $changes++;
+ }
+ }
+
+ say $changes;
+}
+
+main( $ARGV[0] ); \ No newline at end of file
diff --git a/challenge-282/sgreen/python/ch-1.py b/challenge-282/sgreen/python/ch-1.py
new file mode 100755
index 0000000000..91178462c1
--- /dev/null
+++ b/challenge-282/sgreen/python/ch-1.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+
+import sys
+
+
+def good_integer(n: int) -> str:
+ # Convert the integer to a string
+ value = str(n)
+ length = len(value)
+
+ for pos in range(length-2):
+ if (
+ value[pos] == value[pos+1]
+ and value[pos] == value[pos+2]
+ and (pos == 0 or value[pos] != value[pos-1])
+ and (pos + 3 == length or value[pos] != value[pos+3])
+ ):
+ return value[pos:pos+3]
+
+ return '-1'
+
+
+def main():
+ # Convert input into an integer
+ result = good_integer(int(sys.argv[1]))
+ print(result)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/challenge-282/sgreen/python/ch-2.py b/challenge-282/sgreen/python/ch-2.py
new file mode 100755
index 0000000000..4673e3aef7
--- /dev/null
+++ b/challenge-282/sgreen/python/ch-2.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python3
+
+import sys
+
+
+def key_changes(s: str) -> int:
+ # Convert the string to lower case
+ s = s.lower()
+
+ # Start with the first letter
+ current_key = s[0]
+
+ # Count the number of times we change keys
+ changes = 0
+
+ for letter in s:
+ if letter != current_key:
+ # We need to change key
+ current_key = letter
+ changes += 1
+
+ return changes
+
+
+def main():
+ # Convert input into integers
+ result = key_changes(sys.argv[1])
+ print(result)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/challenge-282/sgreen/python/test.py b/challenge-282/sgreen/python/test.py
new file mode 100755
index 0000000000..d9a717e276
--- /dev/null
+++ b/challenge-282/sgreen/python/test.py
@@ -0,0 +1,21 @@
+#!/usr/bin/env python3
+
+import unittest
+ch_1 = __import__('ch-1')
+ch_2 = __import__('ch-2')
+
+
+class TestClass(unittest.TestCase):
+ def test_ch_1(self):
+ self.assertEqual(ch_1.good_integer(12344456), '444')
+ self.assertEqual(ch_1.good_integer(1233334), '-1')
+ self.assertEqual(ch_1.good_integer(10020003), '000')
+
+ def test_ch_2(self):
+ self.assertEqual(ch_2.key_changes('pPeERrLl'), 3)
+ self.assertEqual(ch_2.key_changes('rRr'), 0)
+ self.assertEqual(ch_2.key_changes('GoO'), 1)
+
+
+if __name__ == '__main__':
+ unittest.main()