難解なプログラミング言語の悪には、「織り」と呼ばれるバイト値に対する興味深い操作があります。基本的には、バイトの8ビットの順列です(パターンが対称であるため、どちらの端からカウントを開始してもかまいません)。
- ビット0はビット2に移動します
- ビット1はビット0に移動します
- ビット2はビット4に移動します
- ビット3はビット1に移動します
- ビット4はビット6に移動します
- ビット5はビット3に移動します
- ビット6はビット7に移動します
- ビット7はビット5に移動します
便宜上、置換のその他の2つの表現を示します。サイクルとして:
(02467531)
そして、マッピングのペアのリストとして:
[[0,2], [1,0], [2,4], [3,1], [4,6], [5,3], [6,7], [7,5]]
あなたの仕事は、ボックス描画文字を使用して、この順列を視覚化することで─
、│
、┌
、┐
、└
、┘
、┼
(Unicodeコードポイント:U + 2500、U + 2502、U + 250C、U + 2510、U + 2514、U + 2518、U + 253C)。この視覚化は、次の制約を満たす必要があります。
最初と最後の行は正確に次のとおりです。
0 1 2 3 4 5 6 7
それらの間で、ボックス描画文字に合うように、それぞれ最大15文字の行を使用できます(少なくとも4行必要です)。行は、最初の行の1つの数字の下で垂直に始まり、最後の行の対応する数字の上で垂直に終わる必要があります。8本の線を接続する必要があります。また、クロスするのはビアのみです┼
(これは常にクロスであり、2本のラインが接触することはありません)。ラインの正確なパスはあなた次第です(そして、特にゴルフに適したレイアウトを見つけることがこの課題の中心です)。有効な出力は次のとおりです。
0 1 2 3 4 5 6 7
│ │ └─┼┐│ │ └┐│
└─┼─┐ ││└─┼─┐││
┌─┘ │ ││ │ │││
│ ┌─┼─┘│ │ │││
│ │ │ ┌┼──┘ │││
│ │ │ │└┐ ┌─┼┼┘
│ │ │ │ │ │ │└┐
0 1 2 3 4 5 6 7
ただし、正しい数字を正しく接続する他のレイアウトも問題ありません。選択した出力を回答に表示してください。
プログラムまたは関数を記述できますが、入力は受け付けません。ダイアグラムをSTDOUT(または最も近い代替)に出力するか、文字列または文字列のリスト(それぞれが1行を表す)の形式で関数の戻り値として出力します。
標準のコードゴルフ規則が適用されるため、最短のコード(バイト単位)が優先されます。
01234567
入力としての順列を取得し、次にそれを接続するのは01234567
どうですか?自分でリンクを把握する必要があるように?特にゴルフでは、それは非常に難しい課題になります。