aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaulo Custodio <pauloscustodio@gmail.com>2024-09-05 18:43:38 +0100
committerPaulo Custodio <pauloscustodio@gmail.com>2024-09-05 18:43:38 +0100
commit73c1b95cf0dd273786e892c654a76da97658eea1 (patch)
treeb8d09032813e9525bed2db20025d4fb9bb5b50f2
parentf10dac9c38d04b762a0ce20fb1be160fd0d9b02c (diff)
downloadperlweeklychallenge-club-73c1b95cf0dd273786e892c654a76da97658eea1.tar.gz
perlweeklychallenge-club-73c1b95cf0dd273786e892c654a76da97658eea1.tar.bz2
perlweeklychallenge-club-73c1b95cf0dd273786e892c654a76da97658eea1.zip
Add Python solution to challenge 282
-rw-r--r--challenge-282/paulo-custodio/perl/ch-1.pl3
-rw-r--r--challenge-282/paulo-custodio/perl/ch-2.pl2
-rw-r--r--challenge-282/paulo-custodio/python/ch-1.py39
-rw-r--r--challenge-282/paulo-custodio/python/ch-2.py43
-rw-r--r--challenge-282/paulo-custodio/t/test-1.yaml5
5 files changed, 90 insertions, 2 deletions
diff --git a/challenge-282/paulo-custodio/perl/ch-1.pl b/challenge-282/paulo-custodio/perl/ch-1.pl
index 739c9c0216..7e83acc3a2 100644
--- a/challenge-282/paulo-custodio/perl/ch-1.pl
+++ b/challenge-282/paulo-custodio/perl/ch-1.pl
@@ -7,7 +7,8 @@
#
# You are given a positive integer, $int, having 3 or more digits.
#
-# Write a script to return the Good Integer in the given integer or -1 if none found.
+# Write a script to return the Good Integer in the given integer or -1
+# if none found.
#
# A good integer is exactly three consecutive matching digits.
#
diff --git a/challenge-282/paulo-custodio/perl/ch-2.pl b/challenge-282/paulo-custodio/perl/ch-2.pl
index 7aa10cd168..8b13aaa670 100644
--- a/challenge-282/paulo-custodio/perl/ch-2.pl
+++ b/challenge-282/paulo-custodio/perl/ch-2.pl
@@ -9,7 +9,7 @@
#
# Write a script to find the number of times user had to change the key to type
# the given string. Changing key is defined as using a key different from the
-# last used key. The shift and caps lock keys won’t be counted.
+# last used key. The shift and caps lock keys won't be counted.
#
# Example 1
#
diff --git a/challenge-282/paulo-custodio/python/ch-1.py b/challenge-282/paulo-custodio/python/ch-1.py
new file mode 100644
index 0000000000..c64a2229d4
--- /dev/null
+++ b/challenge-282/paulo-custodio/python/ch-1.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+
+# Challenge 282
+#
+# Task 1: Good Integer
+# Submitted by: Mohammad Sajid Anwar
+#
+# You are given a positive integer, $int, having 3 or more digits.
+#
+# Write a script to return the Good Integer in the given integer or -1
+# if none found.
+#
+# A good integer is exactly three consecutive matching digits.
+#
+# Example 1
+#
+# Input: $int = 12344456
+# Output: 444
+#
+# Example 2
+#
+# Input: $int = 1233334
+# Output: -1
+#
+# Example 3
+#
+# Input: $int = 10020003
+# Output: 000
+
+import re
+import sys
+
+found = re.search(r'((\d)\2\2+)', sys.argv[1])
+if found is None:
+ print(-1)
+elif len(found.group(1)) != 3:
+ print(-1)
+else:
+ print(found.group(1))
diff --git a/challenge-282/paulo-custodio/python/ch-2.py b/challenge-282/paulo-custodio/python/ch-2.py
new file mode 100644
index 0000000000..aa1f15080a
--- /dev/null
+++ b/challenge-282/paulo-custodio/python/ch-2.py
@@ -0,0 +1,43 @@
+#!/usr/bin/env perl
+
+# Challenge 282
+#
+# Task 2: Changing Keys
+# Submitted by: Mohammad Sajid Anwar
+#
+# You are given an alphabetic string, $str, as typed by user.
+#
+# Write a script to find the number of times user had to change the key to type
+# the given string. Changing key is defined as using a key different from the
+# last used key. The shift and caps lock keys won't be counted.
+#
+# Example 1
+#
+# Input: $str = 'pPeERrLl'
+# Ouput: 3
+#
+# p -> P : 0 key change
+# P -> e : 1 key change
+# e -> E : 0 key change
+# E -> R : 1 key change
+# R -> r : 0 key change
+# r -> L : 1 key change
+# L -> l : 0 key change
+#
+# Example 2
+#
+# Input: $str = 'rRr'
+# Ouput: 0
+#
+# Example 3
+#
+# Input: $str = 'GoO'
+# Ouput: 1
+
+import re
+import sys
+
+str = sys.argv[1].upper()
+str, count = re.subn(r'(.)\1*', r'\1', str)
+
+print(len(str)-1)
diff --git a/challenge-282/paulo-custodio/t/test-1.yaml b/challenge-282/paulo-custodio/t/test-1.yaml
index 3b9ddc2d61..508f04e0b2 100644
--- a/challenge-282/paulo-custodio/t/test-1.yaml
+++ b/challenge-282/paulo-custodio/t/test-1.yaml
@@ -13,3 +13,8 @@
args: 10020003
input:
output: 000
+- setup:
+ cleanup:
+ args: 1002003
+ input:
+ output: -1