Los números de Fermat son enteros positivos que se pueden expresar como 2 2 x +1 con un entero x.
Ahora definamos un atributo de un número llamado "Fermat-ness":
- La Fermatness del número es uno menos que la longitud de la cadena de poderes de dos, comenzando desde la base, con poderes de dos expandidos para maximizar la Fermatness.
- Un número que no es un número de Fermat tiene la Fermat-ness de cero.
Entonces, 17 (= 2 2 2 2 0 +1) tiene Fermat-ness tres.
Desafío
Dado un entero positivo distinto de cero como entrada, genera la Fermatness del número.
Reglas
- Puede tomar la entrada en binario, decimal, hexadecimal, como bignum, o cualquier formato que le permita jugar mejor al golf.
- Su solución debe poder procesar números con longitudes de bits superiores a 64, independientemente de la representación que utilice.
- Potencias enteras no negativas solamente.
- Las lagunas estándar están, por supuesto, prohibidas.
- Este es el código de golf , por lo que gana la respuesta más corta.
Casos de prueba
Estos están en formato input->output
. La entrada está en hexadecimal para ahorrar espacio.
10000000000000000000000000000000000000000000000000000000000000001 -> 2
1000000000000BC00000000000000000000000000000000001000000000000001 ->0
1234567890ABCDEF -> 0
100000000000000000000000000000001 -> 1
5 -> 2
11 -> 3
10001 -> 4
101 -> 1
Lo mismo en decimal:
115792089237316195423570985008687907853269984665640564039457584007913129639937 -> 2
115792089237316497527923305698859709742143344804209838213621568094470773145601 -> 0
1311768467294899695 -> 0
340282366920938463463374607431768211457 -> 1
5 ->2
17 -> 3
65537 -> 4
257 -> 1
Gracias a geokavel por su valiosa aportación en el sandbox.