####ID 60-atoms-XX #### #### Άσκηση: (δε μετράει στο βαθμό) #### #### Γράψτε μια συνάρτηση #### #### atoms(N, sets) #### #### όπου N είναι ένας φυσικός αριθμός και sets είναι μια λίστα υποσυνόλων του {1, 2, ..., N} #### (κάθε υποσύνολο δίδεται ως μια λίστα φυσικών αριθμών) η οποία επιστρέφει τη λίστα των #### υποσυνόλων του {1, 2, ..., N} που είναι "άτομα" ως προς τα υποσύνολα της λίστας sets. #### #### Ένα υποσύνολο S του {1, 2, ..., N} ονομάζεται άτομο (ως προς τα υποσύνολα της λίστας sets) #### αν #### (α) για κάθε υποσύνολο A της λίστας sets είτε το S είναι υποσύνολο του A είτε είναι ξένο #### προς το A και #### (β) αν είναι μέγιστο με την ιδιότητα (α) (με άλλα λόγια δεν μπορούμε να του #### προσθέσουμε κι άλλο στοιχείο και να εξακολουθεί να ισχύει η (α)). #### #### *** Υπόδειξη *** #### #### Προσπαθείστε πρώτα να καταλάβετε τι σημαίνει το παραπάνω για δύο στοιχεία x και y του ίδιου ατόμου #### σε σχέση με το σε ποια σύνολα της λίστας sets ανήκουν. #### #### *** Παράδειγμα *** #### #### Αν N=7 και sets = [ [1, 2, 3], [2, 3, 4], [1, 6] ] τότε η συνάρτηση επιστρέφει τη λίστα #### #### [ [1], [2, 3], [4], [5, 7], [6] ]. #### #### *** Γενικές Οδηγίες: *** #### #### Γράφετε τον κώδικά σας αποκλειστικά ανάμεσα στις γραμμές START και STOP παρακάτω. #### Δεν πρέπει να πειράξετε καθόλου τις υπόλοιπες γραμμές #### #### Για να τρέξετε το πρόγραμμά σας (αποθηκευμένο στο αρχείο user.py) δίνετε την εντολή #### #### python3 user.py #### #### ενώ για να το ελέγξετε με τον tester δίνετε την εντολή #### #### python3 tester.py #### #### φροντίζοντας τα αρχεία user.py και tester.py να είναι στον ίδιο κατάλογο (directory) #### #### ****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ**** #### Μη γράψετε καμιά εντολή εισόδου (input) ή εξόδου (print) #### στον κώδικα που θα βάλετε ανάμεσα στα START και STOP. Αυτά είναι ήδη γραμμένα. #### Αν βάλετε και σεις το πρόγραμμά σας βγαίνει λάθος. #### N = int(input("Δώστε το φυσικό αριθμό N: ")) #### sets = eval(input("Δώστε τη λίστα υποσυνόλων του {{1, 2, ..., {}}}: ".format(N))) #### #### #### Υποθέσεις: #### #### Στο σημείο αυτό έχει δοθεί ο φυσικός αριθμός N και η λίστα υποσυνόλων sets. #### #### Απαιτήσεις: #### #### Στο τέλος του προγράμματός σας θα πρέπει #### #### η συνάρτηση atoms #### #### να υπολογίζει αυτό που περιγράφεται στην εκφώνηση. #### ####START Από δω και κάτω γράφετε το πρόγραμμά σας.---------------------------------------------------------------- def atoms(N, sets): #### ####STOP Μην αλλάξετε ό,τι είναι από τη γραμμή αυτή και κάτω-------------------------------------------------------- print("Η απάντηση είναι {}".format(atoms(N, sets))) ####