Skip to content

Commit

Permalink
Typos in comments in hill_climbing.py (TheAlgorithms#1667)
Browse files Browse the repository at this point in the history
* Typos in comments in hill_climbing.py

* fixup! Format Python code with psf/black push
  • Loading branch information
cclauss authored and poyea committed Jan 8, 2020
1 parent 36d229f commit 1f2b1a8
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 35 deletions.
49 changes: 27 additions & 22 deletions data_structures/linked_list/deque_doubly.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,36 @@
4. remove from the end -> O(1)
"""


class _DoublyLinkedBase:
""" A Private class (to be inherited) """

class _Node:
__slots__ = '_prev', '_data', '_next'
__slots__ = "_prev", "_data", "_next"

def __init__(self, link_p, element, link_n):
self._prev = link_p
self._data = element
self._next = link_n

def has_next_and_prev(self):
return " Prev -> {0}, Next -> {1}".format(self._prev != None, self._next != None)

return " Prev -> {0}, Next -> {1}".format(
self._prev != None, self._next != None
)

def __init__(self):
self._header = self._Node(None, None, None)
self._trailer = self._Node(None, None, None)
self._header._next = self._trailer
self._trailer._prev = self._header
self._size = 0

def __len__(self):
return self._size

def is_empty(self):
return self.__len__() == 0

def _insert(self, predecessor, e, successor):
# Create new_node by setting it's prev.link -> header
# setting it's next.link -> trailer
Expand All @@ -40,11 +45,11 @@ def _insert(self, predecessor, e, successor):
successor._prev = new_node
self._size += 1
return self

def _delete(self, node):
predecessor = node._prev
successor = node._next

predecessor._next = successor
successor._prev = predecessor
self._size -= 1
Expand All @@ -53,20 +58,20 @@ def _delete(self, node):
del node
return temp


class LinkedDeque(_DoublyLinkedBase):

def first(self):
""" return first element
>>> d = LinkedDeque()
>>> d.add_first('A').first()
'A'
>>> d.add_first('B').first()
'B'
"""
"""
if self.is_empty():
raise Exception('List is empty')
raise Exception("List is empty")
return self._header._next._data

def last(self):
""" return last element
>>> d = LinkedDeque()
Expand All @@ -76,27 +81,27 @@ def last(self):
'B'
"""
if self.is_empty():
raise Exception('List is empty')
raise Exception("List is empty")
return self._trailer._prev._data

### DEque Insert Operations (At the front, At the end) ###

def add_first(self, element):
""" insertion in the front
>>> LinkedDeque().add_first('AV').first()
'AV'
"""
return self._insert(self._header, element, self._header._next)

def add_last(self, element):
""" insertion in the end
>>> LinkedDeque().add_last('B').last()
'B'
"""
return self._insert(self._trailer._prev, element, self._trailer)

### DEqueu Remove Operations (At the front, At the end) ###

def remove_first(self):
""" removal from the front
>>> d = LinkedDeque()
Expand All @@ -114,9 +119,9 @@ def remove_first(self):
True
"""
if self.is_empty():
raise IndexError('remove_first from empty list')
raise IndexError("remove_first from empty list")
return self._delete(self._header._next)

def remove_last(self):
""" removal in the end
>>> d = LinkedDeque()
Expand All @@ -134,5 +139,5 @@ def remove_last(self):
True
"""
if self.is_empty():
raise IndexError('remove_first from empty list')
raise IndexError("remove_first from empty list")
return self._delete(self._trailer._prev)
4 changes: 2 additions & 2 deletions searches/hill_climbing.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ def __init__(self, x: int, y: int, step_size: int, function_to_optimize):

def score(self) -> int:
"""
Returns the output for the function called with current x and y coordinates.
Returns the output of the function called with current x and y coordinates.
>>> def test_function(x, y):
... return x + y
>>> SearchProblem(0, 0, 1, test_function).score() # 0 + 0 = 0
Expand Down Expand Up @@ -91,7 +91,7 @@ def hill_climbing(
have any neighbors which can improve the solution.
Args:
search_prob: The search state at the start.
find_max: If True, the algorithm should find the minimum else the minimum.
find_max: If True, the algorithm should find the maximum else the minimum.
max_x, min_x, max_y, min_y: the maximum and minimum bounds of x and y.
visualization: If True, a matplotlib graph is displayed.
max_iter: number of times to run the iteration.
Expand Down
23 changes: 12 additions & 11 deletions sorts/recursive_bubble_sort.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,18 @@ def bubble_sort(list1):
"""

for i, num in enumerate(list1):
try:
if list1[i+1] < num:
list1[i] = list1[i+1]
list1[i+1] = num
bubble_sort(list1)
except IndexError:
for i, num in enumerate(list1):
try:
if list1[i + 1] < num:
list1[i] = list1[i + 1]
list1[i + 1] = num
bubble_sort(list1)
except IndexError:
pass
return list1
return list1

if __name__ == "__main__":
list1 = [33,99,22,11,66]
bubble_sort(list1)

if __name__ == "__main__":
list1 = [33, 99, 22, 11, 66]
bubble_sort(list1)
print(list1)

0 comments on commit 1f2b1a8

Please sign in to comment.