Skip to content

Commit 67d8f00

Browse files
committed
Fix array exercises (middle index)
1 parent aa6306d commit 67d8f00

2 files changed

Lines changed: 34 additions & 18 deletions

File tree

src/exercises/07-arrays-exercises.js

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -244,9 +244,9 @@ Tip: Look up the Math.floor() function.
244244

245245
// console.log('middleIndex tests');
246246
// console.log(middleIndex([1]) === 0);
247-
// console.log(middleIndex([1, 2]) === 1);
247+
// console.log(middleIndex([1, 2]) === 0);
248248
// console.log(middleIndex([1, 2, 3]) === 1);
249-
// console.log(middleIndex([1, 2, 3, 4]) === 2);
249+
// console.log(middleIndex([1, 2, 3, 4]) === 1);
250250
// console.log(middleIndex([1, 2, 3, 4, 5]) === 2);
251251

252252

@@ -258,11 +258,11 @@ process.stdout.write('\n*7·46.\n');
258258

259259
// console.log('middle tests');
260260
// console.log(middle([1]) === 1);
261-
// console.log(middle([1, 2]) === 2);
261+
// console.log(middle([1, 2]) === 1);
262262
// console.log(middle([1, 2, 3]) === 2);
263-
// console.log(middle([1, 2, 3, 4]) === 3);
263+
// console.log(middle([1, 2, 3, 4]) === 2);
264264
// console.log(middle([1, 2, 3, 4, 5]) === 3);
265-
// console.log(middle([1, 2, 3, 4, 5, 6]) === 4);
265+
// console.log(middle([1, 2, 3, 4, 5, 6]) === 3);
266266

267267

268268
// Practice using the slice() method
@@ -376,9 +376,9 @@ The following lines should help you see if your function works correctly.
376376

377377
// console.log('middle3 tests');
378378
// console.log(middle3([1, 2, 3]), '=== [1, 2, 3]');
379-
// console.log(middle3([1, 2, 3, 4]), '=== [2, 3, 4]');
379+
// console.log(middle3([1, 2, 3, 4]), '=== [1, 2, 3]');
380380
// console.log(middle3([1, 2, 3, 4, 5]), '=== [2, 3, 4]');
381-
// console.log(middle3([1, 2, 3, 4, 5, 6]), '=== [3, 4, 5]');
381+
// console.log(middle3([1, 2, 3, 4, 5, 6]), '=== [2, 3, 4]');
382382
// console.log(middle3([1, 2, 3, 4, 5, 6, 7]), '=== [3, 4, 5]');
383383

384384

@@ -391,9 +391,14 @@ The following lines should help you see if your function works correctly.
391391

392392

393393
// console.log('middleN tests');
394-
// console.log(middleN(3, [1, 2, 3, 4, 5]), '=== [2, 3, 4]');
395394
// console.log(middleN(1, [1, 2, 3, 4, 5]), '=== [3]');
396395
// console.log(middleN(1, [1, 2, 3, 4, 5, 6]), '=== [4]');
396+
// console.log(middleN(3, [1, 2, 3]), '=== [1, 2, 3]');
397+
// console.log(middleN(3, [1, 2, 3, 4, 5]), '=== [2, 3, 4]');
398+
// console.log(middleN(2, [1, 2, 3, 4, 5]), '=== [3, 4]');
399+
// console.log(middleN(3, [1, 2, 3, 4, 5, 6, 7]), '=== [3, 4, 5]');
400+
// console.log(middleN(4, [1, 2, 3, 4, 5, 6, 7, 8, 9]), '=== [4, 5, 6, 7]');
401+
// console.log(middleN(4, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), '=== [4, 5, 6, 7]');
397402

398403

399404
// Practice using the sort() method

src/exercises/07-arrays-solutions.js

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -367,13 +367,13 @@ process.stdout.write('\n*7·45.\n');
367367
368368
Tip: Look up the Math.floor() function.
369369
*/
370-
const middleIndex = xs => Math.floor(xs.length / 2);
370+
const middleIndex = xs => Math.floor((xs.length - 1) / 2);
371371

372372
console.log('middleIndex tests');
373373
console.log(middleIndex([1]) === 0);
374-
console.log(middleIndex([1, 2]) === 1);
374+
console.log(middleIndex([1, 2]) === 0);
375375
console.log(middleIndex([1, 2, 3]) === 1);
376-
console.log(middleIndex([1, 2, 3, 4]) === 2);
376+
console.log(middleIndex([1, 2, 3, 4]) === 1);
377377
console.log(middleIndex([1, 2, 3, 4, 5]) === 2);
378378

379379

@@ -388,11 +388,11 @@ const middle = xs => {
388388

389389
console.log('middle tests');
390390
console.log(middle([1]) === 1);
391-
console.log(middle([1, 2]) === 2);
391+
console.log(middle([1, 2]) === 1);
392392
console.log(middle([1, 2, 3]) === 2);
393-
console.log(middle([1, 2, 3, 4]) === 3);
393+
console.log(middle([1, 2, 3, 4]) === 2);
394394
console.log(middle([1, 2, 3, 4, 5]) === 3);
395-
console.log(middle([1, 2, 3, 4, 5, 6]) === 4);
395+
console.log(middle([1, 2, 3, 4, 5, 6]) === 3);
396396

397397

398398
// Practice using the slice() method
@@ -531,9 +531,9 @@ const middle3 = xs => {
531531

532532
console.log('middle3 tests');
533533
console.log(middle3([1, 2, 3]), '=== [1, 2, 3]');
534-
console.log(middle3([1, 2, 3, 4]), '=== [2, 3, 4]');
534+
console.log(middle3([1, 2, 3, 4]), '=== [1, 2, 3]');
535535
console.log(middle3([1, 2, 3, 4, 5]), '=== [2, 3, 4]');
536-
console.log(middle3([1, 2, 3, 4, 5, 6]), '=== [3, 4, 5]');
536+
console.log(middle3([1, 2, 3, 4, 5, 6]), '=== [2, 3, 4]');
537537
console.log(middle3([1, 2, 3, 4, 5, 6, 7]), '=== [3, 4, 5]');
538538

539539

@@ -543,16 +543,27 @@ process.stdout.write('\n*7·551.\n');
543543
544544
The following lines should help you see if your function works correctly.
545545
*/
546+
const isEven = x => x % 2 === 0;
547+
546548
const middleN = (n, xs) => {
547549
const m = middleIndex(xs);
548550
const half = Math.floor(n / 2);
549-
return xs.slice(m - half, m + half + 1);
551+
if (isEven(n)) {
552+
return xs.slice(m - half + 1, m + half + 1);
553+
} else {
554+
return xs.slice(m - half, m + half + 1);
555+
}
550556
};
551557

552558
console.log('middleN tests');
553-
console.log(middleN(3, [1, 2, 3, 4, 5]), '=== [2, 3, 4]');
554559
console.log(middleN(1, [1, 2, 3, 4, 5]), '=== [3]');
555560
console.log(middleN(1, [1, 2, 3, 4, 5, 6]), '=== [4]');
561+
console.log(middleN(3, [1, 2, 3]), '=== [1, 2, 3]');
562+
console.log(middleN(3, [1, 2, 3, 4, 5]), '=== [2, 3, 4]');
563+
console.log(middleN(2, [1, 2, 3, 4, 5]), '=== [3, 4]');
564+
console.log(middleN(3, [1, 2, 3, 4, 5, 6, 7]), '=== [3, 4, 5]');
565+
console.log(middleN(4, [1, 2, 3, 4, 5, 6, 7, 8, 9]), '=== [4, 5, 6, 7]');
566+
console.log(middleN(4, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]), '=== [4, 5, 6, 7]');
556567

557568

558569
// Practice using the sort() method

0 commit comments

Comments
 (0)