Siguin A i B dos vectors, i siguin A1 i A2 una partició arbitrària d’A tal que A és la concatenació d’A1 i A2. La incrustació de B a dins d’A és el vector que tenim un cop hem concatenat A1 amb B i amb A2. Per exemple, si A = [1, 2, 3, 4] i B = [6,7,8], una possible incrustació de B a dins d’A seria [1,2,6,7,8,3,4].
Òbviament, si N = len(A)
llavors podem incrustar B en N + 1 possibles posicions.
Cal dir que els casos extrems consistirien en incrustar
B abans d’A o bé al final d’A.
Siguin A i B dos vectors ordenats d’enters, potser amb repeticions i que poden tenir mides diferents. Diem que A i B són incrustables si la incrustació de B a dins d’A és també un vector ordenat. Per exemple, si tenim que:
A=
||
|
B =
||
|
llavors A i B són incrustables, ja que si incrustem el vector B a la posició 2 del vector A:
1 | 3 | 8 | 9 | 10 | 19 | 24 | 25 | 26 |
es manté ordenat. En canvi, si tenim:
A=
||
|
B =
||
|
A i B no són incrustables, ja que no hi ha cap manera d’incrustar B a dins d’A de manera que ens doni un vector ordenat.
Feu la funció incrustables(A,B)
tal que,
donats un parell de vectors d’enters ordenats A,B
,
retorni True
si i només
si B és incrustable a A.
IMPORTANT: Per a fer aquest problema, tingueu en compte que no cal crear els vectors incrustats.
Observació
Només cal que enviïs el fitxer amb la funció (i les funcions auxiliars que hagis fet)
que et demanem i prou. Aquest fitxer cal que es digui solution.py
.
El fitxer main.py
et pot servir per a fer la teva solució, però no cal que n’enviïs
el contingut ni que el modifiquis.
Si vols provar la teva solució al teu ordinador
caldrà que tinguis tots dos fitxers (main.py
i solution.py
) al mateix directori
i que executis la comanda python3 main.py
.
Entrada
Dos vectors d’enters ordenats A i B.
Sortida
True
si i només si B és incrustable a A.
Input
1 3 25 26 8 9 10 19 24
Output
True
Input
1 3 15 26 5 9 33
Output
False