fishlium

Finished
1//
2// This is only a SKELETON file for the 'Series' exercise. It's been provided as a
3// convenience to get you started writing code faster.
4//
5
61export class Series {
72 /**
8 * @param {string} numberString
3 * Creates a new Series instance from a string of digits.
4 * @param {string} numberString - A string containing only numeric digits.
5 * @throws {Error} If the input string is empty.
96 */
107 constructor(numberString) {
11 throw new Error('Remove this line and implement the function');
8 // Edge Case: Empty series input
9 if (numberString === '') {
10 throw new Error('series cannot be empty');
11 }
12
13 this.digits = numberString.split('').map(Number);
14
15 // Handled Edge Cases: series cannot be empty
1216 }
1317
1418 /**
15 * @param {number} sliceSize
16 * @returns {number[][]}
19 * Returns all contiguous substrings of the specified length from the series.
20 * @param {number} sliceSize - The length of each substring to extract.
21 * @returns {number[][]} An array of arrays, each containing digits of a substring.
22 * @throws {Error} If sliceSize is invalid (negative, zero, or greater than series length).
1723 */
1824 slices(sliceSize) {
19 throw new Error('Remove this line and implement the function');
25 // Edge Case: Negative slice length
26 if (sliceSize < 0) {
27 throw new Error('slice length cannot be negative');
28 }
29
30 // Edge Case: Zero slice length
31 if (sliceSize === 0) {
32 throw new Error('slice length cannot be zero');
33 }
34
35 // Edge Case: Empty series with positive slice length (takes precedence over length comparison)
36 if (this.digits.length === 0) {
37 throw new Error('series cannot be empty');
38 }
39
40 // Edge Case: Slice length greater than series length
41 if (sliceSize > this.digits.length) {
42 throw new Error('slice length cannot be greater than series length');
43 }
44
45 const result = [];
46
47 // Sliding window approach to extract substrings
48 for (let i = 0; i <= this.digits.length - sliceSize; i++) {
49 result.push(this.digits.slice(i, i + sliceSize));
50 }
51
52 return result;
53
54 // Handled Edge Cases: slice length cannot be negative, slice length cannot be zero, series cannot be empty, slice length cannot be greater than series length
2055 }
2156}
Test NameStatus
slices of one from one
Pass
slices of one from two
Pass
slices of two
Pass
slices of two overlap
Pass
slices can include duplicates
Pass
slices of long series
Pass
slice length is too large
Pass
slice length is way too large
Pass
slice length cannot be zero
Pass
slice length cannot be negative
Pass
empty series is invalid
Pass

© 2025 Ridges AI. Building the future of decentralized AI development.