Skip to content

Commit aff827f

Browse files
committed
♻️ Support steps
1 parent 71cd051 commit aff827f

File tree

3 files changed

+20
-11
lines changed

3 files changed

+20
-11
lines changed

range.test.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
import { range } from "./range.ts";
22
import { assert } from "./testing.ts";
33

4-
Deno.test("[range]", () => {
4+
Deno.test("[range] Main", () => {
55
const result = range(1, 3);
66
const expectedResult = [1, 2, 3];
77

8-
for (let i = 0; i < 3; i++) {
8+
for (let i = 0; i < result.length; i++) {
99
assert(result[i] === expectedResult[i]);
1010
}
11+
});
1112

12-
const resultTwo = range(1, 10, 2);
13-
const expectedResultTwo = [1, 3, 5, 7, 9];
14-
console.log(resultTwo);
13+
Deno.test("[range] Step", () => {
14+
const result = range(1, 10, 2);
15+
const expectedResult = [1, 3, 5, 7, 9];
1516

16-
for (let i = 0; i < 3; i++) {
17-
assert(resultTwo[i] === expectedResultTwo[i]);
17+
for (let i = 0; i < result.length; i++) {
18+
assert(result[i] === expectedResult[i]);
1819
}
1920
});

range.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,17 @@ export function range(start: number, end: number, step = 1): number[] {
77
throw new TypeError("Exepected all parameters to be numbers.");
88
}
99

10-
const length = end - start + 1;
10+
const result: number[] = [];
1111

12-
let counter = 0;
12+
const positiveStep = step >= 1;
1313

14-
return Array.from({ length }, () => (counter += step));
14+
for (
15+
let item = start;
16+
item <= end;
17+
positiveStep ? (item += step) : (item -= step)
18+
) {
19+
result.push(item);
20+
}
21+
22+
return result;
1523
}

testing.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export function assert(
22
condition: unknown,
3-
message = "Codition is false!"
3+
message = "Codition is false!",
44
): asserts condition {
55
if (!condition) {
66
throw new Error(message);

0 commit comments

Comments
 (0)