diff options
| author | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2023-02-04 14:04:38 +0000 |
|---|---|---|
| committer | Mohammad S Anwar <mohammad.anwar@yahoo.com> | 2023-02-04 14:04:38 +0000 |
| commit | 8d9cfd8d2ac39bb5d0b0f7452bf57d200bbdd62f (patch) | |
| tree | 0e3759046de6e318d1c9e8e305f683b4324d43c6 /challenge-202/eric-cheung/python | |
| parent | 1b0c04f4b45857a5b8024860663bf58f353bf1ed (diff) | |
| download | perlweeklychallenge-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-x | challenge-202/eric-cheung/python/ch-1.py | 16 | ||||
| -rwxr-xr-x | challenge-202/eric-cheung/python/ch-2.py | 127 |
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)
|
