DEV Community

Cover image for Challenge 3 adventjs midudev - The Naughty Elf
Juneiker
Juneiker

Posted on

Challenge 3 adventjs midudev - The Naughty Elf

Juneiker Castillo

Problem Statement

In Santa's workshop, a naughty elf has been playing around in the gift manufacturing chain, adding or removing an unplanned step.

You have the original sequence of steps in the manufacturing process original and the modified sequence modified that may include an extra step or miss a step.

Your task is to write a function that identifies and returns the first extra step that has been added or removed in the manufacturing chain. If there is no difference between the sequences, return an empty string.

const original = 'abcd'
const modified = 'abcde'
findNaughtyStep(original, modified) // 'e'

const original = 'stepfor'
const modified = 'stepor'
findNaughtyStep(original, modified) // 'f'

const original = 'abcde'
const modified = 'abcde'
findNaughtyStep(original, modified) // ''
Enter fullscreen mode Exit fullscreen mode

Considerations:

  • There will always be one step of difference or none.
  • The modification can occur anywhere in the chain.
  • The original sequence can be empty.

My Solution

function findNaughtyStep(original, modified) {

  if(original === modified){
     return ''
  }

  let differentElementIndex = 0;

  for(let i = 0; original[i] === modified[i]; i++){
    differentElementIndex = i + 1;
  }

  return original.length > modified.length ? original[differentElementIndex] : modified[differentElementIndex];

}
Enter fullscreen mode Exit fullscreen mode
  1. Declare a conditional statement that returns an empty string if the original string is equal to the modified string.
  2. Initialize a variable differentElementIndex to 0, which will store the index where the elements at the same position in both strings are different.
  3. Create a for loop that increments a variable i while original[i] === modified[i] are equal. When they are not equal, assign the value of the current index + 1 to differentElementIndex.
  4. Finally, check if the string named original is longer than the modified string. If true, extract the element at the differentElementIndex obtained previously. Otherwise, if modified is longer, extract the element from the modified string.

Challenge 3 Code

Code Challenge 3

Previous Challenges:

  1. Challenge 1 advent JS 2023
  2. Challenge 2 advent JS 2023

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more