# How to use
```
# Binary search example
from falgopy.searching.searching_algorithm.searching_algorithm_input import SearchingAlgorithmInput
from falgopy.searching.algorithms.binary_search.binary_search import BinarySearch
result = BinarySearch(SearchingAlgorithmInput(list_to_search=[1, 2, 3], target=2)).run()
print(result.target_index)
# Round rubin example
from falgopy.scheduling.algorithms.round_robin.round_robin import RoundRobin
from falgopy.scheduling.algorithms.round_robin.round_robin_input import RoundRobinInput
from falgopy.utils.models.task import Task
result = RoundRobin(
RoundRobinInput(
pool=[
Task(name="Task 1", remaining_time=10),
Task(name="Task 2", remaining_time=5),
Task(name="Task 3", remaining_time=3),
Task(name="Task 4", remaining_time=1),
],
time_slice=6)
).run()
print(result.queue)
```
# Algorithms
- Base classes (utils)
- Fundamentals ideas
- Variety of algorithms implementations
Abstract algorithm
```
class Algorithm:
def __init__(self, algorithm_input: AlgorithmInput):
@abstractmethod
def run(self) -> AlgorithmOutput:
def check_run_time(self):
```
## Algorithms types
### Search
Searching abstract algorithm
```
class SearchingAlgorithm(Algorithm):
def __init__(self, algorithm_input: SearchingAlgorithmInput):
@abstractmethod
def search(self) -> SearchingAlgorithmOutput:
def run(self) -> SearchingAlgorithmOutput:
"""
Run the algorithm
Returns: return searching algorithm output
"""
algoritm_output = self.search()
self.logger.info(f"Total iterations: {algoritm_output.total_search_iterations}")
return algoritm_output
```
Examples
- Binary search
-
### Sort
Sorting abstract algorithm
```
class SortingAlgorithm(Algorithm):
def __init__(self, algorithm_input: SortingAlgorithmInput):
@abstractmethod
def get_sorted_list(self) -> SortingAlgorithmOutput:
def run(self) -> SortingAlgorithmOutput:
"""
Run the algorithm
Returns: yield next value in schedule
"""
return self.get_sorted_list()
```
Examples
- Binary Sort
- Bubble Sort
- Sort
### Scheduling
Sorting abstract algorithm
```
class SchedulingAlgorithm(Algorithm):
def __init__(self, algorithm_input: SchedulingAlgorithmInput):
@abstractmethod
def is_done(self):
@abstractmethod
def schedule_next(self):
def run(self) -> SchedulingAlgorithmOutput:
"""
Run the algorithm
Returns: yield next value in schedule
"""
while not self.is_done():
self.schedule_next()
self.logger.info(
f"Pool: {self.algorithm_input.pool}, "
f"Queue: {self.algoritm_output.queue}, "
f"Total time: {self.algoritm_output.total_time}"
)
return self.algoritm_output
```
Examples
- Round Robin
-
Raw data
{
"_id": null,
"home_page": null,
"name": "falgopy",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "CS data data structures falgopy algo",
"author": "Zohar franco",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/95/74/f0dbe373be219b1f7bc8acd7795a22e5f16e6903af5f9285c3cdef7c4c7b/falgopy-3.0.0.tar.gz",
"platform": null,
"description": "# How to use\n\n```\n\n# Binary search example\nfrom falgopy.searching.searching_algorithm.searching_algorithm_input import SearchingAlgorithmInput\nfrom falgopy.searching.algorithms.binary_search.binary_search import BinarySearch\n\nresult = BinarySearch(SearchingAlgorithmInput(list_to_search=[1, 2, 3], target=2)).run()\nprint(result.target_index)\n\n\n# Round rubin example\n\nfrom falgopy.scheduling.algorithms.round_robin.round_robin import RoundRobin\nfrom falgopy.scheduling.algorithms.round_robin.round_robin_input import RoundRobinInput\nfrom falgopy.utils.models.task import Task\n\nresult = RoundRobin(\n RoundRobinInput(\n pool=[\n Task(name=\"Task 1\", remaining_time=10),\n Task(name=\"Task 2\", remaining_time=5),\n Task(name=\"Task 3\", remaining_time=3),\n Task(name=\"Task 4\", remaining_time=1),\n ],\n time_slice=6)\n).run()\n\nprint(result.queue)\n```\n\n# Algorithms\n\n- Base classes (utils)\n- Fundamentals ideas\n- Variety of algorithms implementations\n\nAbstract algorithm\n\n```\nclass Algorithm:\n\n def __init__(self, algorithm_input: AlgorithmInput):\n\n @abstractmethod\n def run(self) -> AlgorithmOutput:\n\n def check_run_time(self):\n```\n\n## Algorithms types\n\n### Search\n\nSearching abstract algorithm\n\n```\n\nclass SearchingAlgorithm(Algorithm):\n def __init__(self, algorithm_input: SearchingAlgorithmInput):\n \n @abstractmethod\n def search(self) -> SearchingAlgorithmOutput:\n \n def run(self) -> SearchingAlgorithmOutput:\n \"\"\"\n Run the algorithm\n Returns: return searching algorithm output\n \"\"\"\n algoritm_output = self.search()\n self.logger.info(f\"Total iterations: {algoritm_output.total_search_iterations}\")\n return algoritm_output\n```\n\nExamples\n\n- Binary search\n-\n\n### Sort\n\nSorting abstract algorithm\n\n```\nclass SortingAlgorithm(Algorithm):\n def __init__(self, algorithm_input: SortingAlgorithmInput):\n \n @abstractmethod\n def get_sorted_list(self) -> SortingAlgorithmOutput:\n \n def run(self) -> SortingAlgorithmOutput:\n \"\"\"\n Run the algorithm\n Returns: yield next value in schedule\n \"\"\"\n return self.get_sorted_list()\n```\n\nExamples\n\n- Binary Sort\n- Bubble Sort\n- Sort\n\n### Scheduling\n\nSorting abstract algorithm\n\n```\nclass SchedulingAlgorithm(Algorithm):\n def __init__(self, algorithm_input: SchedulingAlgorithmInput):\n \n @abstractmethod\n def is_done(self):\n \n @abstractmethod\n def schedule_next(self):\n \n def run(self) -> SchedulingAlgorithmOutput:\n \"\"\"\n Run the algorithm\n Returns: yield next value in schedule\n \"\"\"\n\n while not self.is_done():\n self.schedule_next()\n self.logger.info(\n f\"Pool: {self.algorithm_input.pool}, \"\n f\"Queue: {self.algoritm_output.queue}, \"\n f\"Total time: {self.algoritm_output.total_time}\"\n )\n return self.algoritm_output\n```\n\nExamples\n\n- Round Robin\n- \n\n\n",
"bugtrack_url": null,
"license": null,
"summary": "A powerful falgopy package",
"version": "3.0.0",
"project_urls": null,
"split_keywords": [
"cs",
"data",
"data",
"structures",
"falgopy",
"algo"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3cde5eea93c02e8c56a5bb039be1d148054bb699609ba54ef6b075232e06f0c6",
"md5": "b5f48908ed652781e70f5cce9715e944",
"sha256": "11da61d2b2c95efa1ec919e428940e8da7e7fe4eb3e52cbbf8f105d9c7e8a0a3"
},
"downloads": -1,
"filename": "falgopy-3.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "b5f48908ed652781e70f5cce9715e944",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 17898,
"upload_time": "2024-06-29T13:32:46",
"upload_time_iso_8601": "2024-06-29T13:32:46.305993Z",
"url": "https://files.pythonhosted.org/packages/3c/de/5eea93c02e8c56a5bb039be1d148054bb699609ba54ef6b075232e06f0c6/falgopy-3.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9574f0dbe373be219b1f7bc8acd7795a22e5f16e6903af5f9285c3cdef7c4c7b",
"md5": "5aae7a6ae8a484bab61d72a3ff499b1a",
"sha256": "87c55d18c694dee6b497d757c8b8a1d489054bee84e165dfdfa5ce8b07a46643"
},
"downloads": -1,
"filename": "falgopy-3.0.0.tar.gz",
"has_sig": false,
"md5_digest": "5aae7a6ae8a484bab61d72a3ff499b1a",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8595,
"upload_time": "2024-06-29T13:32:47",
"upload_time_iso_8601": "2024-06-29T13:32:47.231441Z",
"url": "https://files.pythonhosted.org/packages/95/74/f0dbe373be219b1f7bc8acd7795a22e5f16e6903af5f9285c3cdef7c4c7b/falgopy-3.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-06-29 13:32:47",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "falgopy"
}