La barajada del mago
- O(n²) · Muy difícil
- Plan completo
- Python
- JavaScript
- listas
- índices
- ciclos
Enunciado
En el teatro del pueblo, el mago Aurelio baraja siempre igual y jura que, si repite la barajada las veces justas, el mazo vuelve solo a su orden. Nadie le cree. Tú vas a contar esas veces.
El mazo tiene las cartas del 1 al n, en orden. Una barajada lo parte en dos mitades iguales, la primera y la segunda, y arma un mazo nuevo tomando una carta de cada mitad por turnos: la primera de la primera mitad, la primera de la segunda, la segunda de la primera, y así.
Escribe una función que reciba n (entero par, 2 o más) y regrese, como entero, cuántas barajadas hacen falta para que vuelva a quedar del 1 al n. La primera barajada ya cuenta, así que nunca regresas 0.
Con 6: [1, 2, 3] y [4, 5, 6] dan [1, 4, 2, 5, 3, 6], luego [1, 5, 4, 3, 2, 6], [1, 3, 5, 2, 4, 6] y [1, 2, 3, 4, 5, 6]. Regresas 4.
Ejemplos
El ejemplo
6 → 4
Cuatro cartas
4 → 2
Ocho cartas
8 → 3
Un mazo completo
52 → 8
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def barajadas(n):
passJavaScript
function barajadas(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(n²)
- La barda de la callecomparaciones · ciclos · listas
- La caravana de los oasisdivisión · ciclos · listas
- La cenefa de Talaveratextos · ciclos · índices
- La concha del caracoltextos · ciclos · índices
- La cuerda de doce nudosciclos · operaciones · listas
- La fila de los pingüinoscondicionales · ciclos · listas