Skip to content

Commit 513282c

Browse files
committed
✨ IN PLACE
1 parent 9505cfd commit 513282c

File tree

6 files changed

+69
-7
lines changed

6 files changed

+69
-7
lines changed

minimum.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,17 +14,15 @@ export function min(...numbers: number[]) {
1414
}
1515

1616
export function minRecursive(...numbers: number[]) {
17-
function finder(current: number, competitor?: number): number {
17+
const finder = (current: number, competitor?: number): number => {
1818
if (!competitor) {
1919
return current;
20-
}
21-
22-
if (competitor < current) {
20+
} else if (competitor < current) {
2321
current = competitor;
2422
}
2523

2624
return finder(current, numbers.pop());
27-
}
25+
};
2826

2927
return finder(Infinity, numbers.pop());
3028
}

readme.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ I will update the test to use std/testing.ts as soon my internet is back.
88

99
## Test Driven Development
1010

11-
I hate test driven development.
11+
I love test driven development.
1212

13-
> Not really, is cool sometimes.
13+
> Not really
1414
1515
The book doesn't talk about testing (Or I don't get to that part yet) but I
1616
implemented tests for every challenge and followed the TDD method.

reversing_array.test.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { reverseArray, reverseArrayInPlace } from "./reversing_array.ts";
2+
import { assert } from "./testing.ts";
3+
4+
Deno.test("[reverseArray]", () => {
5+
const exampleArray = [1, 2, 3, 4, 5];
6+
const inversedArray = reverseArray(exampleArray);
7+
8+
// It returns a new copy
9+
assert(exampleArray !== inversedArray);
10+
11+
const stdReversed = [...exampleArray].reverse();
12+
13+
assert(inversedArray.length === stdReversed.length);
14+
15+
for (let i = 0; i < inversedArray.length; i++) {
16+
assert(inversedArray[i] === stdReversed[i]);
17+
}
18+
});
19+
20+
Deno.test("[reverseArrayInPlace]", () => {
21+
const exampleArray = [1, 2, 3, 4, 5];
22+
const expectedResult = [5, 4, 3, 2, 1];
23+
const result = reverseArrayInPlace(exampleArray);
24+
25+
// It's same because it mutates the same array and then returns it
26+
assert(exampleArray === result);
27+
28+
assert(exampleArray.length === result.length);
29+
30+
for (let i = 0; i < result.length; i++) {
31+
assert(result[i] === expectedResult[i]);
32+
}
33+
});

reversing_array.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
export function reverseArray<T>(array: T[]) {
2+
const result = [];
3+
4+
for (let i = array.length - 1; i >= 0; i--) {
5+
result.push(array[i]);
6+
}
7+
8+
return result;
9+
}
10+
11+
export function reverseArrayInPlace<T>(array: T[]) {
12+
const { length } = array;
13+
const values = [...array];
14+
15+
for (let i = 0; i < length; i++) {
16+
array[i] = values[length - i - 1];
17+
}
18+
19+
return array;
20+
}

sum.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { sum } from "./sum.ts";
2+
import { assert } from "./testing.ts";
3+
4+
Deno.test("[sum]", () => {
5+
const result = sum(1, 10, 23, 46);
6+
const expectedResult = 80;
7+
assert(result === expectedResult);
8+
});

sum.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export function sum(...numbers: number[]) {
2+
return numbers.reduce((previous, current) => (previous += current));
3+
}

0 commit comments

Comments
 (0)