このチャレンジは、私がプレイしたパズルに触発されました。

これらは、次のように3Dキューブに組み立てる必要があります。

パズルのピースは5 * 5の正方形のグリッドとして見ることができ、その中央の3 * 3の正方形は常に塗りつぶされていますが、端にある16の正方形は塗りつぶされていても空でもかまいません。
ピースは、左端から時計回りにエッジの構成(=空、=ソリッド)を表す16文字(0sおよび1s)の文字列を使用して説明されます。01
たとえば、次の文字列:
0101001000101101
この作品を表します:
# #
####
####
####
# #
ピースを合わせてキューブを形成するために、すべてのピースを任意の方向に回転させることができます。たとえば、これらは上記のピースの有効な回転です。
# # # # # ## #
#### #### #### ####
#### #### #### ####
#### #### #### ####
# # # # ## # #
# # # # # ## #
#### #### #### ####
#### #### #### ####
#### #### #### ####
# # # # # # ##
チャレンジ
6つのパズルのピースを入力として受け取り、解決されたキューブの2D表現を出力または出力するプログラムまたは関数を記述します。
入力
入力は6行の文字列で、各行は16 0または1文字で構成され、ピースのエッジを表します(上記の形式)。
入力に対する解決策があると想定できます。
末尾の改行はオプションです。
出力
結果は、次のように2Dで展開された、解決されたキューブのASCII表現になります(図では、サイド名にルービックキューブ表記を使用しています)。
+---+
|BA |
|CK |
| |
+---+---+---+---+
|LE |DO |RI |UP |
|FT |WN |GHT| |
| | | | |
+---+---+---+---+
|FR |
|ONT|
| |
+---+
ソリューションを複数の方法で提示する可能性を回避するために、DOWNに配置されたピースは常に、そこに指定されているのと同じ回転で、入力に存在する最初のピースになります。
すべてのピースは、空の正方形を示すスペースを使用して、5 * 5のマトリックスとしてグラフィカルに表されます。塗りつぶされた正方形の場合は、次の条件を満たす限り、スペース以外の文字を使用できます。
- パズルのどの部分も、同じ文字を使用して表された塗りつぶされた正方形を持ちます
- 隣接する2つの部分が異なる文字を使用している
右側のスペースパディングと末尾の改行はオプションです。
テストケース
1。
入力:
0010010101010101
0010001011011010
0101001001010010
0010110100101101
0010110110101101
0010001011010101
出力:
@ @
@@@
@@@@@
@@@
** **@#@** *# #
***#####***#####
*****###*****###
***#####***#####
* @#@#** ** # #
@@@@
@@@@
@@@@
@ @
2。
入力:
0001110110101101
1010010111011101
0101010101010010
1010001000100011
1010001001010001
0110010100100010
出力:
@
@@@@
@@@@
@@@@
** **@@## * *# #
****#####****###
****###*****####
****#####***####
** *#@#@# * # #
@@@@
@@@@
@@@@
@ @
3。
入力:
0101001011011010
0010001000100010
0101001011010010
0101010101011010
0101101001011101
1010001001011101
出力:
@ @@
@@@@@
@@@
@@@@@
* * @#@#* * #
*****###*****###
***#####***#####
*****###*****###
* ##@##* * #
@@@@
@@@@
@@@@
@@ @@
これはコードゴルフなので、バイト単位で最も短いプログラムが優先されます。