####ID 44-friendship-X #### Άσκηση: (Δε μετράει στο βαθμό bonus.) #### #### Γράψτε μια συνάρτηση σε python #### #### friendship(D, name) #### #### όπου D είναι ένα λεξικό του οποίου τα κλειδιά είναι ονόματα (strings). Η τιμή του κάθε κλειδιού k είναι #### μια λίστα με τα ονόματα όλων των φίλων του k. Η παράμετρος name είναι ένα όνομα (string). #### Η συνάρτηση θα πρέπει να επιστρέφει ένα λεξικό F με κλειδιά όλα τα ονόματα που εμφανίζονται στο D #### (είτε ως κλειδιά είτε ως φίλοι κάποιου), και με τιμή του κάθε κλειδιού την "απόσταση φιλίας" από τον name. #### #### Η απόσταση φιλίας ορίζεται ως εξής: η απόσταση του name από τον εαυτό του είναι 0, η απόσταση των φίλων του name #### από τον name είναι 1, η απόσταση των φίλων των φίλων του name από τον name είναι 2, κλπ. #### Αν κάποιος από τα κλειδιά του F δεν συνδέεται (μέσω ενδιαμέσων) με σχέση φιλίας με τον name τότε πρέπει η τιμή #### να είναι το -1. #### #### Η σχέση φιλίας δεν είναι συμμετρική: υπάρχει περίπτωση ο A να είναι στους φίλους του B αλλά ο B να μην #### είναι στους φίλους του A (όπως στο παράδειγμα D που φαίνεται παρακάτω). #### #### *** Παράδειγμα *** #### #### Για παράδειγμα, αν #### D = {"Mihalis": ["Yannis", "Manolis"], #### "Yannis": ["Mihalis", "Kostas", "Manolis"], #### "Manolis": ["Kostas", "Dimitris"], #### "Kostas": ["Yannis", "Giorgos"], #### "Eleni": ["Mihalis", "Manolis"] #### } #### και name="Mihalis" τότε το αποτέλεσμα είναι το λεξικό #### #### F = { "Mihalis": 0, "Yannis": 1, "Manolis": 1, "Kostas": 2, "Dimitris": 2, "Giorgos": 3, "Eleni": -1} #### #### *** Γενικές Οδηγίες: *** #### #### Γράφετε τον κώδικά σας αποκλειστικά ανάμεσα στις γραμμές START και STOP παρακάτω. #### Δεν πρέπει να πειράξετε καθόλου τις υπόλοιπες γραμμές #### #### Για να τρέξετε το πρόγραμμά σας (αποθηκευμένο στο αρχείο user.py) δίνετε την εντολή #### #### python3 user.py #### #### ενώ για να το ελέγξετε με τον tester δίνετε την εντολή #### #### python3 tester.py #### #### φροντίζοντας τα αρχεία user.py και tester.py να είναι στον ίδιο κατάλογο (directory) #### #### ****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ**** #### Μη γράψετε καμιά εντολή εισόδου (input) ή εξόδου (print) #### στον κώδικα που θα βάλετε ανάμεσα στα START και STOP. Αυτά είναι ήδη γραμμένα. #### Αν βάλετε και σεις το πρόγραμμά σας βγαίνει λάθος. #### D = {"Mihalis": ["Yannis", "Manolis"], #### "Yannis": ["Mihalis", "Kostas", "Manolis"], #### "Manolis": ["Kostas", "Dimitris"], #### "Kostas": ["Yannis", "Giorgos"], #### "Eleni": ["Mihalis", "Manolis"] #### } #### #### print("Το λεξικό είναι το: {}".format(D)) #### name=input("Παρακαλώ δώστε το όνομα: ") #### #### #### Υποθέσεις: #### #### Στο σημείο αυτό έχει οριστεί το λεξικό D, και ο χρήστης έχει επιλέξει το όνομα name. #### #### Απαιτήσεις: #### #### Στο τέλος του προγράμματός σας θα πρέπει #### #### η συνάρτηση friendship #### #### να υπολογίζει αυτό που περιγράφεται στην εκφώνηση. #### Μην αλλάξετε ό,τι είναι από τη γραμμή αυτή και πάνω ####START Από δω και κάτω γράφετε το πρόγραμμά σας.---------------------------------------------------------------- def friendship(D, name): #### ####STOP Μην αλλάξετε ό,τι είναι από τη γραμμή αυτή και κάτω-------------------------------------------------------- print("Η απάντηση είναι {}.".format(friendship(D, name))) ####