_Dimitris_ έγραψε: ↑Παρ Ιούλ 24, 2020 4:11 pm
...
Ευχαριστώ για τη βοήθεια, το καταλαβαίνω αυτό όμως δεν με βοηθάει ιδιαίτερα καθώς δεν μπορώ να καταλάβω πώς βγαίνει το 30 στο testcase που μου έδωσες/δώσατε. Δηλαδή γιατί να μην είναι 26 και να είναι 30; Πιστεύεις/Πιστεύετε ότι θα μου αποκαλυφθεί η λύση του προβλήματος αν μου εξηγήσετε τις πράξεις που πρέπει να γίνουν;
Καλησπέρα Δημήτρη παλικάρι, χαιρόμαστε όλοι πολύ την επιμονή σου, συνέχισε έτσι και θα πας μπροστά.
Στο πρόβλημα τώρα: Καταλαβαίνω γιατί δυσκολεύεσαι. Όντως η εκφώνηση δεν είναι ξεκάθαρη για το πώς θα γίνει η ανακατανομή του bandwidth... όμως υπάρχει λόγος για αυτό. Και κρύβεται στην ερώτηση που σου έκανε ο switch, αν παίζει ρόλο το πώς θα ανακατανείμουμε το bandwidth. Όπως καταλαβαίνεις, η απάντηση είναι όχι, δεν παίζει ρόλο, και για αυτό η εκφώνηση δεν ξεκαθαρίζει το πώς θα γίνει η ανακατανομή. Διότι τότε απλά θα ακολουθούσατε οδηγίες, ενώ τώρα υπάρχει δημιουργικότητα. Το ΓΙΑΤΙ δεν παίζει ρόλο όμως το πώς θα ανακατανείμουμε είναι κάτι που θα πρέπει να αποδείξεις εσύ! Είναι ωραία άσκηση, προσπάθησέ την.
Γυρνάω λοιπόν στο ζουμί της υπόθεσης. Δε θα σου πω κάποια λύση (υπάρχουν πολλές και θα το αφήσω πάνω σου). Θα σου πω όμως που έχει λάθος η δική σου λογική, κι ελπίζω ότι αυτό θα σε βοηθήσει να ξεκολλήσεις, και να αλλάξεις ελάχιστα τη λογική σου ώστε να γίνει σωστή.
Λες ότι αρχικά περνάνε τα πρώτα 10 δευτερόλεπτα, και τελειώνει η πρώτη εργασία. Συμφωνώ ως εδώ.
Μετά λες ότι απομένουν (20-10) δευτερόλεπτα για το δεύτερο τασκ. Το πολλαπλασιάζεις με 20, που είναι η αρχική του ταχύτητα. Είναι σημαντικό να καταλάβεις τι είναι το αποτέλεσμα 10*20=200 που παίρνεις. Δεν είναι χρόνος (χρόνος είναι το 10). Δεν είναι ταχύτητα (ταχύτητα είναι το 20). Είναι κάτι άλλο...
Anyway, μετά λες ότι διαιρείς με το 100 (το συνολικό bandwidth), οπότε σε 2 ακόμα δευτερόλεπτα τελειώνει και η δεύτερη εργασία. Συμφωνώ ακόμη μαζί σου, καμμία ασυνέπεια στη λογική σου. Αλλιώς θα το έκανα εγώ βέβαια, αλλά αυτό είναι το όμορφο του προγραμματισμού, μπορείς να κάνεις διάφορα πράγματα και να είναι εξίσου σωστά.
Και τώρα έρχεται το λάθος σου. Μετά λες ότι για το τρίτο τασκ έχουν περάσει ήδη 12 δευτερόλεπτα, άρα του μένουν 18. Εδώ διαφωνούμε. Συμφωνώ ότι πέρασαν 10 δευτερόλεπτα, άρα το 30 έχει πέσει στο 20. Και συμφωνώ ότι πέρασαν άλλα 2 δευτερόλεπτα... αλλά το 20 γιατί πέφτει σε 18; Αφού σε εκείνα τα δύο δευτερόλεπτα έδωσες ΟΛΟ το bandwidth στη δεύτερη εργασία. Άρα εκείνα τα 2 δευτερόλεπτα, η τρίτη εργασία δεν κατέβηκε καθόλου.
Ελπίζω να βοήθησα στον εντοπισμό του σφάλματός σου. Κάνε μια χάρη στον εαυτό σου, κι ακόμα κι αν αλλάξεις τον κώδικα και περάσει τα testcases, μην προχωρήσεις άλλο. Πρώτα να απαντήσεις (στον εαυτό σου) τις δύο ερωτήσεις. Γιατί δεν παίζει ρόλο πώς θα ανακατανείμουμε το bandwidth; Και τι μέγεθος δηλώνει ο πολλαπλασιασμός σου, που δεν είναι ούτε χρόνος ούτε ταχύτητα.
Κάτι ακόμα (άσχετο με το πρόβλημα). Μ' άρεσε πολύ η προσπάθεια που έκανες να μας εξηγήσεις τον κώδικά σου σε φυσική γλώσσα. Αλλά μάλλον δεν κατάφερα εγώ να σου κάνω ξεκάθαρο το τι ζητούσα, κι έτσι θα προσπαθήσω να το πω άλλη μια φορά για να σε βοηθήσω για το μέλλον. Όταν ρωτούσα ΤΙ κάνεις, δεν εννοούσα να περιγράψουμε με φυσική γλώσσα τον ίδιο τον κώδικα, αλλά τη λογική του κώδικα. Για παράδειγμα:
Πρόβλημα: Θέλω να πάω από την Αθήνα στη Θεσσαλονίκη αλλά δε βρίσκω φθηνό αεροπλάνο.
Λύση (το ΤΙ θα κάνω): Θα πάω με αμάξι.
Αυτό είναι που ήθελα να μου γράψεις. Μετά ακολουθεί το ΠΩΣ θα το κάνω (που είναι σαν τον κώδικα) και έχει πολλά βήματα: Θα πάρω τα κλειδιά απ' τη ζακέτα μου, θα πάρω το πορτοφόλι μου, θα κατέβω απ' το σπίτι μου, θα μπω στο αμάξι μου, θα ξεκινήσω να οδηγάω, θα πληρώσω λεφτά στα διόδια, κλπ κλπ κλπ.
Όπως καταλαβαίνεις, αν σαν λύση για το τι θα κάνω για να πάω χωρίς αεροπλάνο, άρχιζα να σου αραδιάζω αυτές τις λεπτομέρειες (το ΠΩΣ) τότε θα μπερδευόσουν. Δε θα ήταν ξεκάθαρη η κεντρική ιδέα, που είναι ότι θα πάρω αμάξι.
Βεβαίως αυτά τα ΤΙ και ΠΩΣ που λέω μπλέκονται πάντα μεταξύ τους σε κάποιο βαθμό. Δεν υπάρχει ένας τρόπος να απαντήσεις ξεκάθαρα τι είναι ΤΙ και τι είναι ΠΩΣ. Αλλά σε γενικές γραμμές, προσπαθούμε να δώσουμε την κεντρική ιδέα χωρίς λεπτομέρειες, γιατί αυτές τείνουν να κρύβουν την κεντρική ιδέα.
Με θαυμασμό για την επιμονή σου!
Βαγγέλης