Skip to content

Instantly share code, notes, and snippets.

@Himan10
Last active December 4, 2019 13:07
Show Gist options
  • Select an option

  • Save Himan10/47605272d11986ff90632cfb3f4d37b4 to your computer and use it in GitHub Desktop.

Select an option

Save Himan10/47605272d11986ff90632cfb3f4d37b4 to your computer and use it in GitHub Desktop.
Solution for Advent of code.. Day4 problem.
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