木が2つあります。どちらも、まっすぐな体と体の下のいくつかの余分なブロックで構成されています。(0-indexed)位置0,4,7,9,10に余分なブロックがある例:
XXXXXXXXXXX
X X X XX
ピースは、thの位置にブロックがあるかどうかを示すth文字を含む01
バイナリシーケンスとして表すことができます。上の例はとして表すことができます。i
i
10001001011
2番目のピースを垂直にフリップすることで、2つのピースをまとめることができます(水平方向にフリップすることもできます)。フリップの後、2つのピースを合わせて高さ3になるように配置することができます。
Two example pieces:
XXXXXXXXXXX XXXXXXXX
X X X XX XXX
Second piece flipped vertically and horizontally:
XXXXXXXXXXX
X X X XX
XXX
XXXXXXXX
Pieces put together:
XXXXXXXXXXX
XXXXX X XX
XXXXXXXX
この例では、合計幅が12ブロックになりました。
2つの部分を表す入力として2つの文字列を受け取り、最小の達成可能な幅 3の整数を出力するプログラムまたは関数を作成する必要があります。
入力
- 文字からなる二つの文字列
0
と1
。 - 両方の文字列に少なくとも1つの文字が含まれています。
- 1つのスペースで結合された2つの文字列を受け取ることを選択できます。
出力
- 達成可能な最小の合計幅である単一の正の整数。
例
0 0 => 1
1 0 => 1
1 1 => 2
11 111 => 5
010 0110 => 5
0010 111 => 5
00010 11011 => 6
01010 10101 => 5
1001 100001 => 6
1110001100001 1100100101 => 14
001101010000101 100010110000 => 16
0010110111100 001011010101001000000 => 21
0010110111100 001011010101001001100 => 28
100010100100111101 11100101100010100100000001 => 27
0010 10111 => 5
0100 10111 => 5
0010 11101 => 5
0100 11101 => 5
10111 0010 => 5
10111 0100 => 5
11101 0010 => 5
11101 0100 => 5
これはコードゴルフなので、最短のエントリーが勝ちます。