####ID 37-get-back-in-line #### Άσκηση: #### #### Ν άτομα στέκονται σε μια ουρά αναμονής έξω από μια τράπεζα. Ξαφνικά πιάνει μια απότομη βροχή και σκορπίζουν #### για να μη βραχούν. Μετά από λίγο που σταματάει να βρέχει γυρνάνε πίσω και το πρόβλημά τους είναι πώς να ξαναμπούν #### πίσω στην ίδια σειρά. Στο μεταξύ, από την τρομάρα τους να μη βραχούν το μόνο που θυμάται ο καθένας από αυτούς δεν #### είναι η σειρά του αλλά το ποιος ήταν μπροστά του. #### #### Γράψτε μια συνάρτηση python #### #### back_in_line(NextPerson) #### #### που να παίρνει ως όρισμα τη μη κενή λίστα NextPerson (μήκους N) που στη θέση i έχει το ποιος είναι μπροστά από τον άνθρωπο #### i στην ουρά (υποθέτουμε ότι τα ονόματα των Ν ανθρώπων είναι τα 0, 1, 2, ..., N-1). Αυτός που ήταν πρώτος #### στην ουρά δεν έχει κάποιον άλλο μπροστά του οπότε για αυτόν ειδικά τον άνθρωπο, ας πούμε πως είναι ο k, θα #### ισχύει NextPerson[k] = -1. Για όλους τους άλλους NextPerson[i] είναι ο άνθρωπος που στεκόταν μπροστά στον i. #### #### Η συνάρτηση back_in_line πρέπει να επιστρέφει σε μια λίστα L τη σειρά με την οποία τα άτομα αυτά #### στέκονταν πριν την βροχή, με πρώτο στην L τον τελευταίο της ουράς και τελευταίο στοιχείο της L αυτόν #### που στεκόταν πρώτος στην ουρά (τον k που λέγαμε παραπάνω). #### #### *** Παράδειγμα: *** #### #### Αν NextPerson=[2, 0, 3, -1, 1] τότε η συνάρτηση επιστρέφει L=[4, 1, 0, 2, 3]. #### #### *** Γενικές Οδηγίες: *** #### #### Γράφετε τον κώδικά σας αποκλειστικά ανάμεσα στις γραμμές START και STOP παρακάτω. #### Δεν πρέπει να πειράξετε καθόλου τις υπόλοιπες γραμμές #### #### Για να τρέξετε το πρόγραμμά σας (αποθηκευμένο στο αρχείο user.py) δίνετε την εντολή #### #### python3 user.py #### #### ενώ για να το ελέγξετε με τον tester δίνετε την εντολή #### #### python3 tester.py #### #### φροντίζοντας τα αρχεία user.py και tester.py να είναι στον ίδιο κατάλογο (directory) #### #### ****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ*****ΠΡΟΣΟΧΗ**** #### Μη γράψετε καμιά εντολή εισόδου (input) ή εξόδου (print) #### στον κώδικα που θα βάλετε ανάμεσα στα START και STOP. Αυτά είναι ήδη γραμμένα. #### Αν βάλετε και σεις το πρόγραμμά σας βγαίνει λάθος. #### NextPerson = eval(input("Δώστε τη λίστα ακεραίων αριθμών next (αν έχει μήκος N τότε πρέπει να είναι οι αριθμοί\n0, 1, ..., Ν-1 (εκτός από έναν) συν τον αριθμό -1 σε κάποια σειρά: ")) #### #### Υποθέσεις: #### #### Στο σημείο αυτό ο χρήστης έχει δώσει τη λίστα NextPerson #### #### Απαιτήσεις: #### #### Στο τέλος του προγράμματός σας θα πρέπει #### #### η συνάρτηση back_in_line #### #### να υπολογίζει αυτό που περιγράφεται στην εκφώνηση. #### Μην αλλάξετε ό,τι είναι από τη γραμμή αυτή και πάνω ####START Από δω και κάτω γράφετε το πρόγραμμά σας.---------------------------------------------------------------- def back_in_line(NextPerson): #### ####STOP Μην αλλάξετε ό,τι είναι από τη γραμμή αυτή και κάτω-------------------------------------------------------- print("Η απάντηση είναι {}.".format(back_in_line(NextPerson))) ####