diff options
| author | Mohammad Sajid Anwar <Mohammad.Anwar@yahoo.com> | 2024-08-18 15:09:16 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-18 15:09:16 +0100 |
| commit | d833fec8f6b78d515f045bcbe24f29e2ada46670 (patch) | |
| tree | cbff229e0221aa7330b135761d8953973c11bddc | |
| parent | 786a7af32b40f7790ca44a06db0b0295d2a15927 (diff) | |
| parent | add8d7fd4eb2ad39bd4e70bc0f2566b3d5528f21 (diff) | |
| download | perlweeklychallenge-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.md | 4 | ||||
| -rw-r--r-- | challenge-282/sgreen/bog.txt | 1 | ||||
| -rwxr-xr-x | challenge-282/sgreen/perl/ch-1.pl | 26 | ||||
| -rwxr-xr-x | challenge-282/sgreen/perl/ch-2.pl | 29 | ||||
| -rwxr-xr-x | challenge-282/sgreen/python/ch-1.py | 30 | ||||
| -rwxr-xr-x | challenge-282/sgreen/python/ch-2.py | 32 | ||||
| -rwxr-xr-x | challenge-282/sgreen/python/test.py | 21 |
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() |
