Ci sono due pezzi di legno. Entrambi consistono in un corpo dritto e alcuni blocchi extra sotto il corpo. Un pezzo di esempio con blocchi extra nelle posizioni (indicizzate 0) 0,4,7,9,10:
XXXXXXXXXXX
X X X XX
Il pezzo può essere rappresentato come una 01sequenza binaria con il icarattere th che mostra se c'è un blocco nella iposizione th. L'esempio superiore può essere rappresentato come 10001001011.
Possiamo mettere insieme due pezzi capovolgendo verticalmente il secondo (e magari capovolgendolo anche in orizzontale). Dopo il flip (s) possiamo trovare un allineamento in cui i due pezzi possono essere uniti per avere un'altezza di 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'esempio ha comportato una larghezza totale di 12 blocchi.
Dovresti scrivere un programma o una funzione che riceve due stringhe come input che rappresentano i due pezzi e genera un numero intero la larghezza minima raggiungibile con un'altezza di 3.
Ingresso
- Due stringhe costituite dai caratteri
0e1. - Entrambe le stringhe contengono almeno un carattere.
- Puoi scegliere di ricevere le due stringhe come una unita da un singolo spazio.
Produzione
- Un singolo numero intero positivo, la larghezza totale minima raggiungibile.
Esempi
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
Questo è il codice golf, quindi vince l'ingresso più breve.