📝
marcyannotes
  • Welcome
  • Student Guidelines & Policies
    • Student Handbook
    • AI Policy
    • Academic Calendar
  • Environment Setup
    • Local Environment Setup - Mac
    • Local Environment Setup - Windows
    • GitHub Setup
    • Postgres Setup
  • Fullstack Software Engineering Curriculum
    • Overview
    • How-Tos
      • How To Code at Marcy: Code Style Guide
      • How to Do Short Response and Coding Assignments
      • How to Debug
      • How to PEDAC
      • How to Create Projects with Vite
      • How to Deploy on GitHub Pages
      • How to Deploy on Render
    • Mod 0 - Command Line Interfaces, Git, and GitHub
      • Mod 0 Overview
      • Command Line Interfaces
      • Git & GitHub
      • Git Pulling & Merging
      • Git Branching & PRs
      • Pair Programming: BONUS
    • Mod 1 - JavaScriptFundamentals
      • Mod 1 Overview
      • Intro to Programming
      • Errors
      • Node & Node Modules
      • Variables, Functions & String Methods
      • Control Flow, typeof, and Math
      • Loops
      • Arrays
      • Objects
      • Higher Order Functions: Callbacks
      • Higher Order Functions: Array Methods
      • Regex
    • Mod 2 - HTML, CSS & the DOM
      • Mod 2 Overview
      • HTML
      • CSS
      • Accessibility (a11y)
      • The DOM
      • Events
      • Forms
      • The Box Model and Positioning
      • Flexbox
      • Grid & Media Queries
      • ESModules
      • LocalStorage
    • Mod 3 - Async & APIs
      • Mod 3 Overview
      • Promises
      • Fetch
      • Building a Fetching App
      • Async & Await
    • Mod 4 - Project Week!
      • Project Week Overview
    • Mod 5 - Object-Oriented Programming
      • Mod 5 Overview
      • Intro to OOP, Encapsulation, Factory Functions, and Closure
      • Classes
      • Private & Static
      • Has Many/Belongs To
      • Polymorphism
    • Mod 6 - Data Structures & Algorithms
      • Mod 6 Overview
      • Stacks & Queues
      • Nodes & Linked Lists
      • Singly & Doubly Linked Lists
      • Recursion
      • Trees
    • Mod 7 - React
      • Mod 7 Overview
      • Intro to React
      • Events, State, and Forms
      • Fetching with useEffect
      • Building a Flashcards App
      • React Context
      • Global Context Pattern
      • React Router
    • Mod 8 - Backend
      • Mod 8 Overview
      • Intro to Express
      • Building a Static Web Server with Middleware
      • Securing API Keys with Environment Variables
      • Building a RESTful API with MVC
      • SQL and Databases
      • JOIN (Association) SQL Queries
      • Knex
      • Your First Fullstack App!
      • Migrations & Seeds
      • Schema Design & Normalization
      • Hashing Passwords with Bcrypt
  • Code Challenge Curriculum
    • Unit 0
      • Lecture: Functions in JS
      • CC-00: Functions and Console Logs
      • CC-01: Conditionals
      • CC-02: Conditionals 2
    • Unit 1
      • CC-03: For Loops
      • CC-04: For Loops and Conditionals
      • CC-05: For Loops and Conditionals 2
    • Unit 2
      • CC-06: String Mutations
      • CC-07: Array Iteration
      • CC-08: String Mutation and Array Iteration
      • CC-09: Array Mutations
      • CC-10: Reading Objects
      • CC-11: Objects
      • CC-12: Objects
      • Unit 2 Diagnostic
    • Unit 3
      • Intro to PEDAC (and Algorithms)
      • validTime
      • fizzBuzz (array)
      • digitSumDifference
      • firstNotRepeating
      • compareEvenAndOddSum
      • countVowelConsonants
      • finalHP
      • canMakeTriangle
    • Unit 4
    • Unit 5
    • Unit 6
    • Unit 7
    • Unit 8
    • Sorting
Powered by GitBook
On this page
  1. Code Challenge Curriculum
  2. Unit 3

compareEvenAndOddSum

with Carmen Salas • 2024/11/06

Solution

/*
**Problem**
Given an [int] [array],
  - Take the sum of all [ints] in even indices
  - Take the sum of all [ints] in odd indices
Return 'even','odd', or 'equal', depending on the value of the sums.

**Examples/Edge Cases:** 
[1, 2, 3, 4, 5] -> evenIndexSum(1+3+5 == 9) ?? oddIndexSum(2+4 == 6) -> 9 > 6 -> "even"
[1, 1] -> evenIndexSum(1) ?? oddIndexSum(1) -> 1 === 1 -> "equal"

**Data Structures**
- Arrays
- Number

**Algorithm** 
Iterate through all values
  - if value is even, add to sum
  - if value is odd, subtract from sum
Return 'even' if sum is greater than 0
        'odd' if sum is less than 0
      'equal' if sum is 0.
*/

function solution(numbers) {
    // using a regular for loop
    // we can avoid declaring any external variables
    //   by storing the sum at numbers[0].
    
    // iterate through all the numbers in the array
    // we skip the first element (numbers[0])
    //   since that's going to hold our sum
    for (let i = 1; i < numbers.length; i++) {
        // if even add the current value to sum
        if (i%2 === 0) {
          numbers[0] += numbers[i];
        // if odd subtract the current value from sum
        } else {
          numbers[0] -= numbers[i];
        }
    }
    
    // We can determine 'even', 'odd', or 'equal'
    //   just by looking at our sum.
    
    // we also need to cover an empty array!
    //   since constraints tell us that `0 <= numbers.length <= 1000`
    if (numbers[0] === 0 || numbers.length === 0) { return 'equal'; }
    if (numbers[0] < 0) { return 'odd'; }
    if (numbers[0] > 0) { return 'even'; }
    
  // using array methods
  const sum = numbers.reduce((sum, val, index) => {
    return (index%2 === 0) ? sum + val : sum - val;
  }, 0);
  // we can skip the check we did for `numbers.length === 0`
  //   unlike above since `sum = 0` by default, with our .reduce()
  if (sum === 0) { return 'equal'; }
  if (sum < 0) { return 'odd'; }
  if (sum > 0) { return 'even'; }
}
PreviousfirstNotRepeatingNextcountVowelConsonants

Last updated 7 months ago