Saltar al contenido

El tema que vuelve

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):
    pass

JavaScript

function dondeVuelve(melodia, tema) {
}
Resolver este reto

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.

Más retos de O(n²)

Ver todos los retos →