注:これは、以前のチャレンジであるPristine Bit Checkingの耐放射線バージョンです。これはそれよりもはるかに難しいはずです。
からの範囲の2つの整数を取り、数値のバイナリ形式が正確に1ビット異なるかどうかを返すプログラム/関数を記述します。
たとえば、とはバイナリ形式の00000001
と00000000
があり、1ビット離れています。同様に、とは010011000
and 000011000
なので、trueを返します。
ただし、コードを耐放射線性にする必要があります。これにより、プログラムのいずれかのビットが反転しても、正しく機能するはずです。たとえば、プログラムが1バイトa
(01100001
)の場合、8つの変更可能なプログラムすべて:
á ! A q i e c `
それでも正しく機能する必要があります。バイト単位で変更していることを確認してください(たとえば、á
上の2バイト文字ではなく、実際にはバイト表しているá
)。
テストケース:
Truthyの意味では、それらは 1ビット異なります。
0,1 => Truthy
1,0 => Truthy
152,24 => Truthy
10,10 => Falsey
10,11 => Truthy
11,12 => Falsey
255,0 => Falsey
ルール:
- 多くの可能なプログラム(バイト数* 8)、または完全な有効性の証明があるため、プログラムが適切に耐放射線性であることを検証できるテストフレームワークを提供します。
- 投稿する前に、プログラムが有効であることを再確認してください。
- 出力は、true / false(どちらの方法でもかまいません)、またはtrueの1つの異なる値として、残りはfalseのいずれかになります。
- これは、標準入出力メソッドのいずれかを介して行うことができます
以下は、入力されたプログラムのすべてのバリエーションを生成するために使用できるヘルパープログラムです。
4
「それよりもはるかに難しいはずです」-これは問題を軽く述べています
—
ジョナ
記録として、空のプログラムを無視すると、これはコードが有効なUTF-8でなければならない言語では不可能です。
—
Ørjanヨハンセン