diff --git a/src/codewars/pagination_helper.py b/src/codewars/pagination_helper.py new file mode 100644 index 0000000..a30f50c --- /dev/null +++ b/src/codewars/pagination_helper.py @@ -0,0 +1,43 @@ +# Abgabe - PaginationHelper Aufgabe von Codewars +# Link dazu: https://www.codewars.com/kata/54bf1c2cd5b56cc47f0007a1 +# Leart Ramushi + +# TODO: complete this class +import math + + +class PaginationHelper: + + # The constructor takes in an array of items and an integer indicating + # how many items fit within a single page + def __init__(self, collection, items_per_page): + self.collection = collection + self.items_per_page = items_per_page + + # returns the number of items within the entire collection + def item_count(self): + return len(self.collection) + + # returns the number of pages + def page_count(self): + return math.ceil(len(self.collection) / self.items_per_page) + + # returns the number of items on the given page. page_index is zero based + # this method should return -1 for page_index values that are out of range + def page_item_count(self, page_index): + if page_index < 0 or page_index >= self.page_count(): + return -1 + if page_index == self.page_count() - 1: + rest = len(self.collection) % self.items_per_page + if rest == 0: + return self.items_per_page + else: + return rest + return self.items_per_page + + # determines what page an item at the given index is on. Zero based indexes. + # this method should return -1 for item_index values that are out of range + def page_index(self, item_index): + if item_index < 0 or item_index >= len(self.collection): + return -1 + return item_index // self.items_per_page