From 8d9cfd8d2ac39bb5d0b0f7452bf57d200bbdd62f Mon Sep 17 00:00:00 2001 From: Mohammad S Anwar Date: Sat, 4 Feb 2023 14:04:38 +0000 Subject: - 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. --- challenge-202/eric-cheung/python/ch-1.py | 16 ++++ challenge-202/eric-cheung/python/ch-2.py | 127 +++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100755 challenge-202/eric-cheung/python/ch-1.py create mode 100755 challenge-202/eric-cheung/python/ch-2.py (limited to 'challenge-202/eric-cheung/python') 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) -- cgit