Last active
December 4, 2019 13:07
-
-
Save Himan10/47605272d11986ff90632cfb3f4d37b4 to your computer and use it in GitHub Desktop.
Solution for Advent of code.. Day4 problem.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| class Stack: | |
| def __init__(self, n): | |
| self.array = [] | |
| self.n = n | |
| def __len__(self): | |
| return len(self.array) | |
| def is_empty(self): | |
| return self.__len__() == 0 | |
| def top(self): | |
| if self.is_empty(): | |
| return 0 | |
| return self.array[-1] | |
| def push(self, data): | |
| if self.__len__() > self.n: | |
| return 'OVERFLOW' | |
| self.array.append(data) | |
| def pop(self): | |
| if self.__len__() == 0: | |
| return "UNDERFLOW" | |
| temp = self.array[-1] | |
| del self.array[-1] | |
| return temp | |
| def clear_stack(self): | |
| self.array[:] = [] | |
| def range_rule(number): | |
| s = Stack(6) | |
| flag = 0 | |
| number_set = set(number) | |
| #if bool(list(filter(lambda x: number.count(x)>1, number_set))): # Use of filter expression | |
| if any(number.count(i) > 1 for i in number_set): # For part1 | |
| #if any(number.count(i) == 2 for i in number_set): # For part2 | |
| for i in number: | |
| if s.top() <= int(i): # Meet 1st criteria | |
| s.push(int(i)) | |
| else: | |
| s.clear_stack() | |
| break | |
| if s.__len__() == 6: | |
| flag += 1 | |
| return flag | |
| if __name__ == "__main__": | |
| total = 0 | |
| for i in range(372304, 847060): | |
| total += range_rule(str(i)) | |
| print(total |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment