Il y a deux morceaux de bois. Les deux se composent d'un corps droit et de quelques blocs supplémentaires sous le corps. Un exemple de pièce avec des blocs supplémentaires aux positions (indexées 0) 0,4,7,9,10:
XXXXXXXXXXX
X X X XX
Le morceau peut être représenté comme une 01
séquence binaire avec le i
th caractère montrant s'il y a un bloc à la i
th position. L'exemple supérieur peut être représenté par 10001001011
.
Nous pouvons assembler deux morceaux en retournant verticalement le second (et peut-être en le retournant aussi horizontalement). Après le (s) flip (s), nous pouvons trouver un alignement où les deux pièces peuvent être assemblées pour avoir une hauteur de 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
L'exemple a donné une largeur totale de 12 blocs.
Vous devez écrire un programme ou une fonction qui reçoit deux chaînes en entrée représentant les deux pièces et génère un entier de la largeur minimale réalisable avec une hauteur de 3.
Contribution
- Deux chaînes composées des caractères
0
et1
. - Les deux chaînes contiennent au moins un caractère.
- Vous pouvez choisir de recevoir les deux chaînes comme une jointe par un seul espace.
Production
- Un seul entier positif, la largeur totale minimale réalisable.
Exemples
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
C'est le golf de code, donc l'entrée la plus courte gagne.