gitextract_pko15ir1/ ├── .gitignore ├── LICENSE.txt ├── README.md ├── README_ru.md ├── build.gradle.kts ├── gradle/ │ └── wrapper/ │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── settings.gradle.kts └── src/ ├── main/ │ └── kotlin/ │ ├── design_patterns/ │ │ ├── Abstract Factory.kt │ │ ├── Adapter.kt │ │ ├── Bridge.kt │ │ ├── Builder.kt │ │ ├── Command.kt │ │ ├── Composite.kt │ │ ├── Decorator.kt │ │ ├── Facade.kt │ │ ├── Factory Method.kt │ │ ├── Flyweight.kt │ │ ├── Interpreter.kt │ │ ├── Iterator.kt │ │ ├── Mediator.kt │ │ ├── Memento.kt │ │ ├── Observer.kt │ │ ├── Prototype.kt │ │ ├── Proxy.kt │ │ ├── Singleton.kt │ │ ├── State.kt │ │ ├── Strategy.kt │ │ ├── Template Method.kt │ │ ├── Visitor.kt │ │ └── Сhain Of Responsibilities.kt │ ├── other/ │ │ ├── BinaryDigitsCounter.kt │ │ ├── EuclidAlgorithm.kt │ │ ├── Factorial.kt │ │ ├── FactorialAdvanced.kt │ │ ├── FactorialBigWithCache.kt │ │ ├── FactorialWithCache.kt │ │ ├── FizzBuzz.kt │ │ ├── KnuthMorrisPrattAlgorithm.kt │ │ ├── LevenshteinLengthAlgorithm.kt │ │ ├── MaxAlgorithm.kt │ │ ├── MinAlgorithm.kt │ │ ├── PalindromeAlgorithm.kt │ │ ├── ParenthesisCheckAlgorithm.kt │ │ ├── ReverseArrayAlgorithm.kt │ │ ├── SieveOfEratosthenesAlgorithm.kt │ │ ├── Sqrt.kt │ │ ├── StringEqualsHashAlgorithm.kt │ │ └── SwapAlgorithm.kt │ ├── search/ │ │ ├── BinarySearch.kt │ │ └── LinearSearch.kt │ ├── sorting/ │ │ ├── BubbleSort.kt │ │ ├── CountingSort.kt │ │ ├── InsertionSort.kt │ │ ├── MergeSort.kt │ │ ├── QuickSort.kt │ │ ├── RadixSort.kt │ │ ├── SelectionSort.kt │ │ └── TimSort.kt │ └── structures/ │ ├── BinaryTree.kt │ ├── CircularLinkedList.kt │ ├── DoubleLinkedList.kt │ ├── DynamicArray.kt │ ├── Graph.kt │ ├── GraphWithWeights.kt │ ├── Matrix.kt │ ├── MaxHeap.kt │ ├── MinHeap.kt │ ├── Queue.kt │ ├── SingleLinkedList.kt │ ├── Stack1.kt │ └── Stack2.kt └── test/ └── kotlin/ ├── TestUtils.kt ├── design_patterns/ │ ├── AbstractFactoryTest.kt │ ├── AdapterTest.kt │ ├── BridgeTest.kt │ ├── BuilderTest.kt │ ├── ChainOfResponsibilitiesTest.kt │ ├── CommandTest.kt │ ├── CompositeTest.kt │ ├── DecoratorTest.kt │ ├── FacadeTest.kt │ ├── FactoryMethodTest.kt │ ├── FlyweightTest.kt │ ├── InterpreterTest.kt │ ├── IteratorTest.kt │ ├── MediatorTest.kt │ ├── MementoTest.kt │ ├── ObserverTest.kt │ ├── PrototypeTest.kt │ ├── ProxyTest.kt │ ├── SingletonTest.kt │ ├── StateTest.kt │ ├── StrategyTest.kt │ ├── TemplateMethodTest.kt │ └── VisitorTest.kt ├── other/ │ ├── BinaryDigitsCounterTest.kt │ ├── EuclidAlgorithmTest.kt │ ├── FactorialAdvancedTest.kt │ ├── FactorialBigWithCacheTest.kt │ ├── FactorialTest.kt │ ├── FactorialWithCacheTest.kt │ ├── FizzBuzzTest.kt │ ├── KnuthMorrisPrattAlgorithmTest.kt │ ├── LevenshteinLengthAlgorithmTest.kt │ ├── MaxAlgorithmTest.kt │ ├── MinAlgorithmTest.kt │ ├── PalindromeAlgorithmTest.kt │ ├── ParenthesisCheckAlgorithmTest.kt │ ├── ReverseArrayAlgorithmTest.kt │ ├── SieveOfEratosthenesAlgorithmTest.kt │ ├── SqrtTest.kt │ ├── StringEqualsHashAlgorithmTest.kt │ └── SwapAlgorithmTest.kt ├── search/ │ ├── BinarySearchTest.kt │ └── LinearSearchTest.kt ├── sorting/ │ ├── BubbleSortTest.kt │ ├── CountingSortTest.kt │ ├── InsertionSortTest.kt │ ├── MergeSortTest.kt │ ├── QuickSortTest.kt │ ├── RadixSortTest.kt │ ├── SelectionSortTest.kt │ └── TimSortTest.kt └── structures/ ├── BinaryTreeTest.kt ├── CircularLinkedListTest.kt ├── DoubleLinkedListTest.kt ├── DynamicArrayTest.kt ├── GraphTest.kt ├── GraphWithWeightsTest.kt ├── MatrixTest.kt ├── MaxHeapTest.kt ├── MinHeapTest.kt ├── QueueTest.kt ├── SingleLinkedListTest.kt ├── Stack1Test.kt └── Stack2Test.kt