escriba una función para calcular la cantidad de milisegundos necesarios para escribir un número con un dedo en javaScript
Estoy tratando de resolver esta pregunta, pero no tengo idea de cómo puedo resolver este problema.
si entiendo bien los comentarios aqui esta la respuesta
function calcTime (digits, num ){ const digits_arr = Array.from(digits); let last_index = 0, new_index, time =0; for (const n of num) { new_index =digits_arr.findIndex(x => x===n); time += Math.abs(new_index - last_index); last_index = new_index; } return time; }ejemplo: Entrada: dígitos = "0123456789", num = "201" Salida: 4
Amigo, supongo que no tuviste mucho tiempo para explicar lo que estabas tratando de resolver. Pero de todos modos me encontré con esta publicación porque estaba tratando de entender cómo comenzar a resolver el problema que encontré y gracias a @AbdelazizAlsabagh finalmente entendí el truco con los índices. Estoy publicando el problema completo para resolver (pero aún no he probado la solución, lo actualizaré más tarde):
Un teclado de solo dígitos contiene los 10 dígitos del 0 al 9. Todos existen en una línea. Proporcione una cadena de 10 dígitos que ilustre cómo se colocan las teclas. Para escribir un dígito, comience desde el índice cero hasta el índice del dígito de destino. Se necesita |a - b| milisegundos para pasar del índice a al índice b.
Escribe una función para calcular la cantidad de milisegundos necesarios para escribir un número con un dedo.
Entrada : dígitos = '0123456789', número = '210
Salida : 4
Entrada : dígitos = '8459761203', número = '5439'
Salida : 17
Restricciones:
def number_gen_idx(digits: str, nums: str) -> str: """ >>> number_gen_idx('0123456789', '210') 4 >>> number_gen_idx('8459761203', '5439') 17 """ digits_idx = defaultdict(int) for idx, digit in enumerate(digits): digits_idx[digit] = idx curr_ptr = 0 result = 0 for digit in nums: result += abs((digits_idx[digit] - curr_ptr)) curr_ptr = digits_idx[digit] return result