El tema que vuelve
- O(n²) · Muy difícil
- Plan completo
- Python
- JavaScript
- listas
- ciclos
- índices
Enunciado
En una sinfonía, el tema vuelve más adelante, a veces más agudo o más grave: todas sus notas suben o bajan la misma cantidad, y el oído lo reconoce igual.
Escribe una función que reciba melodia y tema, listas de enteros con la altura de cada nota (el tema trae al menos una; la melodía puede venir vacía). Regresa un entero: el primer índice de melodia donde empiezan tantas notas seguidas como tiene el tema, cada una igual a la nota del tema en su lugar más una misma cantidad d. d puede ser positiva, negativa o 0, que es el tema tal cual. Si no aparece, regresa -1.
Con melodia [4, 9, 11, 13, 2] y tema [1, 3, 5]: desde el índice 0 no, porque el 4 sube 3 y el 9 sube 6. Desde el 1 sí: 9, 11 y 13 son 1, 3 y 5 subidas 8 cada una. La respuesta es 1.
Ejemplos
El del ejemplo
[4, 9, 11, 13, 2], [1, 3, 5] → 1
Tal cual
[7, 5, 3, 8, 6], [3, 8] → 2
Más grave
[10, 20, 5, 3, 7], [15, 13, 17] → 2
Una sola nota
[8, 3], [5] → 0
El tema no cabe
[4, 6], [1, 2, 3] → -1
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def donde_vuelve(melodia, tema):
passJavaScript
function dondeVuelve(melodia, tema) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.