1votos

La habitación del pánico en JavaScript

por josejuan hace 6 años

Creo que se puede reducir la serie a una expresión, pero el resto, hace que no sea directo (si es que es posible). Es decir, creo que podría hacerse O(1)

Una serie de habitaciones están conectadas unas con las otras por puertas automáticas que se abren usando tarjetas de seguridad. Unas reglas estipuladas te impiden pasar directamente del principio a fin de forma similar a las Torres de Hanoi.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// hay desbordamiento (en Ceil), pero funciona, luego lo he pasado a C# para comprobar 
 
function Panico(T, H) { 
    var J = function(Q) { 
                if(Q < T) return Q + 1; 
        var k = ~~Math.ceil(Q / (T - 2.0)); 
        var q = (k - 1) * (T - 2) + T - 1; 
                if(q - Q >= T - 2) k -= 1; 
        return Q + (k - 1) * 2 + 1; 
    }; 
    var N = 1; 
    while(H-- > 0) 
        N = J(N); 
    return N; 
function Suma(Tmax, H) { 
    var S = 0; 
    for(var T = 3; T <= Tmax; T++) 
        S += Panico(T, H); 
    return S; 
 
console.log(Suma(40, 30)); 

Comenta la solución

Tienes que identificarte para poder publicar tu comentario.