Compare commits
7 Commits
95d79c84a8
...
e521f037a4
| Author | SHA1 | Date | |
|---|---|---|---|
| e521f037a4 | |||
| 00a42ea0fd | |||
| fa8b2b21f9 | |||
| 7e43f0d42d | |||
| fbf13b3f3f | |||
| 17de0e0f92 | |||
| 27c5087006 |
@ -26,3 +26,4 @@ Repository for CDS-2020 Programming and Promt Engineering II
|
|||||||
|Thinkful - Object Drills: Quarks|kata_thinkful_quarks.py|test_thinkful_quarks.py|[5882b052bdeafec15e0000e6](https://www.codewars.com/kata/5882b052bdeafec15e0000e6)|
|
|Thinkful - Object Drills: Quarks|kata_thinkful_quarks.py|test_thinkful_quarks.py|[5882b052bdeafec15e0000e6](https://www.codewars.com/kata/5882b052bdeafec15e0000e6)|
|
||||||
|Thinkful - Object Drills: Vectors|kata_thinkful_vectors.py|test_thinkful_vectors.py|[587f1e1f39d444cee6000ad4](https://www.codewars.com/kata/587f1e1f39d444cee6000ad4)|
|
|Thinkful - Object Drills: Vectors|kata_thinkful_vectors.py|test_thinkful_vectors.py|[587f1e1f39d444cee6000ad4](https://www.codewars.com/kata/587f1e1f39d444cee6000ad4)|
|
||||||
|Building blocks|kata_building_blocks.py|test_building_blocks.py|[55b75fcf67e558d3750000a3](https://www.codewars.com/kata/55b75fcf67e558d3750000a3)|
|
|Building blocks|kata_building_blocks.py|test_building_blocks.py|[55b75fcf67e558d3750000a3](https://www.codewars.com/kata/55b75fcf67e558d3750000a3)|
|
||||||
|
|PaginationHelper|kata_pagination_helper.py|test_pagination_helper.py|[515bb423de843ea99400000a](https://www.codewars.com/kata/515bb423de843ea99400000a)|
|
||||||
|
|||||||
46
src/codewars/kata_pagination_helper.py
Normal file
46
src/codewars/kata_pagination_helper.py
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
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 int(len(self.collection) / self.items_per_page) + (
|
||||||
|
len(self.collection) % self.items_per_page > 0
|
||||||
|
)
|
||||||
|
|
||||||
|
# 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 self.page_count() - 1 < page_index:
|
||||||
|
return -1
|
||||||
|
|
||||||
|
if page_index == 0:
|
||||||
|
return len(self.collection[: self.items_per_page])
|
||||||
|
|
||||||
|
return len(
|
||||||
|
self.collection[
|
||||||
|
self.items_per_page * page_index : self.items_per_page * page_index
|
||||||
|
+ 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):
|
||||||
|
try:
|
||||||
|
self.collection[item_index]
|
||||||
|
|
||||||
|
if item_index < 0:
|
||||||
|
raise IndexError
|
||||||
|
except IndexError:
|
||||||
|
return -1
|
||||||
|
|
||||||
|
return item_index // self.items_per_page
|
||||||
27
tests/codewars/test_pagination_helper.py
Normal file
27
tests/codewars/test_pagination_helper.py
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
from src.codewars.kata_pagination_helper import PaginationHelper
|
||||||
|
|
||||||
|
|
||||||
|
def test_pagination():
|
||||||
|
collection = ["a", "b", "c", "d", "e", "f"]
|
||||||
|
helper = PaginationHelper(collection, 4)
|
||||||
|
|
||||||
|
assert helper.page_count() == 2
|
||||||
|
assert helper.item_count() == 6
|
||||||
|
assert helper.page_item_count(0) == 4
|
||||||
|
assert helper.page_item_count(1) == 2
|
||||||
|
assert helper.page_item_count(2) == -1
|
||||||
|
assert helper.page_index(5) == 1
|
||||||
|
assert helper.page_index(2) == 0
|
||||||
|
assert helper.page_index(20) == -1
|
||||||
|
assert helper.page_index(-10) == -1
|
||||||
|
|
||||||
|
empty = PaginationHelper([], 10)
|
||||||
|
|
||||||
|
assert empty.item_count() == 0
|
||||||
|
assert empty.page_count() == 0
|
||||||
|
assert empty.page_index(0) == -1
|
||||||
|
assert empty.page_index(1) == -1
|
||||||
|
assert empty.page_index(-1) == -1
|
||||||
|
assert empty.page_item_count(0) == -1
|
||||||
|
assert empty.page_item_count(1) == -1
|
||||||
|
assert empty.page_item_count(-1) == -1
|
||||||
Loading…
x
Reference in New Issue
Block a user