My codewars solutions written on #python.
Main purpose: tracking progress and easy navigation through solved task examples
| № | Date | Kata | Theme |
|---|---|---|---|
| 1 | 2022-11-19 | 5_kyu_Maximum_subarray_sum | Kadane's Algorithm |
| 2 | 2022-11-20 | 5_kyu_Moving_Zeros_To_The_End | Algorithms |
| 3 | 2022-11-21 | 5_kyu_Calculating_with_Functions | 1. nonlocal, global var 2. oneliners, lambda |
| 4 | 2022-11-24 | 8_kyu_Find_the_position! | 1. oneliner, str.find(), f-string 2. ord(), askii |
| 5 | 2022-11-25 2025-08-27 |
5_kyu_Human_Readable_Time | 1. f-string oneliner 2. digit formatting {num:dd} 3. dict, direct calculations, f-string 4. divmod(), constant, list, for-loop, ":".join() |
| 6 | 2022-12-01 | 5_kyu_Rot13 | 1. ord(), ascii 2. txt.translate(maketrans()) |
| 7 | 2022-12-03 | 5_kyu_Pete_the_baker | 1. loop, try/except/min() 2. oneliner, get() |
| 8 | 2022-12-15 | 8_kyu_Square(n)_Sum | 1. for loop oneliner |
| 9 | 2022-12-17 | 7_kyu_Square_Every_Digit | 1. oneliner for loop, .join() |
| 10 | 2022-12-22 | 7_kyu_Jaden_Casing_Strings | 1. for loop oneliner, join(), .capitalize(), .split(), .rstrip() 2. same, but this time I figured out about 'SEPORATOR'.join() |
| 11 | 2022-12-23 | 7_kyu_Highest_and_Lowest | 1. map(), f-string, max(), min() |
| 12 | 2022-12-24 | 7_kyu_Beginner_Series_#3_Sum_of_Numbers | range(), oneliner |
| 13 | 2022-12-26 | 7_kyu_Exes_and_Ohs | 1. if-else oneliner, count(), lower() 2. (FC) same but without if/else 3. More readable version |
| 14 | 2022-12-27 | 7_kyu_Growth_of_a_Population | 1. while loop, round down by // 2. (FC) addition argument, no round |
| 15 | 2022-12-28 | 8_kyu_Basic_Mathematical_Operations | 1 eval(), f-string. eval() with open argument - unsecure practice 2. dict insted of if |
| 16 | 2022-12-29 | 6_kyu_Detect_Pangram | 1. for, if, rfind(), chr(), unicode_index 2. (FC) import string, oneliner, set(), issubset(), string.ascii_lowercase |
| 17 | 2023-01-29 | 6_kyu_Array.diff | 1. List comprehension, in/not in / for loop 2. (FC) Same but subtrahend list converted to set(). More efficient. |
| 18 | 2023-01-29 | 6_kyu_Replace_With_Alphabet_Position | 1. Unicode, ord(), .join(), for/if oneliner |
| 19 | 2023-01-30 | 8_kyu_DNA_to_RNA_Conversion | 1. translation() - with dic it takes ASCII id / for loop 2. replace() |
| 20 | 2023-02-05 | 7_kyu_Mumbling | 1. for loop oneliner, enumerate(), join(), .capitalize() |
| 21 | 2023-03-13 | 6_kyu_Break_camelCase.py | 1. RegEx 2. (FC) RegEx, re.sub() |
| 22 | 2023-03-14 | 6_kyu_Duplicate_Encoder.py | 1. collections.Counter() |
| 23 | 2023-03-15 | 5_kyu_Valid_Parentheses.py | 1. Two counters algorithm 2. (FC) One counter realisation (much cleaner) |
| 24 | 2023-03-16 | 8_kyu_A_Needle_in_the_Haystack.py | 1. f-string, index() |
| 25 | 2023-03-18 | 7_kyu_Isograms.py | 1. for, enumerate, O(n^2) 2. (FC) set(). O(n) |
| 26 | 2023-03-20 2025-10-214 |
6_kyu_Counting_Duplicates.py | 1. dict, two for loops 2. iterator and set() 3. (FC) for loop, seen and dupes sets (nice one) 4. (My) for, .lower, set(), counter var 5. (My) Counter from collections, sum(), generator |
| 27 | 2023-03-22 | 7_kyu_Sum_of_two_lowest_positive_integers.py | 1. sorted(), sum(), O(n log n) 2. smallest & sec_smallest, for, sum(), O(n) |
| 28 | 2023-03-24 | 8_kyu_Rock_Paper_Scissors.py | 1. if-elif-else construction, easy to read |
| 29 | 2023-03-30 | 7_kyu_Get_the_Middle_Character.py | 1. if-elif-else, slice 2. (FC) divmod(), if-else oneliner, slice (much better than 1) |
| 30 | 2023-04-11 | 6_kyu_Find_the_odd_int.py | 1. collections - Counter, for k,v |
| 31 | 2023-04-26 | 7_kyu_Vowel_Count.py | 1. collections.Counter, for loop 2. (FC) sum(), in-for-in oneliner |
| 32 | 2023-05-08 | 8_kyu_Reversed_Strings.py | 1. slice [::-1] |
| 33 | 2023-05-08 | 8_kyu_Grasshopper_-_Check_for_factor.py | 1. statement % 2. return if else (no need for that. 1 variant did the same thing) |
| 34 | 2023-05-09 | 8_kyu_Remove_exclamation_marks.py | 1. .replace() |
| 35 | 2023-05-09 | 8_kyu_Cat_years,_Dog_years.py | 1. if * 3 2. |
| 36 | 2024-08-14 | 6_kyu_Sort_the_odd.py | 1. list, append(), sort() |
| 37 | 2024-10-23 | 8_kyu_Sentence_Smash.py | 1. join(), strip()() |
| 38 | 2024-10-23 | 8_kyu_Calculate_BMI.py | Tuple() insead of list[] for efficiency. One return statement instead of 4.() |
| 39 | 2024-09-12 | 6_kyu_Count_characters_in_your_string.py | 1. for-loop, if-else 2. (FC) for-loop, dict.get(value, default) |
| 40 | 2024-10-12 | 7_kyu_Disemvowel_Trolls.py | 1. (FC) ''.join(), list comprehansion 2. (FC) re, re.sub() |
| 41 | 2025-07-08 | 8_kyu_Super_Duper_Easy.py | 1. try/except |
| 42 | 2025-07-10 | 6_kyu_Simple_Encryption_#1_-_Alternating_Split.py | 1. slice [:], for-loop, % 2. OK, but can be better 2. (FC) Advanced slicing and multiple assigment |
| 43 | 2025-07-15 | 6_kyu_Who_likes_it.py | 1. if-elif, .join() 2. (FC) dict, .format(), [:] better looking, but worse efficiency |
| 44 | 2025-07-17 | 8_kyu_Reverse_List_Order.py | 1. [::-1] |
| 45 | 2025-07-17 | 8_kyu_Convert_a_String_to_a_Number.py | 1. int() |
| 46 | 2025-07-22 | 7_kyu_Remove_anchor_from_URL.py | 1. .split()[] |
| 47 | 2025-07-24 | 8_kyu_Transportation_on_vacation.py | 1. CONST, dict very readable |
| 48 | 2025-07-24 | 8_kyu_You_only_need_one_-_Beginner.py | 1. elem in seq |
| 49 | 2025-07-28 | 8_kyu_Beginner_-_Lost_Without_a_Map.py | 1. list comprehansion |
| 50 | 2025-07-28 | 8_kyu_Total_amount_of_points.py | 1. list comprehansion |
| 51 | 2025-07-31 | 7_kyu_Sum_of_odd_numbers.py | 1. for-loops, list, .apend() 2. (FC) n ** 3... yes. |
| 52 | 2025-08-04 | 7_kyu_Find_the_capitals.py | 1. list comprehansion, range(len()), str.isupper() 2. (FC) better list comprehansion, enumerate(), str.isupper() |
| 53 | 2025-08-20 2026-06-19 |
6_kyu_Your_order,_please.py | 1. split(), list comprehansion, for-loops, if, dict.items(), join() 2. (my) поиск цифры в слове, заполнение списка по индексу 3. (FC) sorted(..., key=min) |
| 54 | 2025-08-20 | 8_kyu_get_character_from_ASCII_Value.py | 1. chr() |
| 55 | 2025-08-20 | 7_kyu_Testing_1-2-3.py | list comprehansion, enumerate() with start parameter |
| 56 | 2025-08-20 | 6_kyu_Consecutive_strings.py | 1. generator + max(key=len), ''.join 2. nested loops + max(key=len) |
| 57 | 2025-08-21 | 6_kyu_Give_me_a_Diamond.py | 1. for-loop, abs distance to diamond mid abs(mid - i), stars and spaces counting, .append(), join() 2. (FC) nice&easy. Make mid and add similar lines from both sides |
| 58 | 2025-08-22 | 6_kyu_Tribonacci.py | 1. for-loop, condition checks for n, sum() slice 2. (FC) short loop with res[-3:] |
| 59 | 2025-09-02 | 8_kyu_Parse_nice_int_from_char_problem.py | int(), string indexing [0] |
| 60 | 2025-09-02 | 8_kyu_Find_Maximum_and_Minimum_Values_of_a_List.py | min(), max() built-in functions |
| 61 | 2025-09-02 | 8_kyu_Keep_up_the_hoop.py | 1. tuple indexing with boolean 2. ternary operator 3. if-else statement |
| 62 | 2025-09-02 | 7_kyu_Sum_of_the_first_nth_term_of_Series.py | list comprehension, sum(), f-string formatting :.2f |
| 63 | 2025-09-02 | 8_kyu_Return_Negative.py | abs(), unary minus operator |
| 64 | 2025-09-05 | 8_kyu_altERnaTIng_cAsE_ALTerNAtiNG_CaSe.py | 1. generator expression, casefold(), isupper(), upper() 2. (FC) string.swapcase() - built-in method |
| 65 | 2025-09-05 | 8_kyu_Powers_of_2.py | list comprehension, range(), power operator ** |
| 66 | 2025-09-08 | 8_kyu_Convert_number_to_reversed_array_of_digits.py | list comprehension, str(), int(), slice reversal [::-1] |
| 67 | 2025-09-09 | 5_kyu_Directions_Reduction.py | stack data structure, dictionary, list.pop(), list.append(), type hints |
| 68 | 2025-09-10 | 8_kyu_Finish_Guess_the_Number_Game.py | class, init, instance variables, method, type hints, exception handling |
| 69 | 2025-09-24 | 7_kyu_Refactored_Greeting.py | class, init, instance method, f-string, type hints, OOP |
| 70 | 2025-09-27 | 8_kyu_Get_Planet_Name_By_ID.py | 1. dictionary mapping, dict.get() |
| 71 | 2025-10-01 | 6_kyu_Stop_gninnipS_My_sdroW.py | 1. generator, [::-1], len(), .split() 2. for loop 3. (AI): map(), lambda, .split() |
| 72 | 2025-10-02 | 7_kyu_Descending_Order.py | sorted(), str(), int(), ''.join() |
| 73 | 2025-10-03 | 8_kyu_Name_Your_Python.py | class, init, instance variable |
| 74 | 2025-10-06 | 8_kyu_Regular_Ball_Super_Ball.py | class, init, default parameter, instance variable |
| 75 | 2025-10-09 | 6_kyu_Sum_of_Digits_Digital_Root.py | 1. mathematical modulo 9 approach 2. (FC) clever one-liner with boolean operators or and |
| 76 | 2025-10-13 | 7_kyu_Basic_Sequence_Practice.py | 1. iterative cumulative sum, edge case handling 2.(AI) mathematical triangular numbers |
| 76 | 2026-01-18 | 8_kyu_OOP_Object_Oriented_Piracy.py | boolean expression |
| 77 | 2026-06-08 | 8_kyu_Classy_Extensions.py | Inheritance, method overriding, f-string |
| 78 | 2026-06-08 | 8_kyu_Classy_Classes.py | OOP, constructor, @property property, f-string |
| 79 | 2026-06-08 | 7_kyu_makeBackronym.py | Generator expression, dictionary, str.upper() |
| 80 | 2026-06-09 | 7_kyu_Friend_or_Foe.py | List comprehension, filtering by string length |
| 81 | 2026-06-17 | 6_kyu_Persistent_Bugger.py | while loop, converting number to digits, product of digits |
| 82 | 2026-06-18 | 8_kyu_Playing_with_cubes_II.py | OOP, constructor, getter/setter, __side, abs() |
| 83 | 2026-06-29 | 8_kyu_Grade_book.py | 1. (my) dictionary, loop, average comparison 2. (FAI) bisect_right, string indexing |
| 84 | 2026-06-30 | 8_kyu_Grasshopper_Summation.py | 1. sum(range()) 2. Gauss formula (O(1), integer division) |
| 85 | 2026-07-01 | 8_kyu_Grasshopper_Terminal_Game_1.py | OOP, @dataclass, default values, fields |
| 86 | 2026-07-02 | 8_kyu_Divisible_By.py | list comprehension, filter, lambda (альтернатива менее читаема) |
| 87 | 2026-07-03 | 8_kyu_Grasshopper_Combine_strings.py | f-string, type hints, concatenation |
| 88 | 2026-07-03 | 7_kyu_Method_For_Counting_Total_Occurence_Of_Specific_Digits.py | OOP, generator expression, str.count, list comprehension, abs() |
| 89 | 2026-07-04 | 7_kyu_Remove_All_The_Marked_Elements_of_a_List.py | set, list comprehension, filter by exclusion |
| 90 | 2026-07-06 | 8_kyu_Formatting_decimal_places_0.py | round() (bankers rounding), Decimal with ROUND_HALF_UP (alternative) |
| 91 | 2026-07-07 | 7_kyu_Formatting_decimal_places_1.py | Decimal with ROUND_DOWN (truncate), alternative with int truncation |
| 92 | 2026-07-08 | 7_kyu_Number_of_People_in_the_Bus.py | loop, tuple unpacking, generator expression, sum() |
| 93 | 2026-07-09 | 7_kyu_Two_to_One.py | set, sorting, string concatenation, set union | (alternative) |
| 94 | 2026-07-14 | 8_kyu_Remove_First_and_Last_Character.py | string slicing s[1:-1] |
| 95 | 2026-07-16 | 7_kyu_Sum_of_numbers_from_0_to_N.py | map(str, range()), formula for sum, ternary vs if/elif (alternative) |
| 96 | 2026-07-20 | 8_kyu_No_zeros_for_heroes.py | str.rstrip(), int() conversion, while loop with modulo (alternative) |
| 97 | 2026-07-21 | 7_kyu_The_Barksdale_Code.py | map with lambda, str.maketrans, str.translate (alternative) |
| 98 | 2026-07-22 | 7_kyu_Professor_Oaks_Trouble_New_Pokedex_prototype.py | bisect_left, class attributes, boolean arithmetic (alternative) |
| 99 | 2026-07-24 | 7_kyu_Two_fighters_one_winner.py | tuple swapping, while loop, class attributes, cur/opp variables (alternative) |
| 100 | 2026-07-24 | 8_kyu_Removing_Elements.py | list slicing [::2], step parameter |
| № | Date | File | Theme |
|---|---|---|---|
| 1 | 2022-11-17 | 06_Remove_Element.py | Arrays_101 1. two pointers: fast and slow 2. two pointers (start and end) and swap |
| 2 | 2022-11-19 | 07_Remove_Duplicates_from_Sorted_Array.py | Arrays_101 1. two pointers, slow and fast + while loop 2. (FC) One pointer + for loop, pretty close to 1 solvation |
| 3 | 2022-11-21 | 08_Check_If_N_and_Its_Double_Exist.py | Arrays_101 1. set(), for, in |
| 4 | 2022-11-23 | 09_Valid_Mountain_Array.py | Arrays_101 1. while loop, walk up - walk down |
| 5 | 2023-06-02 | 01_1768._Merge_Strings_Alternately.py | LeetCode_75 1. two pointers 2. (FC) zip_longest, list comprehansion, "".join |
| 6 | 2023-08-11 | 02_1071._Greatest_Common_Divisor_of_Strings.py | LeetCode_75 1. (My, did't work) max(), min(), for-loop, count() 2. (Editoiral) / Brute Force - prefix check, end-to-start, min(), len() |
| 7 | 2023-09-01 | 03_1431._Kids_With_the_Greatest_Number_of_Candies.py | LeetCode_75 1. (My) max(), for-loop, append() 2. (From Comments, much shorter!), max(), generator expression |
| 8 | 2025-03-14 | max_consecutive_ones.py | Arrays_101 1. pointers 2. Counter |
| 9 | 2026-01-26 | [217_Contains_Duplicate.py](https://github.com/SibDiP/Codewars_solutions/blob/main/leecode/Learn with Perplexity/217_Contains_Duplicate.py | Arrays and Hashing 1. BRUTE FORCE (O(n²) time, O(1) space) 2. SET COMPARISON - LENGTH CHECK (O(n) time, O(n) space) 3. SET WITH LOOP - OPTIMAL (O(n) time, O(n) space) |