Napisz program / funkcję, która przyjmuje dwie liczby całkowite z zakresu od do włącznie i zwraca, czy binarne formy liczb są dokładnie o jeden bit inne.
Na przykład i mają formy binarne 00000001
i 00000000
, które są nieco od siebie oddzielone. Podobnie i są 010011000
i 000011000
dlatego zwracają wartość true.
Jednak twój kod musi być nieskazitelny , tak aby jeśli jakiś bit w twoim programie został odwrócony, powinien generować błąd. Na przykład, jeśli twój program był jednobajtowya
(01100001
), to wszystkie 8 możliwych zmodyfikowanych programów:
á ! A q i e c `
musi zgłosić błąd. Upewnij się, że modyfikujesz bajty (np. á
Tam, gdzie faktycznie reprezentuje bajt , a nie rzeczywisty znak dwóch bajtów á
).
Przypadki testowe:
0,1 => Truthy
1,0 => Truthy
152,24 => Truthy
10,10 => Falsey
10,11 => Truthy
11,12 => Falsey
255,0 => Falsey
Zasady:
- Podaj strukturę testową, która może zweryfikować, że twój program jest właściwie nieskazitelny, ponieważ będzie wiele możliwych programów (liczba bajtów * 8), lub też pełny dowód nieskazitelności.
- Należy upewnić się, że program jest prawidłowy, przed wysłaniem go.
- Dane wyjściowe muszą być zgodne z prawdą / falseyem (obie strony są w porządku), albo dwie wyraźne wartości bez błędów
- Błędy mogą dotyczyć środowiska wykonawczego, kompilatora, interpretera itp.
+1
s niż większość moich ostatnich rozwiązań! : \