From 46c033edc272c674b18d240489fd3f887be174b0 Mon Sep 17 00:00:00 2001 From: dimonalik <114773527+dimonalik@users.noreply.github.com> Date: Mon, 2 Oct 2023 13:12:41 +0300 Subject: [PATCH 1/6] Create text_splitter.py Text splitter by number of symbols --- other/text_splitter.py | 77 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 other/text_splitter.py diff --git a/other/text_splitter.py b/other/text_splitter.py new file mode 100644 index 000000000000..4c657c225799 --- /dev/null +++ b/other/text_splitter.py @@ -0,0 +1,77 @@ +import PySimpleGUI as PySG + +splitted = "" +text = "" +PySG.theme("DarkBlue4") +layout = [ + [PySG.Text("Text for splitting"), PySG.InputText(size=(20, 5), key="input")], + [ + PySG.Text("How many symbols in one part"), + PySG.InputText(size=(5, 1), key="symbols"), + PySG.Text("(Count on additional symbols for amount of parts)"), + ], + [PySG.Checkbox("Do we add amount of parts?", key="split")], + [PySG.Button("Split")], + [PySG.Multiline(splitted, key="-logtext-", size=(None, 10), rstrip=False)], + [ + PySG.Button("Clear"), + PySG.Text( + " © @uahave.fun", + text_color="dark blue", + font=("Helvetica", 10), + justification="right", + ), + ], + [PySG.Text("------------------------------------------------------")], + [PySG.Button("Close")], +] + +window = PySG.Window("Splitter", layout) + +while True: + event, values = window.read() + if event in (None, "Close"): + break + if event == "Split": + if values["input"] == "": + PySG.popup("Add text to split!") + continue + if values["symbols"].isdigit() is False: + PySG.popup("Symbols amount must be numeric only!") + continue + if values["symbols"] == "": + PySG.popup("Enter symbols amount!") + continue + if int(values["symbols"]) < 1: + PySG.popup("Enter symbols amount > 0!") + continue + if int(values["symbols"]) > len(values["input"]): + PySG.popup("Enter symbols amount less then whole text size!") + continue + if int(values["symbols"]) == len(values["input"]): + PySG.popup("Enter symbols amount less then whole text size!") + continue + es = [ + values["input"][i : i + int(values["symbols"])] + for i in range(0, len(values["input"]), int(values["symbols"])) + ] + for i in es: + if values["split"] is True: + text = ( + text + + str(es.index(i) + 1) + + "/" + + str(len(es)) + + " " + + splitted + + i + + "\n" + + "\n" + ) + else: + text = text + splitted + i + "\n" + "\n" + window["-logtext-"].update(text) + if event == "Clear": + window["-logtext-"].update("") + text = "" +window.close() From 8d432ece54ec1eb9d39a5a3b9750697cf9753227 Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Mon, 2 Oct 2023 10:12:56 +0000 Subject: [PATCH 2/6] updating DIRECTORY.md --- DIRECTORY.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/DIRECTORY.md b/DIRECTORY.md index 7d3ceee144be..53b212e492ff 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -233,6 +233,7 @@ * [Merge Two Lists](data_structures/linked_list/merge_two_lists.py) * [Middle Element Of Linked List](data_structures/linked_list/middle_element_of_linked_list.py) * [Print Reverse](data_structures/linked_list/print_reverse.py) + * [Reverse K Group](data_structures/linked_list/reverse_k_group.py) * [Rotate To The Right](data_structures/linked_list/rotate_to_the_right.py) * [Singly Linked List](data_structures/linked_list/singly_linked_list.py) * [Skip List](data_structures/linked_list/skip_list.py) @@ -748,6 +749,7 @@ * [Quine](other/quine.py) * [Scoring Algorithm](other/scoring_algorithm.py) * [Sdes](other/sdes.py) + * [Text Splitter](other/text_splitter.py) * [Tower Of Hanoi](other/tower_of_hanoi.py) * [Word Search](other/word_search.py) From 01d0a6392a40cff68aaa4880c50b4964e7fc685c Mon Sep 17 00:00:00 2001 From: dimonalik <114773527+dimonalik@users.noreply.github.com> Date: Mon, 2 Oct 2023 13:30:56 +0300 Subject: [PATCH 3/6] Update text_splitter.py Remade algorithm without PySimpleGUI --- other/text_splitter.py | 81 +++--------------------------------------- 1 file changed, 5 insertions(+), 76 deletions(-) diff --git a/other/text_splitter.py b/other/text_splitter.py index 4c657c225799..128c0ca0e1d4 100644 --- a/other/text_splitter.py +++ b/other/text_splitter.py @@ -1,77 +1,6 @@ -import PySimpleGUI as PySG +text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam interdum massa non nisl venenatis, in finibus lectus fermentum. Maecenas quis imperdiet ligula. Phasellus non laoreet arcu. Mauris tristique commodo ipsum vel fermentum. Ut ut auctor diam. Nulla vel porta lorem, in scelerisque justo. Suspendisse facilisis mollis arcu non eleifend. Donec lacinia elit vel leo fermentum, a condimentum ex fermentum. Nam non augue quis leo mollis ultrices non fermentum nibh. Sed egestas venenatis velit pulvinar rhoncus. Vivamus feugiat orci porttitor, placerat lorem vel, sodales nunc. Phasellus sed ornare ipsum. Aliquam sed sem vitae sem dictum semper sed a lectus. Pellentesque non commodo nunc. Cras at egestas enim, rhoncus pretium diam. Donec varius, odio id fermentum dignissim, orci dui finibus urna, in aliquam urna ligula at nunc. Proin laoreet tristique tincidunt. Aliquam viverra quam erat, eget cursus mauris posuere ac. Sed commodo efficitur leo, scelerisque volutpat justo cursus id. Donec dictum gravida purus quis vulputate. Nunc rutrum scelerisque aliquam. Cras commodo ornare porttitor. Aenean eget eros et tortor placerat pellentesque. Morbi lobortis magna quis pellentesque finibus. Integer massa eros, congue quis aliquam sed, cursus id ligula. Suspendisse vitae lectus mauris.Mauris venenatis urna in consectetur ullamcorper. Donec pellentesque ac massa nec mollis. Quisque tempus dui id dolor fermentum dapibus. Fusce at mollis leo. Nunc vitae nunc in sapien consequat posuere. Ut quis euismod nibh. Ut commodo tempus lorem at auctor. Sed fermentum mauris libero, at euismod sem posuere ut. Vestibulum rutrum felis sapien, quis gravida ex porta at. Proin viverra dolor at leo tempor, vitae ornare nisl faucibus. Mauris vestibulum, diam eget aliquet sodales, est augue tempus eros, in iaculis sapien urna sed ante." +symbols = 300 -splitted = "" -text = "" -PySG.theme("DarkBlue4") -layout = [ - [PySG.Text("Text for splitting"), PySG.InputText(size=(20, 5), key="input")], - [ - PySG.Text("How many symbols in one part"), - PySG.InputText(size=(5, 1), key="symbols"), - PySG.Text("(Count on additional symbols for amount of parts)"), - ], - [PySG.Checkbox("Do we add amount of parts?", key="split")], - [PySG.Button("Split")], - [PySG.Multiline(splitted, key="-logtext-", size=(None, 10), rstrip=False)], - [ - PySG.Button("Clear"), - PySG.Text( - " © @uahave.fun", - text_color="dark blue", - font=("Helvetica", 10), - justification="right", - ), - ], - [PySG.Text("------------------------------------------------------")], - [PySG.Button("Close")], -] - -window = PySG.Window("Splitter", layout) - -while True: - event, values = window.read() - if event in (None, "Close"): - break - if event == "Split": - if values["input"] == "": - PySG.popup("Add text to split!") - continue - if values["symbols"].isdigit() is False: - PySG.popup("Symbols amount must be numeric only!") - continue - if values["symbols"] == "": - PySG.popup("Enter symbols amount!") - continue - if int(values["symbols"]) < 1: - PySG.popup("Enter symbols amount > 0!") - continue - if int(values["symbols"]) > len(values["input"]): - PySG.popup("Enter symbols amount less then whole text size!") - continue - if int(values["symbols"]) == len(values["input"]): - PySG.popup("Enter symbols amount less then whole text size!") - continue - es = [ - values["input"][i : i + int(values["symbols"])] - for i in range(0, len(values["input"]), int(values["symbols"])) - ] - for i in es: - if values["split"] is True: - text = ( - text - + str(es.index(i) + 1) - + "/" - + str(len(es)) - + " " - + splitted - + i - + "\n" - + "\n" - ) - else: - text = text + splitted + i + "\n" + "\n" - window["-logtext-"].update(text) - if event == "Clear": - window["-logtext-"].update("") - text = "" -window.close() +es = [text[i:i + symbols] for i in range(0, len(text), symbols)] +for n in es: + print(n + "\n\n") From a0faa5de5544248c47e93f891c3a23b9c0417475 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 10:31:30 +0000 Subject: [PATCH 4/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- other/text_splitter.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/other/text_splitter.py b/other/text_splitter.py index 128c0ca0e1d4..0a1385106197 100644 --- a/other/text_splitter.py +++ b/other/text_splitter.py @@ -1,6 +1,6 @@ text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam interdum massa non nisl venenatis, in finibus lectus fermentum. Maecenas quis imperdiet ligula. Phasellus non laoreet arcu. Mauris tristique commodo ipsum vel fermentum. Ut ut auctor diam. Nulla vel porta lorem, in scelerisque justo. Suspendisse facilisis mollis arcu non eleifend. Donec lacinia elit vel leo fermentum, a condimentum ex fermentum. Nam non augue quis leo mollis ultrices non fermentum nibh. Sed egestas venenatis velit pulvinar rhoncus. Vivamus feugiat orci porttitor, placerat lorem vel, sodales nunc. Phasellus sed ornare ipsum. Aliquam sed sem vitae sem dictum semper sed a lectus. Pellentesque non commodo nunc. Cras at egestas enim, rhoncus pretium diam. Donec varius, odio id fermentum dignissim, orci dui finibus urna, in aliquam urna ligula at nunc. Proin laoreet tristique tincidunt. Aliquam viverra quam erat, eget cursus mauris posuere ac. Sed commodo efficitur leo, scelerisque volutpat justo cursus id. Donec dictum gravida purus quis vulputate. Nunc rutrum scelerisque aliquam. Cras commodo ornare porttitor. Aenean eget eros et tortor placerat pellentesque. Morbi lobortis magna quis pellentesque finibus. Integer massa eros, congue quis aliquam sed, cursus id ligula. Suspendisse vitae lectus mauris.Mauris venenatis urna in consectetur ullamcorper. Donec pellentesque ac massa nec mollis. Quisque tempus dui id dolor fermentum dapibus. Fusce at mollis leo. Nunc vitae nunc in sapien consequat posuere. Ut quis euismod nibh. Ut commodo tempus lorem at auctor. Sed fermentum mauris libero, at euismod sem posuere ut. Vestibulum rutrum felis sapien, quis gravida ex porta at. Proin viverra dolor at leo tempor, vitae ornare nisl faucibus. Mauris vestibulum, diam eget aliquet sodales, est augue tempus eros, in iaculis sapien urna sed ante." symbols = 300 -es = [text[i:i + symbols] for i in range(0, len(text), symbols)] +es = [text[i : i + symbols] for i in range(0, len(text), symbols)] for n in es: print(n + "\n\n") From ead1f5085a5acf335c447b0f7bd9621e6a89ca7f Mon Sep 17 00:00:00 2001 From: dimonalik <114773527+dimonalik@users.noreply.github.com> Date: Mon, 2 Oct 2023 13:54:07 +0300 Subject: [PATCH 5/6] Update text_splitter.py Fixed "line too long" error --- other/text_splitter.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/other/text_splitter.py b/other/text_splitter.py index 0a1385106197..f752d557a2bf 100644 --- a/other/text_splitter.py +++ b/other/text_splitter.py @@ -1,4 +1,33 @@ -text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam interdum massa non nisl venenatis, in finibus lectus fermentum. Maecenas quis imperdiet ligula. Phasellus non laoreet arcu. Mauris tristique commodo ipsum vel fermentum. Ut ut auctor diam. Nulla vel porta lorem, in scelerisque justo. Suspendisse facilisis mollis arcu non eleifend. Donec lacinia elit vel leo fermentum, a condimentum ex fermentum. Nam non augue quis leo mollis ultrices non fermentum nibh. Sed egestas venenatis velit pulvinar rhoncus. Vivamus feugiat orci porttitor, placerat lorem vel, sodales nunc. Phasellus sed ornare ipsum. Aliquam sed sem vitae sem dictum semper sed a lectus. Pellentesque non commodo nunc. Cras at egestas enim, rhoncus pretium diam. Donec varius, odio id fermentum dignissim, orci dui finibus urna, in aliquam urna ligula at nunc. Proin laoreet tristique tincidunt. Aliquam viverra quam erat, eget cursus mauris posuere ac. Sed commodo efficitur leo, scelerisque volutpat justo cursus id. Donec dictum gravida purus quis vulputate. Nunc rutrum scelerisque aliquam. Cras commodo ornare porttitor. Aenean eget eros et tortor placerat pellentesque. Morbi lobortis magna quis pellentesque finibus. Integer massa eros, congue quis aliquam sed, cursus id ligula. Suspendisse vitae lectus mauris.Mauris venenatis urna in consectetur ullamcorper. Donec pellentesque ac massa nec mollis. Quisque tempus dui id dolor fermentum dapibus. Fusce at mollis leo. Nunc vitae nunc in sapien consequat posuere. Ut quis euismod nibh. Ut commodo tempus lorem at auctor. Sed fermentum mauris libero, at euismod sem posuere ut. Vestibulum rutrum felis sapien, quis gravida ex porta at. Proin viverra dolor at leo tempor, vitae ornare nisl faucibus. Mauris vestibulum, diam eget aliquet sodales, est augue tempus eros, in iaculis sapien urna sed ante." +text = "Lorem ipsum dolor sit amet, consectetur adipiscing\ +elit. Etiam interdum massa non nisl venenatis, in finibus\ +lectus fermentum. Maecenas quis imperdiet ligula. Phasellus\ +non laoreet arcu. Mauris tristique commodo ipsum vel fermentum.\ +Ut ut auctor diam. Nulla vel porta lorem, in scelerisque justo.\ +Suspendisse facilisis mollis arcu non eleifend. Donec lacinia\ +elit vel leo fermentum, a condimentum ex fermentum. Nam non\ +augue quis leo mollis ultrices non fermentum nibh. Sed egestas\ +venenatis velit pulvinar rhoncus. Vivamus feugiat orci\ +porttitor, placerat lorem vel, sodales nunc. Phasellus\ +sed ornare ipsum. Aliquam sed sem vitae sem dictum semper sed\ +a lectus. Pellentesque non commodo nunc. Cras at egestas enim,\ +rhoncus pretium diam. Donec varius, odio id fermentum dignissim,\ +orci dui finibus urna, in aliquam urna ligula at nunc. Proin\ +laoreet tristique tincidunt. Aliquam viverra quam erat, eget\ +cursus mauris posuere ac. Sed commodo efficitur leo, scelerisque\ +volutpat justo cursus id. Donec dictum gravida purus quis vulputate.\ +Nunc rutrum scelerisque aliquam. Cras commodo ornare porttitor.\ +Aenean eget eros et tortor placerat pellentesque. Morbi lobortis\ +magna quis pellentesque finibus. Integer massa eros, congue quis\ +aliquam sed, cursus id ligula. Suspendisse vitae lectus mauris.Mauris\ +venenatis urna in consectetur ullamcorper. Donec pellentesque ac massa\ +nec mollis. Quisque tempus dui id dolor fermentum dapibus. Fusce at mollis\ +leo. Nunc vitae nunc in sapien consequat posuere. Ut quis euismod nibh.\ +Ut commodo tempus lorem at auctor. Sed fermentum mauris libero,\ +at euismod sem posuere ut. Vestibulum rutrum felis sapien, quis\ +gravida ex porta at. Proin viverra dolor at leo tempor, vitae\ +ornare nisl faucibus. Mauris vestibulum, diam eget aliquet\ +sodales, est augue tempus eros, in iaculis\ +sapien urna sed ante." symbols = 300 es = [text[i : i + symbols] for i in range(0, len(text), symbols)] From a83e9e262d24f99400b8404cb9db1b175fcd9729 Mon Sep 17 00:00:00 2001 From: dimonalik <114773527+dimonalik@users.noreply.github.com> Date: Mon, 2 Oct 2023 14:05:07 +0300 Subject: [PATCH 6/6] Update text_splitter.py fixed "typos" in lorem ipsum to pass tests --- other/text_splitter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/other/text_splitter.py b/other/text_splitter.py index f752d557a2bf..f1608b47466e 100644 --- a/other/text_splitter.py +++ b/other/text_splitter.py @@ -4,13 +4,13 @@ non laoreet arcu. Mauris tristique commodo ipsum vel fermentum.\ Ut ut auctor diam. Nulla vel porta lorem, in scelerisque justo.\ Suspendisse facilisis mollis arcu non eleifend. Donec lacinia\ -elit vel leo fermentum, a condimentum ex fermentum. Nam non\ +elit vel leo fermentum, a condimentum ex fermentum. Name non\ augue quis leo mollis ultrices non fermentum nibh. Sed egestas\ venenatis velit pulvinar rhoncus. Vivamus feugiat orci\ porttitor, placerat lorem vel, sodales nunc. Phasellus\ sed ornare ipsum. Aliquam sed sem vitae sem dictum semper sed\ a lectus. Pellentesque non commodo nunc. Cras at egestas enim,\ -rhoncus pretium diam. Donec varius, odio id fermentum dignissim,\ +rhoncus pretium diam. Donec various, odio id fermentum dignissim,\ orci dui finibus urna, in aliquam urna ligula at nunc. Proin\ laoreet tristique tincidunt. Aliquam viverra quam erat, eget\ cursus mauris posuere ac. Sed commodo efficitur leo, scelerisque\