Γειά σας. Είμαι ο John Balwit, στη σειρά μαθημάτων για την Πολυπλοκότητα.
Θα μελετήσουμε την εργασία για το σπίτι,
για τη Θεωρία της Πληροφορίας, το μεσαίο επίπεδο.
Μας ζητήθηκε στην Ερώτηση αριθμός 2, να τροποποιήσουμε το μοντέλο SlotMachine.nlogo της NetLogo,
ώστε να συμπεριλάβουμε τις παρακάτω μακροκαταστάσεις: "ακριβώς δύο φρούτα από το ίδιο είδος", "καθόλου λεμόνια"
και "δύο λεμόνια και ένα πορτοκάλι".
Να λοιπόν πώς θα το κάνω:
Πρώτα από όλα θα το αντιγράψω εδώ.
Θα πάρουμε το μενού αυτό
που επιλέγει ποιες καταστάσεις είναι διαθέσιμες, και θα προσθέσουμε αυτές τις καταστάσεις.
Οπότε θα εμφανίσω το μενού αυτό και θα κάνω αυτό. (τυπώνει)
Οπότε τώρα προσθέσαμε την κατάσταση: "ακριβώς δύο φρούτα από το ίδιο είδος".
Τώρα θα πάμε στον κώδικα της NetLogo και θα δούμε πώς δουλεύουν τα άλλα μενού.
Τα βρίσκουμε ακριβώς εδώ. Εδώ είναι ένα που είναι πολύ παρόμοιο
και λέγεται "τουλάχιστον δύο φρούτα από το ίδιο είδος". Αυτό χρησιμοποιεί τις μετρήσεις
του σχήματος από όλες τις "τριάδες" (του "κουλοχέρη")
και μετράει το μήκος (πλάτος) αυτής τις λίστας, αφού έχουμε αφαιρέσει όλες τις διπλές καταγραφές.
Οπότε, απλά για να ξαναθυμηθούμε, ας του ζητήσουμε να δείξει
ποιο είναι αυτό το σχήμα σε όλες τις τριάδες.
Οπότε τροποποιώ απλά το "τουλάχιστον δύο φρούτα από το ίδιο είδος"
ώστε να δείχνει ποιο είναι το σχήμα όλων των τριάδων.
Οπότε θα κοιτάξω εδώ κάτω, στο κέντρο εντολών της NetLogo.
Θα κάνω την επιφάνεια διεπαφής προσωρινά λίγο μικρότερη
ώστε να μπορούμε να δούμε αυτό το κέντρο εντολών.
Ok, τώρα όταν επιλέξω: "τουλάχιστον δύο ίδια φρούτα από το ίδιο είδος",
επανεκκινήσω και τραβήξω το μοχλό,
και βλέπουμε, εδώ κάτω, ότι αυτή είναι η λίστα.
Θα τη σταματήσω τώρα.
Έτσι δείχνει η λίστα. Εντάξει;
Άρα, αυτή η λίστα είναι στην ουσία τρεις στήλες στην ίδια λίστα.
Οπότε, τώρα που θυμόμαστε πώς δείχνει το σχήμα της
μπορούμε να πούμε: ας αντιγράψουμε αυτήν εδώ και ας τη μετονομάσουμε
σε αυτό που είχαμε εδώ, δηλαδή "Ακριβώς δύο φρούτα από το ίδιο είδος".
Θα το επεξεργαστώ αυτό εδώ.
Είναι πάντα μία καλή ιδέα να κόβετε και να επικολλάτε, όταν έχετε την ευκαιρία.
Οπότε θα το "πιάσω"αυτό και θα το αντιγράψω.
Ok.
Και θα το βάλω εδώ, μέσα στον κώδικα.
Εάν ψάχνουμε για ακριβώς δύο φρούτα του ίδιου είδους,
αυτό σημαίνει ότι όταν παίρνουμε αυτή τη λίστα με τα ονόματα των τριών φρούτων,
εάν υπάρχει ένα διπλό όνομα, εάν δηλ. δύο φρούτα είναι ίδια, και
αφαιρέσουμε ένα από τα δύο ίδια,
τότε το μήκος της (πλάτος) θα είναι ακριβώς ίσο με 2.
Οπότε λέμε ότι αυτό ισούται με 2. Ok.
Θα προσπαθήσω τώρα να το φτιάξω, ώστε να μπορούμε να το δούμε.
Νά 'μαστε.
Οπότε το: "ακριβώς δύο φρούτα από το ίδιο είδος" θα επιλέγει εκείνες τις καταστάσεις,
όπου το μήκος (πλάτος) της "κορδέλας" είναι ακριβώς δύο. Ας το δοκιμάσουμε.
Βάζουμε: "ακριβώς δύο από το ίδιο είδος", επανεκκινούμε και τραβάμε το μοχλό...
Δεν φαίνεται να μας βοηθάει και πολύ. Ας το σταματήσουμε.
Ας βάλουμε λίγο κώδικα αποσφαλμάτωσης, ώστε να μπορούμε πραγματικά να δούμε...
Θα βάλω ένα "stop" εδώ, οπότε όπου "χτυπάει", θα το σταματάει.
Έτσι μπορούμε να δούμε σε ποιες θέσεις σταματά. "Ακριβώς δύο από το ίδιο είδος" και ...
ναι.. δύο αχλάδια... δύο αχλάδια.... ξανά δύο αχλάδια... δύο κεράσια...
Φαίνεται να δουλεύει. Ok.
Θα επιστρέψω στον κώδικα και θα αφαιρέσω το "stop" της αποσφαλμάτωσης.
Γυρνώντας πίσω, εδώ, αναζητούμε το : "κανένα λεμόνι" ως την επόμενη πρόκλησή μας.
Θα το κάνω αυτό αντιγραφή και επικόλληση εδώ πάλι.
Το αντιγράφω και αυτό θα λέγεται:
"Κανένα λεμόνι".
Άρα αυτό είναι το "κανένα λεμόνι".
Για αυτό, νομίζω ότι θα χρησιμοποιήσουμε αυτήν την λέξη: "μέλος".
Να ένα που ζητάει τουλάχιστον ένα λεμόνι,
και ρωτάμε αν το "λεμόνι" είναι ένα "μέλος" αυτού. Οπότε βασικά μπορούμε απλά να πούμε:
ότι ισχύει το "κανένα λεμόνι", εάν
δεν πρόκειται για την περίπτωση που το σχήμα "λεμόνι" βρίσκεται μέσα εκεί.
Οπότε αυτη η λέξη λέει: "όχι μέλος;". Αυτή είναι μία δυαδική συνάρτηση, όταν τελειώνει σε ";"
Και ας χρησιμοποιήσουμε πάλι το μικρό μας "stop", ώστε να μπορούμε να το αποσφαλματώσουμε.
Και ας μην ξεχάσουμε να αφαιρέσουμε αυτό
το άλλο τμήμα που είχε αφεθεί εκεί από αποκοπή και επικόλληση.
Άρα, λέμε "όχι μέλος; λεμόνι". Δηλαδή αυτό λέει απλά ότι σε αυτήν τη λίστα
το "λεμόνι" δεν είναι μέλος. Οk; Και θα σταματήσουμε εάν πέσουμε πάνω σε αυτό.
Επιστρέφοντας στην επιφάνεια διεπαφής, τραβάμε το μοχλό,
...κανένα λεμόνι, κανένα λεμόνι.
Οπότε φαίνεται να δουλεύει.
Η επόμενη πρόκληση είναι το: "δύο λεμόνια και ένα πορτοκάλι".
Οπότε θέλω να αντιγράψω αυτό. Θα το προσθέσουμε εδώ σαν έκφραση.
Μετά θα πάμε στον κώδικα της NetLogo και θα βάλουμε αυτήν την έκφραση.
Και θα κάνουμε πάλι αντιγραφή και επικόλληση.
Ωπ, νομίζω ότι δεν αντέγραψα όσο έπρεπε εδώ. Μην το κάνετε αυτό.
Θα πάρουμε όλο αυτό το πράγμα και θα το αντιγράψουμε εδώ.
Αντιγράφουμε την έκφραση.
Ωραία, οπότε τι θα βάλουμε για αυτό εδώ;
Προφανώς, θα θέλουμε να καθορίσουμε εάν υπάρχει ένα πορτοκάλι.
Οπότε θα πούμε :
Απομακρύναμε ένα πορτοκάλι από αυτήν τη λίστα. Εφ' όσον επιτρέπεται μόνο ένα πορτοκάλι,
εάν βγάλουμε ένα πορτοκάλι απο αυτή τη λίστα, το μήκος (πλάτος) της λίστας θα πρέπει νά 'ναι 2.
Άρα, το μήκος (πλάτος) του "βγαλμένου πορτοκαλιού" θα είναι δύο.
Επίσης μπορούμε να πούμε: και αν βγάλουμε τα λεμόνια,
θα περιμέναμε το μήκος (πλάτος) της λίστας να είναι 1.
Σωστά. Έμεινε μόνο ένα πορτοκάλι.
Οk. Οπότε όταν βάλετε αυτά τα δύο μαζί,
αυτό θα μας καθοδηγήσει στο να τα εντοπίσουμε σωστά.
Άρα, ας βγάλουμε τον κώδικα της αποσφαλμάτωσης από το προηγούμενο.
Ας δούμε αν θα το "πιάσει". Θα αφήσουμε αυτό το "stop" εκεί.
Ωραία, τώρα ας το δοκιμάσουμε.
Επανεκκινούμε. Τραβάμε το μοχλό.
Και σταματάει σε ένα πορτοκάλι και δύο λεμόνια.
Το παίζουμε πάλι.
Πορτοκάλι και δύο λεμόνια.
Δύο λεμόνια και πορτοκάλι.
Ωραία, φαίνεται ότι δουλεύει. Ξαναελέγχουμε τον κώδικα στο σημείο αυτό.
Το αφαιρούμε και έχουμε τελειώσει με αυτό το σκέλος του προβλήματος αριθμός δύο.