@@ -367,13 +367,13 @@ process.stdout.write('\n*7·45.\n');
367367
368368Tip: 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
372372console . log ( 'middleIndex tests' ) ;
373373console . log ( middleIndex ( [ 1 ] ) === 0 ) ;
374- console . log ( middleIndex ( [ 1 , 2 ] ) === 1 ) ;
374+ console . log ( middleIndex ( [ 1 , 2 ] ) === 0 ) ;
375375console . log ( middleIndex ( [ 1 , 2 , 3 ] ) === 1 ) ;
376- console . log ( middleIndex ( [ 1 , 2 , 3 , 4 ] ) === 2 ) ;
376+ console . log ( middleIndex ( [ 1 , 2 , 3 , 4 ] ) === 1 ) ;
377377console . log ( middleIndex ( [ 1 , 2 , 3 , 4 , 5 ] ) === 2 ) ;
378378
379379
@@ -388,11 +388,11 @@ const middle = xs => {
388388
389389console . log ( 'middle tests' ) ;
390390console . log ( middle ( [ 1 ] ) === 1 ) ;
391- console . log ( middle ( [ 1 , 2 ] ) === 2 ) ;
391+ console . log ( middle ( [ 1 , 2 ] ) === 1 ) ;
392392console . log ( middle ( [ 1 , 2 , 3 ] ) === 2 ) ;
393- console . log ( middle ( [ 1 , 2 , 3 , 4 ] ) === 3 ) ;
393+ console . log ( middle ( [ 1 , 2 , 3 , 4 ] ) === 2 ) ;
394394console . 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
532532console . log ( 'middle3 tests' ) ;
533533console . 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 ]' ) ;
535535console . 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 ]' ) ;
537537console . 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
544544The following lines should help you see if your function works correctly.
545545*/
546+ const isEven = x => x % 2 === 0 ;
547+
546548const 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
552558console . log ( 'middleN tests' ) ;
553- console . log ( middleN ( 3 , [ 1 , 2 , 3 , 4 , 5 ] ) , '=== [2, 3, 4]' ) ;
554559console . log ( middleN ( 1 , [ 1 , 2 , 3 , 4 , 5 ] ) , '=== [3]' ) ;
555560console . 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