Nota: Esta es la versión de endurecimiento de la radiación de mi desafío anterior Pristine Bit Checking . Esto debería ser mucho más difícil que ese.
Escriba un programa / función que tome dos enteros en el rango de a 255 inclusive, y devuelva si las formas binarias de los números son exactamente un bit diferentes.
Por ejemplo, y tienen formas binarias 00000001
y 00000000
, que están un poco separadas. Del mismo modo, y son 010011000
y 000011000
, por lo que devuelven verdadero.
Sin embargo , su código debe ser resistente a la radiación , de modo que si se invierte un bit de su programa, aún debería funcionar correctamente. Por ejemplo, si su programa era el byte únicoa
(01100001
), entonces los 8 programas modificados posibles:
á ! A q i e c `
aún debe funcionar correctamente. Asegúrese de que está modificando por bytes (p. Ej. á
, Allí arriba está representando el byte , no el carácter real de dos bytes á
).
Casos de prueba:
Con Truthy significa que son diferentes en un bit.
0,1 => Truthy
1,0 => Truthy
152,24 => Truthy
10,10 => Falsey
10,11 => Truthy
11,12 => Falsey
255,0 => Falsey
Reglas:
- Proporcione un marco de prueba que pueda verificar que su programa se haya endurecido adecuadamente con la radiación, ya que habrá muchos programas posibles (número de bytes * 8) o una prueba completa de validez.
- Por favor asegúrese de que compruebe que su programa es válido antes de publicarlo.
- La salida puede ser verdadero / falso (de cualquier manera está bien), o bien como un valor distinto para verdadero y el resto como falso
- Esto puede ser a través de cualquiera de los métodos de entrada / salida estándar
Aquí hay un programa auxiliar que puede usarse para producir todas las variaciones de un programa ingresado.