Learn Functional Programming by Building a Spreadsheet - Step 46

Tell us what’s happening:

I have been stuck on this step for the last few days please can i get some help on it. I am not sure why it is not working

Your code so far

<!-- file: index.html -->
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link rel="stylesheet" href="./styles.css" />
    <title>Functional Programming Spreadsheet</title>
  </head>
  <body>
    <div id="container">
      <div></div>
    </div>
    <script src="./script.js"></script>
  </body>
</html>
/* file: script.js */

// User Editable Region

const isEven = num => num % 2 === 0;

const sum = nums => nums.reduce((acc, el) => acc + el, 0);

const average = nums => sum(nums) / nums.length;

const median = nums => {
  const sorted = nums.slice().sort((a, b) => a - b);
  const length = sorted.length;
  const middle = Math.floor(length / 2); // Correctly calculate the middle index
  
  return isEven(length)
    ? average([sorted[middle - 1], sorted[middle]]) // For even length, use middle-1 and middle
    : sorted[middle]; // For odd length, use the middle element
}

const spreadsheetFunctions = {
  sum,
  average,
  median
}

const range = (start, end) => Array(end - start + 1).fill(start).map((element, index) => element + index);

const charRange = (start, end) => range(start.charCodeAt(0), end.charCodeAt(0)).map(code => String.fromCharCode(code));

const evalFormula = (x, cells) => {
  const idToText = id => cells.find(cell => cell.id === id).value;
  const rangeRegex = /([A-J])([1-9][0-9]?):([A-J])([1-9][0-9]?)/gi;
  const rangeFromString = (num1, num2) => range(parseInt(num1), parseInt(num2));
  
  const elemValue = num => {
    const inner = character => {
      return idToText(character + num);
    }
    return inner;
  }
  
  const addCharacters = character1 => {
    return character2 => { 
      // Empty function body as required
    }
  }
  
  const match = rangeRegex.exec(x);
  if (match) {
    const [_, startChar, startNum, endChar, endNum] = match;
    const start = startChar + startNum;
    const end = endChar + endNum;
    const values = rangeFromString(startNum, endNum).map(num => elemValue(num)(startChar));
    return spreadsheetFunctions.sum(values); // Example usage
  }
  
  // Handle other formula cases if needed
  return 0; // Default return value
}

window.onload = () => {
  const container = document.getElementById("container");
  
  const createLabel = (name) => {
    const label = document.createElement("div");
    label.className = "label";
    label.textContent = name;
    container.appendChild(label);
  }
  
  const letters = charRange("A", "J");
  letters.forEach(createLabel);
  
  range(1, 99).forEach(number => {
    createLabel(number);
    letters.forEach(letter => {
      const input = document.createElement("input");
      input.type = "text";
      input.id = letter + number;
      input.ariaLabel = letter + number;
      input.onchange = update;
      container.appendChild(input);
    })
  })
}

const update = event => {
  const element = event.target;
  const value = element.value.replace(/\s/g, "");
  if (!value.includes(element.id) && value.startsWith('=')) {
    const formula = value.slice(1);
    const cells = [...document.querySelectorAll("input")];
    const result = evalFormula(formula, cells);
    element.value = result;
  }
}

// User Editable Region

/* file: styles.css */
#container {
  display: grid;
  grid-template-columns: 50px repeat(10, 200px);
  grid-template-rows: repeat(11, 30px);
}

.label {
  background-color: lightgray;
  text-align: center;
  vertical-align: middle;
  line-height: 30px;
}

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36

Challenge Information:

Learn Functional Programming by Building a Spreadsheet - Step 46

This part here is fine, the rest is not.

From this point you need to use the short syntax shown to you of writing an arrow function that takes character2 and has an empty body.

You should never use the word return here (refer to the example. It doesn’t use return anywhere).