Hinweis: Dies ist die strahlungshärtende Version meiner vorherigen Herausforderung Pristine Bit Checking . Dies sollte viel schwieriger sein als dieser.
Schreiben Sie ein Programm / eine Funktion, die zwei Ganzzahlen im Bereich von bis einschließlich akzeptiert und zurückgibt, ob die Binärformen der Zahlen genau ein Bit unterschiedlich sind.
Zum Beispiel haben und binäre Formen und , die ein Bit voneinander entfernt sind. In ähnlicher Weise und sind und , so sie wahr zurück.00000001
00000000
010011000
000011000
Allerdings müssen SieCode sein strahlungsgehärtet , so dasswenn jemand etwas in Ihrem Programm gekippt wird, soll es immer noch korrekt funktionieren. Wenn Ihr Programm beispielsweise das Einzelbytea
(01100001
) war, dann alle 8 möglichen geänderten Programme:
á ! A q i e c `
muss noch richtig funktionieren. Stellen Sie sicher, dass Sie nach Bytes ändern (z. B. á
repräsentiert das oben stehende tatsächlich das Byte , nicht das tatsächliche Zwei-Byte-Zeichen ).á
Testfälle:
Mit der Bedeutung der Wahrheit unterscheiden sie sich um ein Bit.
0,1 => Truthy
1,0 => Truthy
152,24 => Truthy
10,10 => Falsey
10,11 => Truthy
11,12 => Falsey
255,0 => Falsey
Regeln:
- Stellen Sie ein Testframework bereit, mit dem überprüft werden kann, ob Ihr Programm ordnungsgemäß strahlungsgehärtet ist, da es viele mögliche Programme gibt (Anzahl der Bytes * 8), oder einen vollständigen Gültigkeitsnachweis.
- Bitte überprüfen Sie , ob Ihr Programm gültig ist, bevor Sie es veröffentlichen.
- Die Ausgabe kann entweder wahr / falsch sein (so oder so ist es in Ordnung) oder als ein eindeutiger Wert für wahr und der Rest als falsch
- Dies kann durch eine der Standardeingabe- / Ausgabemethoden erfolgen
Hier ist ein Hilfsprogramm , mit dem alle Variationen eines eingegebenen Programms erstellt werden können.