Intersecció de llistes ordenades U39296


Statement
 

pdf   zip   main.py

En aquest problema treballem amb instàncies de la (nostra) classe Llista, no amb llistes de Python.

Volem una operació per obtenir la intersecció de dues llistes ordenades d’enters, sense visitar elements de forma innecessària i sense fer servir estructures auxiliars: una funció interseccio(lst1,lst2).

A la llista retornada, que ha de quedar ordenada, no pot haver elements repetits, encara que sí pot haver elements repetits a lst1 i lst2. És possible que les llistes rebudes continguin els mateixos elements, però, es garanteix que lst1 i lst2 no són àlies de la mateixa llista.

Observació

Totes les llistes són instàncies de Llista, no pas llistes de Python.

Heu de baixar-vos el fitxer code.py (icona de la serp). Aquest fitxer és un programa amb tot el que cal per executar els jocs de prova públics. Només falta, clar, la funció que us demana l’enunciat. Aquest fitxer l’heu de completar amb el codi que falta, i això, tot, és el que heu d’enviar al Jutge com a solució.

Dins el fitxer code.py teniu la classe Llista que hem treballat a les classes de teoria i laboratori. Tot el codi que us cal el teniu dins de code.py.

L’eficiència i la qualitat de la solució es tindran en compte a la correcció manual.

Sample session
>>> # Un cop tingueu una possible solució dins el fitxer 'code.py' podeu fer:
>>> 
>>> from code import *
>>> 
>>> # i ara podeu provar la funció 'intersecció' sobre aquests exemples:
>>> 
>>> l1 = Llista().inserir(2).inserir(3).inserir(4).inserir(7).inserir(9).inserir(11)
>>> l2 = Llista().inserir(1).inserir(5).inserir(6).inserir(8).inserir(10)
>>> l3 = Llista().inserir(2).inserir(3).inserir(4).inserir(7).inserir(9).inserir(11)
>>> l4 = Llista().inserir(2).inserir(2).inserir(2).inserir(8).inserir(11).inserir(11)
>>> l5 = Llista()
>>> 
>>> print("l1 l2 ==>", interseccio(l1,l2))
l1 l2 ==> 
>>> print("l1 l3 ==>", interseccio(l1,l3))
l1 l3 ==> 2 -- 3 -- 4 -- 7 -- 9 -- 11
>>> print("l1 l4 ==>", interseccio(l1,l4))
l1 l4 ==> 2 -- 11
>>> print("l1 l5 ==>", interseccio(l1,l5))
l1 l5 ==> 
>>> 
Information
Author
Unknown - (another) Python version of X87360 (with contributions of Jordi Delgado and José Luis Balcázar)
Language
Catalan
Official solutions
Python
User solutions
Python