test task (22-05-2024)

by Evgeniy Lukovsky

HTML

<div>
<input id="userInput" type="text"/>
<p id="output">
...placeholder
</p>
</div>

JavaScript

document.addEventListener("readystatechange", () => {
  let processing = (input) => {
    //return 
    let tmp = Object.entries(input.split("").reduce((acc, val) => {
      acc[val] = !!acc[val] ? acc[val] + 1 : 1
      return acc
    }, {}))
    return tmp.filter(([key, value]) => value >= 2).length
  }

  /**
   * @param {number} n
   * @return {number}
   */
  var numDupDigitsAtMostN = function(n) {
    let count = 0,
      chars = ""
    for (let i = 0; i <= n; i++) {
      chars = i.toString()
      if (new Set(chars).size < chars.length) {
        count++
        console.log("ex: ", chars)
      }
    }
    return count
  }


  let inputElements = document.querySelectorAll("#userInput")
  if (inputElements.length === 1) {
    let inputElement = inputElements[0]

    let showOutput = (outputText) => {
      let outputElement = document.querySelector("#output")
      outputElement.innerHTML = outputText
    }
    inputElement.addEventListener('keyup', (e) => {
      return showOutput(numDupDigitsAtMostN(parseInt(e.target.value, 10)))
    })
  }
})