@@ -9,22 +9,24 @@ you to become a better programmer and improve your chance of getting a new job b
9
9
## Puzzle structure
10
10
11
11
Each puzzle is located in separate package and it contains 3 main files ([ screen] ( ./misc/image/SampleTask.png ) ):
12
- - ` Puzzle .md` - the task description.
12
+ - ` desc .md` - the task description.
13
13
- ` Puzzle.kt ` - an empty method/class where puzzle should be solved. This file also contains helper methods and a set of
14
14
[ JUnit] ( https://junit.org/junit4/ ) tests which verify that task was solved correctly.
15
- - ` PuzzleSolution .kt` - a file containing one or more solutions.
15
+ - ` Solution .kt` - a file containing one or more solutions.
16
16
17
17
Keep in mind that each puzzle will usually have more than one solution. Even simple puzzles like
18
- [ String reversal] ( app/ src/test/java /com/igorwojda/string/reverse/Reverse.md) can be solved in
18
+ [ String reversal] ( src/test/kotlin /com/igorwojda/string/reverse/Reverse.md ) can be solved in
19
19
[ 10 different ways] ( https://eddmann.com/posts/ten-ways-to-reverse-a-string-in-javascript/ ) . Usually, we compare various
20
20
solutions using
21
21
([ Big O notation] ( https://medium.com/karuna-sehgal/a-simplified-explanation-of-the-big-o-notation-82523585e835 ) ) to
22
22
determine space/time complexity and we look at code readability.
23
23
24
24
## How do I start?
25
- 1 . [ Checkout and open the project] ( https://github.com/igorwojda/kotlin-coding-puzzle/wiki/Checkout-and-open-the-project )
26
- 2 . [ Solve the puzzle] ( https://github.com/igorwojda/kotlin-coding-puzzle/wiki/Solving-coding-chalenges )
27
- 3 . [ Run the tests] ( https://github.com/igorwojda/kotlin-coding-puzzle/wiki/Running-tests )
25
+
26
+ 1 . Install [ IntelliJ IDEA] ( https://www.jetbrains.com/idea/ )
27
+ 2 . Import project by using IntelliJ IDEA menu: ` File | New | Project From Version Control | Git `
28
+ 3 . Choose a puzzle and code the [ solution] ( https://github.com/igorwojda/kotlin-coding-puzzle/wiki/Solving-coding-chalenges )
29
+ 4 . [ Run the tests] ( https://github.com/igorwojda/kotlin-coding-puzzle/wiki/Running-tests ) to verify your solution
28
30
29
31
# Let's solve some puzzles
30
32
@@ -36,80 +38,84 @@ problem. To succeed you need to practice often, repeat the same puzzles multiple
36
38
your time before you take a look at the presented solution. ** Good luck!**
37
39
38
40
** New in Town**
39
- - [ Capitalize sentence] ( app/src/test/java/com/igorwojda/string/capitalizesentence/CapitalizeSentence.md )
40
- - [ Get odd numbers] ( app/src/test/java/com/igorwojda/integer/getodd/GetOdd.md )
41
- - [ Range contains range?] ( app/src/test/java/com/igorwojda/range/containsrange/ContainsRange.md )
42
- - [ Add up to] ( app/src/test/java/com/igorwojda/integer/addupto/AddUpTo.md )
43
- - [ Linear search] ( app/src/test/java/com/igorwojda/list/search/linearsearch/LinearSearch.md )
44
- - [ Count down] ( app/src/test/java/com/igorwojda/integer/countdown/CountDown.md )
45
- - [ Count up and down] ( app/src/test/java/com/igorwojda/integer/countupanddown/CountUpAndDown.md )
46
- - [ Format train route] ( app/src/test/java/com/igorwojda/list/formattrainroute/FormatTrainRoute.md )
47
- - [ Generate all pairs] ( app/src/test/java/com/igorwojda/integer/generateallpairs/GenerateAllPairs.md )
48
- - [ Count unique values] ( app/src/test/java/com/igorwojda/list/countuniquevalues/CountUniqueValues.md )
49
- - [ Print number] ( app/src/test/java/com/igorwojda/integer/printnumber/basic/PrintNumber.md )
50
- - [ Print number with steps] ( app/src/test/java/com/igorwojda/integer/printnumber/steps/PrintNumberWithSteps.md )
51
- - [ Power] ( app/src/test/java/com/igorwojda/integer/power/Power.md )
52
- - [ Factorial] ( app/src/test/java/com/igorwojda/integer/factorial/Factorial.md )
53
- - [ Product] ( app/src/test/java/com/igorwojda/list/product/Product.md )
54
- - [ Capitalize first] ( app/src/test/java/com/igorwojda/list/capitalizeFirst/CapitalizeFirst.md )
55
- - [ Decapitalize const] ( app/src/test/java/com/igorwojda/string/decapitalizeconst/DecapitalizeConst.md )
56
- - [ Longest word] ( app/src/test/java/com/igorwojda/string/longestword/LongestWord.md )
41
+
42
+ - [ Capitalize sentence] ( src/test/kotlin/com/igorwojda/string/capitalizesentence/CapitalizeSentence.md )
43
+ - [ Get odd numbers] ( src/test/kotlin/com/igorwojda/integer/getodd/GetOdd.md )
44
+ - [ Range contains range?] ( src/test/kotlin/com/igorwojda/range/containsrange/ContainsRange.md )
45
+ - [ Add up to] ( src/test/kotlin/com/igorwojda/integer/addupto/AddUpTo.md )
46
+ - [ Linear search] ( src/test/kotlin/com/igorwojda/list/search/linearsearch/LinearSearch.md )
47
+ - [ Count down] ( src/test/kotlin/com/igorwojda/integer/countdown/CountDown.md )
48
+ - [ Count up and down] ( src/test/kotlin/com/igorwojda/integer/countupanddown/CountUpAndDown.md )
49
+ - [ Format train route] ( src/test/kotlin/com/igorwojda/list/formattrainroute/FormatTrainRoute.md )
50
+ - [ Generate all pairs] ( src/test/kotlin/com/igorwojda/integer/generateallpairs/GenerateAllPairs.md )
51
+ - [ Count unique values] ( src/test/kotlin/com/igorwojda/list/countuniquevalues/CountUniqueValues.md )
52
+ - [ Print number] ( src/test/kotlin/com/igorwojda/integer/printnumber/basic/PrintNumber.md )
53
+ - [ Print number with steps] ( src/test/kotlin/com/igorwojda/integer/printnumber/steps/PrintNumberWithSteps.md )
54
+ - [ Power] ( src/test/kotlin/com/igorwojda/integer/power/Power.md )
55
+ - [ Factorial] ( src/test/kotlin/com/igorwojda/integer/factorial/Factorial.md )
56
+ - [ Product] ( src/test/kotlin/com/igorwojda/list/product/Product.md )
57
+ - [ Capitalize first] ( src/test/kotlin/com/igorwojda/list/capitalizeFirst/CapitalizeFirst.md )
58
+ - [ Decapitalize const] ( src/test/kotlin/com/igorwojda/string/decapitalizeconst/DecapitalizeConst.md )
59
+ - [ Longest word] ( src/test/kotlin/com/igorwojda/string/longestword/LongestWord.md )
57
60
58
61
** Apprentice**
59
- - [ Is palindrome] ( app/src/test/java/com/igorwojda/string/ispalindrome/basic/IsPalindrome.md )
60
- - [ Is tolerant palindrome] ( app/src/test/java/com/igorwojda/string/ispalindrome/tolerant/IsTolerantPalindrome.md )
61
- - [ Is permutation palindrome] ( app/src/test/java/com/igorwojda/string/ispalindrome/permutation/IsPermutationPalindrome.md )
62
- - [ Is anagram] ( app/src/test/java/com/igorwojda/string/isanagram/IsAnagram.md )
63
- - [ Max occurring char] ( app/src/test/java/com/igorwojda/string/maxchar/MaxOccurrentChar.md )
64
- - [ String reverse] ( app/src/test/java/com/igorwojda/string/reverse/Reverse.md )
65
- - [ Find the vowels] ( app/src/test/java/com/igorwojda/string/vowels/Vowels.md )
66
- - [ Int reverse] ( app/src/test/java/com/igorwojda/integer/reverse/Reverse.md )
67
- - [ Pyramid generator] ( app/src/test/java/com/igorwojda/integer/pyramidgenerator/PyramidGenerator.md )
68
- - [ Steps generator] ( app/src/test/java/com/igorwojda/integer/stepsgenerator/StepsGenerator.md )
69
- - [ Fizz Buzz] ( app/src/test/java/com/igorwojda/integer/fizzbuzz/FizzBuzz.md )
70
- - [ Caesar Cipher] ( app/src/test/java/com/igorwojda/string/caesarcipher/CaesarCipher.md )
71
- - [ Has repeated char] ( app/src/test/java/com/igorwojda/string/hasrepeatedcharacter/HasRepeatedChar.md )
62
+
63
+ - [ Is palindrome] ( src/test/kotlin/com/igorwojda/string/ispalindrome/basic/IsPalindrome.md )
64
+ - [ Is tolerant palindrome] ( src/test/kotlin/com/igorwojda/string/ispalindrome/tolerant/IsTolerantPalindrome.md )
65
+ - [ Is permutation palindrome] ( src/test/kotlin/com/igorwojda/string/ispalindrome/permutation/IsPermutationPalindrome.md )
66
+ - [ Is anagram] ( src/test/kotlin/com/igorwojda/string/isanagram/IsAnagram.md )
67
+ - [ Max occurring char] ( src/test/kotlin/com/igorwojda/string/maxchar/MaxOccurrentChar.md )
68
+ - [ String reverse] ( src/test/kotlin/com/igorwojda/string/reverse/Reverse.md )
69
+ - [ Find the vowels] ( src/test/kotlin/com/igorwojda/string/vowels/Vowels.md )
70
+ - [ Int reverse] ( src/test/kotlin/com/igorwojda/integer/reverse/Reverse.md )
71
+ - [ Pyramid generator] ( src/test/kotlin/com/igorwojda/integer/pyramidgenerator/PyramidGenerator.md )
72
+ - [ Steps generator] ( src/test/kotlin/com/igorwojda/integer/stepsgenerator/StepsGenerator.md )
73
+ - [ Fizz Buzz] ( src/test/kotlin/com/igorwojda/integer/fizzbuzz/FizzBuzz.md )
74
+ - [ Caesar Cipher] ( src/test/kotlin/com/igorwojda/string/caesarcipher/CaesarCipher.md )
75
+ - [ Has repeated char] ( src/test/kotlin/com/igorwojda/string/hasrepeatedcharacter/HasRepeatedChar.md )
72
76
73
77
** Warrior**
74
- - [ Spiral matrix generator] ( app/src/test/java/com/igorwojda/integer/spiralmatrixgenerator/SpiralMatrixGenerator.md )
75
- - [ Queue] ( app/src/test/java/com/igorwojda/queue/basic/Queue.md )
76
- - [ Combine queues] ( app/src/test/java/com/igorwojda/queue/combine/Combine.md )
77
- - [ Stack] ( app/src/test/java/com/igorwojda/stack/basic/Stack.md )
78
- - [ Bubble sort] ( app/src/test/java/com/igorwojda/list/sort/bubblesort/BubbleSort.md )
79
- - [ Selection sort] ( app/src/test/java/com/igorwojda/list/sort/selectionsort/SelectionSort.md )
80
- - [ Square equals] ( app/src/test/java/com/igorwojda/list/squareequal/SquareEquals.md )
81
- - [ Sum zero] ( app/src/test/java/com/igorwojda/list/sumzero/SumZero.md )
82
- - [ Digit frequency] ( app/src/test/java/com/igorwojda/integer/digitfrequency/DigitFrequency.md )
83
- - [ Get duplicated arguments] ( app/src/test/java/com/igorwojda/string/getduplicatedarguments/GetDuplicatedArguments.md )
84
- - [ Find pair with target average] ( app/src/test/java/com/igorwojda/list/pairaverage/PairAverage.md )
85
- - [ Binary search tree] ( app/src/test/java/com/igorwojda/tree/binarysearchtree/BinarySearchTree.md )
86
- - [ Tree traversal] ( app/src/test/java/com/igorwojda/tree/classic/traversal/TreeTraversal.md )
87
- - [ Tree level width] ( app/src/test/java/com/igorwojda/tree/classic/levelwidth/LevelWidth.md )
88
- - [ Binary search tree (insert)] ( app/src/test/java/com/igorwojda/binarytree/insert/Insert.md )
89
- - [ Binary search tree (validate)] ( app/src/test/java/com/igorwojda/binarytree/validate/Validate.md )
90
- - [ Any callback] ( app/src/test/java/com/igorwojda/various/anycallback/AnyCallback.md )
91
- - [ Flatten] ( app/src/test/java/com/igorwojda/list/flatten/Flatten.md )
92
- - [ Binary search] ( app/src/test/java/com/igorwojda/list/search/binarysearch/BinarySearch.md )
93
- - [ Surrounded letter] ( app/src/test/java/com/igorwojda/string/surroundedletter/SurroundedLetter.md )
94
- - [ Insertion sort] ( app/src/test/java/com/igorwojda/list/sort/insertionsort/InsertionSort.md )
95
- - [ Quick sort] ( app/src/test/java/com/igorwojda/list/sort/quicksort/QuickSort.md )
96
- - [ Radix sort] ( app/src/test/java/com/igorwojda/list/sort/radixsort/RadixSort.md )
97
- - [ Doubly linked list] ( app/src/test/java/com/igorwojda/linkedlist/doubly/base/DoublyLinkedList.md )
98
- - [ Max binary heap] ( app/src/test/java/com/igorwojda/tree/heap/maxbinaryheap/MaxBinaryHeap.md )
78
+
79
+ - [ Spiral matrix generator] ( src/test/kotlin/com/igorwojda/integer/spiralmatrixgenerator/SpiralMatrixGenerator.md )
80
+ - [ Queue] ( src/test/kotlin/com/igorwojda/queue/basic/Queue.md )
81
+ - [ Combine queues] ( src/test/kotlin/com/igorwojda/queue/combine/Combine.md )
82
+ - [ Stack] ( src/test/kotlin/com/igorwojda/stack/basic/Stack.md )
83
+ - [ Bubble sort] ( src/test/kotlin/com/igorwojda/list/sort/bubblesort/BubbleSort.md )
84
+ - [ Selection sort] ( src/test/kotlin/com/igorwojda/list/sort/selectionsort/SelectionSort.md )
85
+ - [ Square equals] ( src/test/kotlin/com/igorwojda/list/squareequal/SquareEquals.md )
86
+ - [ Sum zero] ( src/test/kotlin/com/igorwojda/list/sumzero/SumZero.md )
87
+ - [ Digit frequency] ( src/test/kotlin/com/igorwojda/integer/digitfrequency/DigitFrequency.md )
88
+ - [ Get duplicated arguments] ( src/test/kotlin/com/igorwojda/string/getduplicatedarguments/GetDuplicatedArguments.md )
89
+ - [ Find pair with target average] ( src/test/kotlin/com/igorwojda/list/pairaverage/PairAverage.md )
90
+ - [ Binary search tree] ( src/test/kotlin/com/igorwojda/tree/binarysearchtree/BinarySearchTree.md )
91
+ - [ Tree traversal] ( src/test/kotlin/com/igorwojda/tree/classic/traversal/TreeTraversal.md )
92
+ - [ Tree level width] ( src/test/kotlin/com/igorwojda/tree/classic/levelwidth/LevelWidth.md )
93
+ - [ Binary search tree (insert)] ( src/test/kotlin/com/igorwojda/binarytree/insert/Insert.md )
94
+ - [ Binary search tree (validate)] ( src/test/kotlin/com/igorwojda/binarytree/validate/Validate.md )
95
+ - [ Any callback] ( src/test/kotlin/com/igorwojda/various/anycallback/AnyCallback.md )
96
+ - [ Flatten] ( src/test/kotlin/com/igorwojda/list/flatten/Flatten.md )
97
+ - [ Binary search] ( src/test/kotlin/com/igorwojda/list/search/binarysearch/BinarySearch.md )
98
+ - [ Surrounded letter] ( src/test/kotlin/com/igorwojda/string/surroundedletter/SurroundedLetter.md )
99
+ - [ Insertion sort] ( src/test/kotlin/com/igorwojda/list/sort/insertionsort/InsertionSort.md )
100
+ - [ Quick sort] ( src/test/kotlin/com/igorwojda/list/sort/quicksort/QuickSort.md )
101
+ - [ Radix sort] ( src/test/kotlin/com/igorwojda/list/sort/radixsort/RadixSort.md )
102
+ - [ Doubly linked list] ( src/test/kotlin/com/igorwojda/linkedlist/doubly/base/DoublyLinkedList.md )
103
+ - [ Max binary heap] ( src/test/kotlin/com/igorwojda/tree/heap/maxbinaryheap/MaxBinaryHeap.md )
99
104
100
105
** Commander**
101
- - [ List chunk] ( app/src/test/java/com/igorwojda/list/listchunk/ListChunk.md )
102
- - [ Singly linked list] ( app/src/test/java/com/igorwojda/linkedlist/singly/base/SinglyLinkedList.md )
103
- - [ Linked list midpoint] ( app/src/test/java/com/igorwojda/linkedlist/singly/midpoint/Midpoint.md )
104
- - [ Circular check] ( app/src/test/java/com/igorwojda/linkedlist/singly/circularcheck/CircularCheck.md )
105
- - [ Linked list take n-th element from last] ( app/src/test/java/com/igorwojda/linkedlist/singly/fromlast/FromLast.md )
106
- - [ Is sub string] ( app/src/test/java/com/igorwojda/string/issubstring/IsSubstring.md )
107
- - [ Merge sort] ( app/src/test/java/com/igorwojda/list/sort/mergesort/MergeSort.md )
108
- - [ Fibonacci] ( app/src/test/java/com/igorwojda/integer/fibonacci/basic/Fibonacci.md )
109
- - [ Fibonacci with recursive cache] ( app/src/test/java/com/igorwojda/integer/fibonacci/recursivecached/FibonacciRecursiveCached.md )
110
- - [ Max sub list sum] ( app/src/test/java/com/igorwojda/list/maxsublistsum/MaxSubListSum.md )
111
- - [ Min sub list length] ( app/src/test/java/com/igorwojda/list/minsublistlength/MinSubListLength.md )
112
- - [ Subtract] ( app/src/test/java/com/igorwojda/list/subtract/Subtract.md )
106
+
107
+ - [ List chunk] ( src/test/kotlin/com/igorwojda/list/listchunk/ListChunk.md )
108
+ - [ Singly linked list] ( src/test/kotlin/com/igorwojda/linkedlist/singly/base/SinglyLinkedList.md )
109
+ - [ Linked list midpoint] ( src/test/kotlin/com/igorwojda/linkedlist/singly/midpoint/Midpoint.md )
110
+ - [ Circular check] ( src/test/kotlin/com/igorwojda/linkedlist/singly/circularcheck/CircularCheck.md )
111
+ - [ Linked list take n-th element from last] ( src/test/kotlin/com/igorwojda/linkedlist/singly/fromlast/FromLast.md )
112
+ - [ Is sub string] ( src/test/kotlin/com/igorwojda/string/issubstring/IsSubstring.md )
113
+ - [ Merge sort] ( src/test/kotlin/com/igorwojda/list/sort/mergesort/MergeSort.md )
114
+ - [ Fibonacci] ( src/test/kotlin/com/igorwojda/integer/fibonacci/basic/Fibonacci.md )
115
+ - [ Fibonacci with recursive cache] ( src/test/kotlin/com/igorwojda/integer/fibonacci/recursivecached/FibonacciRecursiveCached.md )
116
+ - [ Max sub list sum] ( src/test/kotlin/com/igorwojda/list/maxsublistsum/MaxSubListSum.md )
117
+ - [ Min sub list length] ( src/test/kotlin/com/igorwojda/list/minsublistlength/MinSubListLength.md )
118
+ - [ Subtract] ( src/test/kotlin/com/igorwojda/list/subtract/Subtract.md )
113
119
114
120
# Useful links
115
121
0 commit comments