#Πρόγραμμα Εύρεσης Συνολικής Λίστας Αγορών

# Ορισμός συνάρτησης υπολογισμού της ένωσης (union) των στοιχείων
# δύο συνόλων-λιστών. Το αποτέλεσμα είναι σύνολο-λίστα που περιέχει
# κάθε στοιχείο των δύο λιστών, μόνο μία φορά.
# Παράμετροι Εισόδου είναι οι μεταβλητες lista1 και lista2
# που αντιστοιχούν στα δύο σύνολα-λίστες
def enosi_synolon(lista1,lista2):
    # Έλεγχος εάν η λίστα lista1 είναι κενή
    if lista1==[]:
        # Εάν είναι κενή, τότε το apotelesma είναι η λίστα lista2 
        apotelesma=lista2
    else:
        # Εάν δεν είναι κενή, τότε
        #   Εαν το πρώτο στοιχειο της λίστας lista1 (βρίσκεται στη θέση [0])
        #   υπάρχει ως στοιχείο στη λίστα lista2, τότε το αποτέλεσμα
        #   είναι η ένωση των υπόλοιπων στοιχείων της λίστας lista1
        #   ([1:] από τη θέση 1 έως το τέλος της), με τη λίστα lista2
        if lista1[0] in lista2:
            apotelesma=enosi_synolon(lista1[1:],lista2)
        else:
        #   Εάν το πρώτο στοιχειο της λίστας lista1 δεν υπάρχει ως στοιχείο
        #   στη λίστα lista2, τότε το αποτέλεσμα είναι μια λίστα που προήλθε
        #   από την ένωση δύο λιστών. Η πρώτη είναι μια λίστα που περιέχει
        #   ως μόνο στοιχείο το πρώτο στοιχείο της λίστας lista1.
        #   Η δεύτερη λίστα είναι η λίστα που προέρχεται από την ένωση (union)
        #   των υπόλοιπων στοιχείων της λίστας lista1
        #   ([1:] από τη θέση 1 έως το τέλος της), με τη λίστα lista2
           apotelesma= [lista1[0]] + enosi_synolon(lista1[1:],lista2)
    # Ως τιμή εξόδου επιστρέφεται η τιμή της μεταβλητής apotelesma
    return apotelesma
 
# Εμφάνιση Μηνύματος Καλωσορίσματος
print("Καλώς Ήρθατε στο Πρόγραμμα Εύρεσης Συνολικής Λίστας Αγορών")
print()

# Ορισμός των δύο λιστών αγοράς
shopping_list1=["τυρί","ρύζι","καφέ","γάλα","κρασί"]
shopping_list2=["χυμό","ρύζι","γάλα","ντομάτες","σοκολάτα"]

# Εμφάνιση των δύο λιστών αγοράς
print("Οι λίστες αγορών είναι οι ακόλουθες:")
print()
print("H 1η λίστα αγορών περιέχει:")
print(shopping_list1)
print()
print("H 2η λίστα αγορών περιέχει:")
print(shopping_list2)
print()

# Κλήση αναδρομικής συνάρτησης enosi_synolon για τις δύο λίστες αγορών
total_shopping_list=enosi_synolon(shopping_list1,shopping_list2)

# Εμφάνιση συνολική λίστας αγορών
print("Η συνολική λίστα αγορών περιέχει:")
print(total_shopping_list )

# Εμφάνιση Μηνύματος Τέλους
print()
print("Ευχαριστούμε που χρησιμοποιήσατε το Πρόγραμμα \
Εύρεσης Συνολικής Λίστας Αγορών")  
