Ritmos sin choque
- O(2ⁿ) · Legendaria
- Plan completo
- Python
- JavaScript
- recursión
- textos
- listas
Enunciado
Nico está aprendiendo batería y quiere probar todos los ritmos que caben en un compás de n pulsos. En cada pulso da un golpe o deja un silencio, pero su maestra le puso una regla: nunca dos golpes seguidos, porque sus manos todavía no son tan rápidas.
Escribe una función que reciba n, un entero de 0 en adelante, y regrese una lista con todos los ritmos que cumplen la regla, sin repetidos. Cada ritmo es un texto de n caracteres: "x" es un golpe y "." es un silencio. La lista va en orden alfabético, en el que el punto va antes que la x. El compás no da la vuelta: un ritmo sí puede empezar y terminar con golpe.
Con n igual a 3 regresa ["...", "..x", ".x.", "x..", "x.x"]: "xx.", ".xx" y "xxx" se quedan fuera porque tienen dos golpes seguidos. Con n igual a 1 regresa [".", "x"]. Con n igual a 0 hay un solo ritmo, el que no tiene pulsos: regresa [""].
Ejemplos
El ejemplo de tres pulsos
3 → ["...", "..x", ".x.", "x..", "x.x"]
Un pulso
1 → [".", "x"]
Cuatro pulsos
4 → ["....", "...x", "..x.", ".x..", ".x.x", "x...", "x..x", "x.x."]
Sin pulsos
0 → [""]
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def ritmos(n):
passJavaScript
function ritmos(n) {
}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(2ⁿ)
- El collar que sale de los dosrecursión · textos · índices
- El grafito de Pompeyarecursión · textos · índices
- El hilo de Ariadnarecursión · listas · ciclos
- El motivo escondidorecursión · textos · índices
- La balanza de dos platosrecursión · listas · operaciones
- La bodega de la cápsularecursión · listas · comparaciones