Instantly share code, notes, and snippets.

# jrusev/coding_problems_tests.md Last active Jan 24, 2018

problems

### Problem 1. Ransom note

``````'one sentence from a magazine', 'ransom note' => True
'one payment', 'pay money' => False
'downpayment', 'pay now' => True
``````

stdin

``````3
one sentence from a magazine
ransom note
one payment
pay money
downpayment
pay now
``````

### Problem 2. Brackets

``````"This string has no brackets." => True
"(fn [f s] (reduce #(merge-with concat % {(f %2) [%2]}) {} s))" => True
"(start, end]" => False
"())" => False
"[ { ] } " => False
"([]([(()){()}(()(()))(([[]]({}()))())]((((()()))))))" => True
"([]([(()){()}(()(()))(([[]]({}([)))())]((((()()))))))" => False
"[" => False
``````

stdin

``````8
This string has no brackets.
(fn [f s] (reduce #(merge-with concat % {(f %2) [%2]}) {} s))
(start, end]
())
[ { ] }
([]([(()){()}(()(()))(([[]]({}()))())]((((()()))))))
([]([(()){()}(()(()))(([[]]({}([)))())]((((()()))))))
[
``````

### Problem 3. Maximum Subarray

``````[-2, 1, -3, 4, -1, 2, 1, -5, 4] => 6 (4, -1, 2, 1)
[2, 3, -6, -1, 2, -1, 6, 4, -8, 8] => 11 (2, -1, 6, 4)
[-1, -2, 3, 5, 6, -2, -1, 4, -4, 2, -1] => 15 (3, 5, 6, -2, -1, 4)
[-1, -2, -3, -4, -5] => 0
[] => 0
[7, -6, -8, 5, -2, -6, 7, 4, 8, -9, -3, 2, 6, -4, -6] => 19 (7, 4, 8)
[0, 1, 2, -3, 3, -1, 0, -4, 0, -1, -4, 2] => 3 (0, 1, 2)
[1, 2, 3, 4, 5, -8, -9, -20, 40, 25, -5] => 65 (40, 25)
``````

stdin

``````7
-2 1 -3 4 -1 2 1 -5 4
2 3 -6 -1 2 -1 6 4 -8 8
-1 -2 3 5 6 -2 -1 4 -4 2 -1
-1 -2 -3 -4 -5
7 -6 -8 5 -2 -6 7 4 8 -9 -3 2 6 -4 -6
0 1 2 -3 3 -1 0 -4 0 -1 -4 2
1 2 3 4 5 -8 -9 -20 40 25 -5
``````

### Problem 4. Word Chains

``````['hat', 'coat', 'dog', 'cat', 'oat', 'cot', 'hot', 'hog'] => True
['hog', 'hot', 'hat', 'dog', 'oat'] => True
['cot', 'hot', 'bat', 'fat'] => False
['to', 'top', 'stop', 'tops', 'toss'] => False
['spout', 'do', 'pot', 'pout', 'spot', 'dot'] => True
['share', 'hares', 'shares', 'hare', 'are'] => True
['share', 'hares', 'hare', 'are'] => False
``````

stdin

``````7
hat coat dog cat oat cot hot hog
hog hot hat dog oat
cot hot bat fat
to top stop tops toss
spout do pot pout spot dot
share hares shares hare are
share hares hare are
``````

### Problem 5. Array Swap

``````[4, 3, 5, -1], [3, 6, 4, 2] => [4, 6]
[4, 1, 5], [9, 3, 2] => [1, 3]
[4, 3, 4], [5, 10] => [3, 5]
[5, 10], [4, 3, 4] => [5, 3]
[-1, 3, 9], [14, 1] => [-1, 1]
[14, 1], [-1, 3, 9] => [1, -1]
[-4, -3, -4], [-5, -10] => [-3, -5]
[-5, -10], [-4, -3, -4] => [-5, -3]
[4, 3, 4], [5, 11] => []
[4, 3, 4], [3, 12] => []
[], [0] => []
[0], [] => []
[], [] => []
``````

### Problem 6. Subsort

``````[0, 1, 15, 25, 6, 7, 30, 40, 50] => [2, 5]
[10, 12, 20, 30, 25, 40, 32, 31, 35, 50, 60] => [3, 8]
[1, 2, 4, 7, 10, 11, 7, 12, 6, 7, 16, 18, 19] => [3, 9]
[1, 2, 4, 7, 10, 11, 8, 12, 5, 6, 16, 18, 19] => [3, 9]
[1, 2, 4, 7, 10, 17, 8, 11, 6, 9, 13, 18, 19] => [3, 10]
[1, 3, 4, 6, 10, 6, 16, 12, 13, 15, 16, 19, 20, 22, 25] => [4, 9]
[0, 1, 15, 25, 6, -1, 7, 30, 40, 50] => [0, 6]
[1, 3, 2] => [1, 2]
[2, 1, 3] => [0, 1]
[2, 1, 3, 4] => [0, 1]
[3, 2, 1, 4] => [0, 2]
[3, 1, 2, 4] => [0, 2]
[3, 2, 1, 4] => [0, 2]
[1, 3, 2, 4] => [1, 2]
[1, 2, 4, 3] => [2, 3]
[1, 3, 4, 2] => [1, 3]
[3, 2, 4, 1] => [0, 3]
``````

### Problem 7. Word Break

``````'applepie', ['apple','pie'] => ['apple pie']
'peanutbutter', ['pea','nut','peanut','but','butt','butter'] => ['pea nut butter', 'peanut butter']
'windowsteamblog', ['window','windows','steam','team','blog'] => ['window steam blog', 'windows team blog']
'catsanddog', ['cat','at','cats','a','an','and','sand','dog'] => ['cat sand dog', 'cats and dog']
'intowords', ['in','to','into'], []
``````

### Problem 8. Stack of Boxes

``````# Let the 2nd dimension be the height.
[[3, 4, 1], [8, 6, 2], [7, 8, 3]] => 8 + 4
[[6, 4, 4], [8, 6, 2], [5, 3, 3], [7, 8, 3], [4, 2, 2], [9, 7, 3]] => 7 + 6
[[6, 4, 4], [8, 6, 2], [5, 3, 3], [7, 8, 3], [4, 2, 2], [9, 7, 3], [7, 5, 1]] => 7 + 6 + 5
``````

### Problem 9. Missing Two

``````N = 2, arr = [] => 1, 2
N = 3, arr = [1] => 2, 3
N = 4, arr = [4, 2] => 1, 3
N = 5, arr = [2, 1, 4] => 3, 5
N = 9, arr = [9, 5, 4, 6, 3, 7, 8] => 1, 2
N = 9, arr = [4, 5, 7, 3, 6, 2, 8] => 1, 9
N = 9, arr = [6, 8, 7, 1, 4, 3, 9] => 2, 5
N = 9, arr = [6, 9, 7, 8, 2, 1, 5] => 3, 4
N = 9, arr = [2, 8, 7, 6, 1, 3, 5] => 4, 9
N = 9, arr = [8, 3, 7, 1, 2, 9, 4] => 5, 6
N = 9, arr = [3, 1, 2, 5, 4, 8, 9] => 6, 7
N = 9, arr = [1, 3, 4, 8, 6, 5, 2] => 7, 9
N = 9, arr = [5, 6, 1, 2, 3, 7, 4] => 8, 9
``````