From f0739fc7309ec7bf8747ccda16d70fde24a34ed9 Mon Sep 17 00:00:00 2001 From: Guillaume Date: Fri, 14 Aug 2020 18:11:04 +0200 Subject: [PATCH 1/2] gnome_sort : type hints, docstring, doctests --- sorts/gnome_sort.py | 50 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 10 deletions(-) diff --git a/sorts/gnome_sort.py b/sorts/gnome_sort.py index 58a44c94da43..cd68b7f1c836 100644 --- a/sorts/gnome_sort.py +++ b/sorts/gnome_sort.py @@ -1,25 +1,55 @@ -"""Gnome Sort Algorithm.""" +""" +Gnome Sort Algorithm (A.K.A. Stupid Sort) +This algorithm iterates over a list comparing an element with the previous one. +If order is not respected, it swaps element backward until +order is respected with previous element. +It resumes the initial iteration from element new position. -def gnome_sort(unsorted): - """Pure implementation of the gnome sort algorithm in Python.""" - if len(unsorted) <= 1: - return unsorted +For doctests run following command: +python3 -m doctest -v gnome_sort.py + +For manual testing run: +python3 gnome_sort.py +""" + + +def gnome_sort(lst: list) -> list: + """ + Pure implementation of the gnome sort algorithm in Python + + Take some mutable ordered collection with heterogeneous + comparable items inside as argument, + return the same collection ordered by ascending. + + Examples: + >>> gnome_sort([0, 5, 3, 2, 2]) + [0, 2, 2, 3, 5] + + >>> gnome_sort([]) + [] + + >>> gnome_sort([-2, -5, -45]) + [-45, -5, -2] + """ + if len(lst) <= 1: + return lst i = 1 - while i < len(unsorted): - if unsorted[i - 1] <= unsorted[i]: + while i < len(lst): + if lst[i - 1] <= lst[i]: i += 1 else: - unsorted[i - 1], unsorted[i] = unsorted[i], unsorted[i - 1] + lst[i - 1], lst[i] = lst[i], lst[i - 1] i -= 1 if i == 0: i = 1 + return lst + if __name__ == "__main__": user_input = input("Enter numbers separated by a comma:\n").strip() unsorted = [int(item) for item in user_input.split(",")] - gnome_sort(unsorted) - print(unsorted) + print(gnome_sort(unsorted)) From 415eca02a73a360df2b0a554d4033d4b2036ad39 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Fri, 14 Aug 2020 21:56:39 +0200 Subject: [PATCH 2/2] !Gadeimnoprstu --- sorts/gnome_sort.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/sorts/gnome_sort.py b/sorts/gnome_sort.py index cd68b7f1c836..ea96e0a926a3 100644 --- a/sorts/gnome_sort.py +++ b/sorts/gnome_sort.py @@ -2,9 +2,8 @@ Gnome Sort Algorithm (A.K.A. Stupid Sort) This algorithm iterates over a list comparing an element with the previous one. -If order is not respected, it swaps element backward until -order is respected with previous element. -It resumes the initial iteration from element new position. +If order is not respected, it swaps element backward until order is respected with +previous element. It resumes the initial iteration from element new position. For doctests run following command: python3 -m doctest -v gnome_sort.py @@ -18,9 +17,8 @@ def gnome_sort(lst: list) -> list: """ Pure implementation of the gnome sort algorithm in Python - Take some mutable ordered collection with heterogeneous - comparable items inside as argument, - return the same collection ordered by ascending. + Take some mutable ordered collection with heterogeneous comparable items inside as + arguments, return the same collection ordered by ascending. Examples: >>> gnome_sort([0, 5, 3, 2, 2]) @@ -31,6 +29,9 @@ def gnome_sort(lst: list) -> list: >>> gnome_sort([-2, -5, -45]) [-45, -5, -2] + + >>> "".join(gnome_sort(list(set("Gnomes are stupid!")))) + ' !Gadeimnoprstu' """ if len(lst) <= 1: return lst