aboutsummaryrefslogtreecommitdiff
path: root/challenge-202/eric-cheung/python
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2023-02-04 14:04:38 +0000
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2023-02-04 14:04:38 +0000
commit8d9cfd8d2ac39bb5d0b0f7452bf57d200bbdd62f (patch)
tree0e3759046de6e318d1c9e8e305f683b4324d43c6 /challenge-202/eric-cheung/python
parent1b0c04f4b45857a5b8024860663bf58f353bf1ed (diff)
downloadperlweeklychallenge-club-8d9cfd8d2ac39bb5d0b0f7452bf57d200bbdd62f.tar.gz
perlweeklychallenge-club-8d9cfd8d2ac39bb5d0b0f7452bf57d200bbdd62f.tar.bz2
perlweeklychallenge-club-8d9cfd8d2ac39bb5d0b0f7452bf57d200bbdd62f.zip
- Added solutions by james Smith.
- Added solutions by Luca Ferrari. - Added solutions by Aut0exec. - Added solutions by W. Luis Mochan. - Added solutions by Bob Lied. - Added solutions by David Ferrone. - Added solutions by E. Choroba. - Added solutions by Mark Anderson. - Added solutions by Robbie Hatley. - Added solutions by Dave Jacoby. - Added solutions by Thomas Kohler. - Added solutions by Jaldhar H. Vyas. - Added solutions by Peter Campbell Smith. - Added solutions by Mariano Spadaccini. - Added solutions by Jorg Sommrey. - Added solutions by Pip Stuart. - Added solutions by Simon Green. - Added solutions by Laurent Rosenfeld. - Added solutions by Ulrich Rieke. - Added solutions by Robert DiCicco.
Diffstat (limited to 'challenge-202/eric-cheung/python')
-rwxr-xr-xchallenge-202/eric-cheung/python/ch-1.py16
-rwxr-xr-xchallenge-202/eric-cheung/python/ch-2.py127
2 files changed, 143 insertions, 0 deletions
diff --git a/challenge-202/eric-cheung/python/ch-1.py b/challenge-202/eric-cheung/python/ch-1.py
new file mode 100755
index 0000000000..b223c4f32c
--- /dev/null
+++ b/challenge-202/eric-cheung/python/ch-1.py
@@ -0,0 +1,16 @@
+
+def IsConsecOdds(arrSubInput):
+ arrSubInput.sort()
+
+ for nIndx in range(0, len(arrSubInput) - 3 + 1):
+ if arrSubInput[nIndx] % 2 == 1 and arrSubInput[nIndx + 1] - arrSubInput[nIndx] == 2 and arrSubInput[nIndx + 2] - arrSubInput[nIndx + 1] == 2:
+ return 1
+
+ return 0
+
+## arrInput = [1, 5, 3, 6] ## Example 1
+## arrInput = [2, 6, 3, 5] ## Example 2
+## arrInput = [1, 2, 3, 4] ## Example 3
+arrInput = [2, 3, 5, 7] ## Example 4
+
+print (IsConsecOdds(arrInput))
diff --git a/challenge-202/eric-cheung/python/ch-2.py b/challenge-202/eric-cheung/python/ch-2.py
new file mode 100755
index 0000000000..5e7224f51f
--- /dev/null
+++ b/challenge-202/eric-cheung/python/ch-2.py
@@ -0,0 +1,127 @@
+
+## Remarks
+## https://www.geeksforgeeks.org/maximum-count-number-of-valley-elements-in-a-subarray-of-size-k/
+
+
+## Valley
+## First Part: Non-Increasing, Could Be Empty
+## Second Part: Non-Decreasing, Could Be Empty
+
+
+## arrInput = [1, 5, 5, 2, 8] ## Example 1
+## arrInput = [2, 6, 8, 5] ## Example 2
+## arrInput = [9, 8, 13, 13, 2, 2, 15, 17] ## Example 3
+## arrInput = [2, 1, 2, 1, 3] ## Example 4
+arrInput = [1, 3, 3, 2, 1, 2, 3, 3, 2] ## Example 5
+
+
+arrOutput = []
+arrInterOutput = []
+arrSubOutput = []
+arrTrendUpSign = []
+arrEqElem = []
+
+
+bTrendUp = True
+bPrevTrendUp = True
+bChangeSign = True
+bStart = True
+
+
+for nIndx in range(1, len(arrInput)):
+
+ if arrInput[nIndx - 1] < arrInput[nIndx]:
+ bTrendUp = True
+ elif arrInput[nIndx - 1] > arrInput[nIndx]:
+ bTrendUp = False
+ else:
+ arrEqElem.append(arrInput[nIndx])
+
+ if nIndx == 1:
+ bPrevTrendUp = bTrendUp
+ bChangeSign = True
+ elif bTrendUp and bPrevTrendUp or not bTrendUp and not bPrevTrendUp:
+ bChangeSign = False
+ elif len(arrSubOutput) > 0:
+ arrOutput.append(arrSubOutput)
+ arrTrendUpSign.append(not bTrendUp)
+ arrSubOutput = []
+ bChangeSign = True
+
+ if bChangeSign:
+ if len(arrEqElem) > 0:
+ arrSubOutput = arrSubOutput + arrEqElem ## Append List
+ arrEqElem = []
+
+ arrSubOutput.append(arrInput[nIndx - 1])
+
+ arrSubOutput.append(arrInput[nIndx])
+
+ bPrevTrendUp = bTrendUp
+
+
+if len(arrSubOutput) > 0:
+ arrOutput.append(arrSubOutput)
+ arrTrendUpSign.append(bTrendUp)
+ arrSubOutput = []
+
+
+## print (arrOutput)
+## print (arrTrendUpSign)
+
+for nIndx, arrElemLoop in enumerate(arrOutput):
+
+ ## print (bStart, arrTrendUpSign[nIndx])
+
+ if bStart and arrTrendUpSign[nIndx]:
+ if len(arrSubOutput) > 0:
+ for nCount in range(0, len(arrElemLoop)):
+ if arrElemLoop[nCount] != arrSubOutput[-1]:
+ break
+ arrSubOutput = arrSubOutput + arrElemLoop[nCount:] ## Append List
+ else:
+ arrSubOutput = arrSubOutput + arrElemLoop ## Append List
+
+ arrInterOutput.append(arrSubOutput)
+ arrSubOutput = []
+
+ elif bStart and not arrTrendUpSign[nIndx]:
+ if len(arrSubOutput) > 0:
+ for nCount in range(0, len(arrElemLoop)):
+ if arrElemLoop[nCount] != arrSubOutput[-1]:
+ break
+ arrSubOutput = arrSubOutput + arrElemLoop[nCount:] ## Append List
+ else:
+ arrSubOutput = arrSubOutput + arrElemLoop ## Append List
+
+ bStart = False
+
+ elif not bStart and arrTrendUpSign[nIndx]:
+ if len(arrSubOutput) > 0:
+ for nCount in range(0, len(arrElemLoop)):
+ if arrElemLoop[nCount] != arrSubOutput[-1]:
+ break
+
+ arrSubOutput = arrSubOutput + arrElemLoop[nCount:] ## Append List
+ else:
+ arrSubOutput = arrSubOutput + arrElemLoop[1:] ## Append List
+
+ elif not bStart and not arrTrendUpSign[nIndx]:
+ if len(arrSubOutput) > 0:
+ arrInterOutput.append(arrSubOutput)
+ arrSubOutput = []
+ arrSubOutput = arrSubOutput + arrElemLoop ## Append List
+ bStart = True
+
+if len(arrSubOutput) > 0:
+ arrInterOutput.append(arrSubOutput)
+ arrSubOutput = []
+
+
+arrFinalOutput = arrInterOutput[0]
+for arrElemLoop in arrInterOutput[1:]:
+ if len(arrElemLoop) > len(arrFinalOutput):
+ arrFinalOutput = arrElemLoop
+
+## print (arrInterOutput)
+print (arrFinalOutput)