注:この課題の前半は、Martin Enderの前の課題であるVisualize Bit Weavingから来ています。
難解なプログラミング言語の悪には、「織り」と呼ばれるバイト値に対する興味深い操作があります。
基本的には、バイトの8ビットの順列です(パターンが対称であるため、どちらの端からカウントを開始してもかまいません)。
- ビット0はビット2に移動します
- ビット1はビット0に移動します
- ビット2はビット4に移動します
- ビット3はビット1に移動します
- ビット4はビット6に移動します
- ビット5はビット3に移動します
- ビット6はビット7に移動します
- ビット7はビット5に移動します
便宜上、置換のその他の3つの表現を示します。サイクルとして:
(02467531)
マッピングとして:
57361402 -> 76543210 -> 64725031
そして、マッピングのペアのリストとして:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
8
織った後、バイトは本質的にリセットされます。
例えば、数織り10011101
(ある157
ベース10に)を生成します01110110
(これは118
ベース10に)。
入力
唯一存在する256
、すなわち有効な入力は、すべての整数間0
と255
包括的に。これはどのベースでも使用できますが、一貫している必要があり、選択したベースがベース10でない場合は指定する必要があります。
入力をゼロで埋めることはできません。
出力
ビットウィービングの結果を任意のベースで出力する必要がありますが、これもベース10でない場合は一貫性があり、指定する必要があります。
出力をゼロで埋めることができます。