ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ.

Σχετικά έγγραφα
ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

ΕΝΟΤΗΤΑ 5 ΚΕΦΑΛΑΙΟ 25. Δεκαδικά Κλάσματα - Δεκαδικοί Αριθμοί ΟΛΑ ΟΣΑ ΠΡΕΠΕΙ ΝΑ ΞΕΡΕΙΣ ΓΙΑ ΤΟ ΜΑΘΗΜΑ

αντίστοιχο γεγονός. Όταν όντως το κουμπί

ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

Μαθήματα Scratch -Δραστηριότητα 1 Παλέτα Κίνηση

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

Αγώνες αυτοκινήτου Παιχνίδι για 2 παίκτες

Τι θα απαντούσατε αλήθεια στην ίδια ερώτηση για την περίπτωση της επόμενης εικόνας;

ΣΕΤ ΑΣΚΗΣΕΩΝ 3. Προθεσµία: Πέµπτη 17/12/2015, 22:00


ΘΕΜΑΤΑ ΤΕΛΙΚΗΣ ΦΑΣΗΣ

Αριστείδης Παλιούρας Ανακαλύψτε το Scratch 2

Επίλυση Προβλημάτων με Χρωματισμό. Αλέξανδρος Γ. Συγκελάκης

ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΙΩΝ. ΕΝΟΤΗΤΑ 1: Κεφάλαιο 6. 1η Άσκηση. Εκπαιδευτικός Οργανισμός Ν. Ξυδάς 1. Πως θα σκεφτώ για να λύσω την άσκηση;

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

1. ΠΕΡΙΓΡΑΦΗ ΚΑΙ ΑΝΑΛΥΣΗ ΦΥΛΛΩΝ ΕΡΓΑΣΙΑΣ (Ή ΚΑΙ ΑΛΛΟΥ ΔΙΔΑΚΤΙΚΟΥ ΥΛΙΚΟΥ) ΑΞΙΟΛΟΓΗΣΗ ΤΩΝ ΜΑΘΗΤΩΝ

Θέµατα Καγκουρό 2007 Επίπεδο: 2 (για µαθητές της Ε' και ΣΤ' τάξης ηµοτικού)

Μάθημα 1: Εισαγωγή. Κάνε κλικ την εντολή "κινήσου" και με το ποντίκι πατημένο μετέφερε τη στη περιοχή σεναρίων.

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

Από τι αποτελούνται; 4 όροι. Θεωρία. Κλάσμα ονομάζω τον αριθμό που φανερώνει. Κλάσματα ομώνυμα και ετερώνυμα. Μαθηματικά. Όνομα:

, για κάθε n N. και P είναι αριθμήσιμα.

Παλέτα Κίνηση. Καλό είναι πριν ξεκινήσετε το παρακάτω φυλλάδιο να έχετε παρακολουθήσει τα παρακάτω δύο videos: a) Εισαγωγή στο περιβάλλον του Scratch

ΓΕΩΜΕΤΡΙΑ. Θέματα: - Έννοιες χώρου και καρτεσιανές συντεταγμένες - ισδιάστατη γεωμετρία - Γωνίες - Στερεομετρία - Συμμετρία/ μετασχηματισμοί

ΙΔΕΟΚΑΤΑΣΚΕΥΕΣ: ΣΚΕΦΤΟΜΑΙ ΚΑΙ ΓΡΑΦΩ

ΜΑΘΗΜΑ 5: ΑΝΑΚΛΑΣΗ (συνέχεια)

Ταυτότητα εκπαιδευτικού σεναρίου

Κεφάλαιο 1: Κίνηση και γεωμετρικά σχήματα

Chess Academy Free Lessons Ακαδημία Σκάκι Δωρεάν Μαθήματα. Οι κινήσεις των κομματιών Σκοπός της παρτίδας, το Ματ Πατ Επιμέλεια: Γιάννης Κατσίρης

ΔΙΑΓΩΝΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 2008

Συνδυαστική Απαρίθμηση

Θέµατα Καγκουρό 2007 Επίπεδο: 4 (για µαθητές της Γ' τάξης Γυµνασίου και Α' τάξης Λυκείου)

ΠΑΡΑΡΤΗΜΑ IV. ΔΙΔΑΚΤΙΚΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΡΑΡΤΗΜΑ IV Ασκήσεις για το Robolab

Ένα σοβαρότερο δίκτυο θα αποτελείται από τρεις ή περισσότερους υπολογιστές και ένα hub.

Πληρουορική Γ Γσμμασίοσ

Συνδυαστική Απαρίθμηση

1.1. Κινηματική Ομάδα Δ.

Πώς να λύσετε τον κύβο του Rubik

Α. Θα καλεί υποπρόγραμμα INPUT που θα διαβάζει τις τιμές του πίνακα MAP.

ΚΑΤΑΣΚΕΥΗ ΠΑΡΑΛΛΗΛΟΓΡΑΜΜΩΝ ΜΕ ΧΡΗΣΗ LOGO

Να απαντήσετε τα θέματα 1 και 2 αιτιολογώντας πλήρως τις απαντήσεις σας. Το κάθε θέμα είναι 10 μονάδες.

Συνδυαστική Απαρίθμηση

Διατάξεις με επανάληψη: Με πόσους τρόπους μπορώ να διατάξω r από n αντικείμενα όταν επιτρέπονται επαναληπτικές εμφανίσεις των αντικειμένων; Στην αρχή

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

Λειτουργικό σύστημα Unix

Συνδυαστική Απαρίθμηση

Προγραμματισμός I (Θ)

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Chess Academy Free Lessons Ακαδημία Σκάκι Δωρεάν Μαθήματα. Ματ με δύο βαριά κομμάτια Ματ με Βασίλισσα Επιμέλεια: Γιάννης Κατσίρης

Πάνελ καμβά με ενσωματωμένο κούμπωμα και καμβά για εσωτερική επένδυση

21. ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 4 - ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΜΕ ΤΟ BYOB BYOB. Αλγόριθμος Διαδικασία Παράμετροι

ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΣΕ ΔΙΣΚΕΤΑ ΑΝΤΙΓΡΑΦΗ ΑΡΧΕΙΟΥ ΑΠΟ ΔΙΣΚΕΤΑ. Από τον κατάλογο που εμφανίζεται επιλέγω: Αποστολή προς Δισκέτα (3,5)

Ηλεκτρικό κύκλωµα. Βασική θεωρία

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Τα Εργαστηριακά Προγράμματα. Η δομή Επιλογής στη PASCAL. H δομή Επανάληψης στη PASCAL. Η εντολή επανάληψης for

Περιεχόμενα. Κεφάλαιο 1 Γνωριμία με το Excel...9

Γνωστό: P (M) = 2 M = τρόποι επιλογής υποσυνόλου του M. Π.χ. M = {A, B, C} π. 1. Π.χ.

ΚΕΦΑΛΑΙΟ 2. Φύλλο Εργασίας Καλυπτόμενες ενότητες: 2.4 Κάνοντας τις πρώτες δοκιμές με τη χελώνα

Εισαγωγή στη Ρομποτική και τον Προγραμματισμό με τη χρήση του ρομπότ Thymio & του λογισμικού Aseba

Πώς να χρησιμοποιήσετε το Moodle

Εξέταση Πρώτου Τετραδίου

Φάσμα προπαρασκευή για Α.Ε.Ι. & Τ.Ε.Ι.

Το περιβάλλον προγραμματισμού MicroWorlds Pro

... a b c d. b d a c

Οι θέσεις ενός σημείου στο επίπεδο και στο χώρο Φύλλο εργασίας 1

53 Χρόνια ΦΡΟΝΤΙΣΤΗΡΙΑ ΜΕΣΗΣ ΕΚΠΑΙΔΕΥΣΗΣ Σ Α Β Β Α Ϊ Δ Η Μ Α Ν Ω Λ Α Ρ Α Κ Η

ΒΑΣΙΚΑ ΜΑΘΗΜΑΤΑ ΝΤΟΥΛΑΚΗΣ - ΜΕΝΙΟΥΔΑΚΗΣ ΕΠΑ.Λ ΕΛ. ΒΕΝΙΖΕΛΟΥ

Συνδυαστική Απαρίθμηση

Είδη τριγώνων ως προς τις πλευρές

Παλέτα Κίνηση. Για να μετακινήσουμε ένα αντικείμενο χρησιμοποιούμε την εντολή ΚΙΝΗΣΟΥ

Πρόγραμμα όρασης. Στη συνέχεια θα περιγράψουμε πώς δουλεύει το ρομπότ.

Ερωτηματολόγιο Προγράμματος "Ασφαλώς Κυκλοφορώ" (αρχικό ερωτηματολόγιο) Για μαθητές Β - Γ Δημοτικού

ΔΙΑΓΩΝΙΣΜΑ 1ο Γ Τάξη Ενιαίου Λυκείου Σχολικό Έτος ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΑΝΑΛΗΠΤΙΚΟ ΔΙΑΓΩΝΙΣΜΑ ΣΧΟΛΙΚΟΥ ΕΤΟΥΣ

ΕΞΕΤΑΣΕΙΣ ΠΡΟΣΟΜΟΙΩΣΗΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: 7

Θέμα Α 1. 1 Τα θέματα προέρχονται από Επαναληπτικά Διαγωνίσματα από το "Στέκι των Πληροφορικών" και Π. Τσιωτάκη

ΕΝΟΤΗΤΑ 6 ΜΟΤΙΒΑ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΥ 2, 5 ΚΑΙ 10. Αρ2.7 Ανακαλύπτουν, διατυπώνουν και εφαρμόζουν τα κριτήρια διαιρετότητας του 2, 5 και του 10.

Ποιές εντολές του Scratch πρέπει να ξέρω;

ΣΕΤ ΑΣΚΗΣΕΩΝ 4. Προθεσµία: 8/1/12, 22:00

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ Python. 1η Ομάδα Ασκήσεων

ΟΔΗΓΊΕΣ Μακρυά τα παιδιά από τέτοιες εργασίες!!!!!.

Ενότητα 5: ΜΕΤΑΒΛΗΤΕΣ

κ.λπ. Ισχύει πως x = 100. Οι διαφορετικές λύσεις αυτής της εξίσωσης χωρίς κανένα περιορισμό είναι

1 ος Παγκύπριος Διαγωνισμός Δεξιοτήτων Σκέψης

Βασικές Έννοιες Υπολογιστών

Περιεχόμενα. Κεφάλαιο 1 Γνωριμία με το Excel... 9

turnin Lab2.hs

Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).

Συνδυαστική Απαρίθμηση

Για να κάνεις είσοδο, πληκτρολογείς στη γραμμή διεύθυνσης του ιντερνετικού περιηγητή τη διεύθυνση που οδηγεί στην παρακάτω οθόνη.

ΤΟ ΠΕΡΙΒΑΛΛΟΝ ΤΗΣ. Εργαλειοθήκη Παρουσιάζετε το έργο σας Εκκινείτε τα σενάριά σας Σταματάτε όλα τα σενάρια. Οι 8 ομάδες της Παλέτας εντολών

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

Συνοπτική Μεθοδολογία Ασκήσεων Κεφαλαίου 7. Ασκήσεις στο IP Fragmentation

ΜΑΘΗΜΑΤΙΚΑ MATHEMATICS

ΚΕΦΑΛΑΙΟ 7 ο. Στο εργαστήρι πληροφορικής. Στο κεφάλαιο αυτό, θα προσπαθήσουµε να επιτύχουµε τους εξής στόχους:

ΟΔΗΓΊΕΣ

Προγραμματιζόμενα παιγνίδια τύπου Logo (Bee-Bot ) και μαθηματικές έννοιες (συγκρίσεις και μετρήσεις μήκους )

Θεωρήστε ένα puzzle (παιχνίδι σπαζοκεφαλιάς) με την ακόλουθη αρχική διαμόρφωση : b b b w w w e

Transcript:

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Ι Εαρινό 2019 Άσκηση 1 Καταληκτική ημερομηνία και ώρα ηλεκτρονικής υποβολής: 14/4/2019, 23:59:59 Πολύχρωμη κορδέλα (0.25+0.25 = 0.5 βαθμοί) Τη γάτα μου τη λένε Princess Arjumand. Της αρέσει να παίζει με μια πολύχρωμη κορδέλα. Η κορδέλα έχει μήκος Ν εκατοστά και κάθε εκατοστό της είναι χρωματισμένο με ένα χρώμα από Κ δυνατά χρώματα, αριθμημένα από το 1 έως και το Κ. Στο παραπάνω παράδειγμα, η κορδέλα έχει μήκος Ν=10 εκατοστά και υπάρχουν Κ=3 χρώματα: το κίτρινο (1), το πορτοκαλί (2) και το πράσινο (3). Όπως βλέπετε, κάθε εκατοστό της κορδέλας είναι χρωματισμένο με ένα από αυτά. Η Arjumand έχει καλλιτεχνικές τάσεις και αρνείται να παίξει με την κορδέλα, αν δεν έχει όλα τα χρώματα από το 1 έως και το Κ. Αν όμως η κορδέλα είναι πολύ μακριά, τότε εύκολα μπερδεύεται και η Arjumand εκνευρίζεται. Βοηθήστε με να βρω και να της κόψω το μικρότερο δυνατό κομμάτι της κορδέλας που να περιέχει όλα τα χρώματα! Η άσκηση σας ζητάει να γράψετε δύο προγράμματα (ένα σε C/C++ και ένα σε ML) τα οποία να διαβάζουν το μήκος της κορδέλας, το πλήθος των χρωμάτων και τους κωδικούς των χρωμάτων με τα οποία είναι χρωματισμένο κάθε εκατοστό της κορδέλας, και να βρίσκουν το μήκος του ελάχιστου δυνατού κομματιού της κορδέλας που περιέχει όλα τα χρώματα. Τα στοιχεία εισόδου θα διαβάζονται από ένα αρχείο όπως φαίνεται στα παραδείγματα που ακολουθούν. Η πρώτη γραμμή του αρχείου περιέχει δύο ακέραιους αριθμούς χωρισμένους μεταξύ τους με ένα κενό διάστημα: το μήκος της κορδέλας Ν (1 Ν 1.000.000) και το πλήθος των χρωμάτων Κ (1 Κ 100.000). Η δεύτερη γραμμή περιέχει ακριβώς Ν ακέραιους αριθμούς c i (1 c i K) χωρισμένους μεταξύ τους με ένα κενό διάστημα. Οι αριθμοί αυτοί είναι οι κωδικοί των χρωμάτων με τα οποία είναι χρωματισμένο κάθε εκατοστό της κορδέλας, από τη μία άκρη μέχρι την άλλη. Το πρόγραμμά σας πρέπει να εκτυπώνει μία γραμμή αποτελούμενη από ακριβώς έναν ακέραιο αριθμό: το μήκος του μικρότερου δυνατού κομματιού της κορδέλας που περιέχει όλα τα χρώματα μεταξύ 1 και Κ. Αν δεν υπάρχει τέτοιο κομμάτι (γιατί στην αρχική κορδέλα δεν υπήρχαν όλα τα χρώματα), τότε στην έξοδο πρέπει να γράφεται ο αριθμός 0 (μηδέν). Παρακάτω δίνονται κάποια παραδείγματα σε C/C++ και σε ML. spoiler! Σε C/C++, MLton, ή σε OCaml $./colors c1.txt 4 $./colors c2.txt 10 Σε SML/NJ - colors "c1.txt"; 4 - colors "c2.txt"; 10

$./colors c3.txt 0 - colors "c3.txt"; 0 όπου τα αρχεία με τα δεδομένα εισόδου είναι τα εξής (η εντολή cat είναι εντολή του Unix και δεν έχει καμία συγγένεια με την Arjumand): $ cat c1.txt 10 3 $ cat c3.txt 10 5 1 2 2 5 1 3 1 2 1 3 $ cat c2.txt 10 4 2 1 4 4 4 1 1 1 4 3 Το πρώτο αρχείο εισόδου αντιστοιχεί στην κορδέλα του σχήματος της προηγούμενης σελίδας. Υπάρχουν δύο κομμάτια που περιέχουν όλα τα χρώματα και έχουν μήκος 4: Δεν υπάρχει μικρότερο κομμάτι της κορδέλας που να περιέχει όλα τα χρώματα. Σώσε τη γάτα! (0.25+0.25 = 0.5 βαθμοί) Αφού βαρέθηκε να παίζει με την κορδέλα της, η Arjumand βγήκε βόλτα. Για κακή της τύχη, ο δρόμος την έφερε σε ένα σκοτεινό υπόγειο και, για ακόμα χειρότερη τύχη της, το υπόγειο είναι έτοιμο να πλημμυρίσει. Η Arjumand μισεί το νερό! Δίνεται ένας διδιάστατος χάρτης του υπογείου, αποτελούμενος από N x M τετραγωνάκια (1 Ν, Μ 1000). Κάθε τετραγωνάκι του χάρτη περιέχει ένα από τα εξής σύμβολα: A Η αρχική θέση της Arjumand. W Το τετράγωνο περιέχει ένα σπασμένο σωλήνα νερού.. (τελεία): Το τετράγωνο είναι αρχικά κενό. Χ (εμπόδιο): Σε αυτό το τετράγωνο δεν μπορεί να πάει ούτε η Arjumand ούτε το νερό. Κάθε χρονική στιγμή, το νερό που βγαίνει από τους σπασμένους σωλήνες εξαπλώνεται στα γειτονικά τετράγωνα (αριστερά, δεξιά, πάνω και κάτω), αν αυτά δεν είναι εμπόδια, με αποτέλεσμα ο χάρτης σιγά-σιγά να πλημμυρίζει. Το νερό κινείται με ρυθμό ένα τετράγωνο ανά μονάδα χρόνου. Ευτυχώς για εκείνη, και η Arjumand μπορεί να κινείται στα γειτονικά της τετράγωνα, με ρυθμό επίσης ένα τετράγωνο ανά μονάδα χρόνου. Αυτό που πρέπει να βρείτε είναι: ποια είναι η αργότερη χρονική στιγμή που μπορούμε να σώσουμε την Arjumand, και σε ποιο τετράγωνο του χάρτη θα τη βάλουμε να πάει για να τη σώσουμε. Η απάντηση στη δεύτερη ερώτηση είναι μία συμβολοσειρά η οποία περιγράφει την ακολουθία κινήσεων που θα κάνει η Arjumand ώστε να βρεθεί στο τετράγωνο από το οποίο θα τη σώσουμε. Οι δυνατές κινήσεις παριστάνονται με τα σύμβολα: R L U D Μετακίνηση ένα τετράγωνο δεξιά στο χάρτη. Μετακίνηση ένα τετράγωνο αριστερά στο χάρτη. Μετακίνηση ένα τετράγωνο προς τα πάνω στο χάρτη. Μετακίνηση ένα τετράγωνο προς τα κάτω στο χάρτη. spoiler!

Η άσκηση σας ζητάει να γράψετε δύο προγράμματα (ένα σε C/C++ και ένα σε ML) τα οποία θα απαντούν στα παραπάνω ερωτήματα. Η είσοδος του προγράμματός σας διαβάζεται από ένα αρχείο αποτελούμενο από Ν γραμμές, κάθε μία από τις οποίες περιέχει Μ σύμβολα. Το αρχείο αυτό αναπαριστά το χάρτη. Παρακάτω δίνονται κάποια παραδείγματα σε C/C++ και σε ML. Έστω ότι τα αρχεία με τα δεδομένα εισόδου είναι τα εξής (όπως είπαμε, η εντολή cat είναι εντολή του Unix και από μόνη της δεν συνηθίζει να χρωματίζει χάρτες υπογείων): $ cat a1.txt A...... $ cat a3.txt AX.X... $ cat a2.txt...w...a.xx. $ cat a4.txt WX..XX...W.X..X..XW...X....XX... XXX.WX.....XXX...XXX..XW...A..X.X... Η έξοδος του προγράμματός σας πρέπει να είναι η ακόλουθη. Στην πρώτη γραμμή πρέπει να τυπώνεται η αργότερη χρονική στιγμή κατά την οποία θα πρέπει να σώσουμε την Arjumand. Αν η Arjumand είναι ασφαλής και μπορούμε να τη σώσουμε οποιαδήποτε στιγμή, στην πρώτη γραμμή πρέπει να τυπώνεται η λέξη. Διαφορετικά, η πρώτη γραμμή πρέπει να περιέχει ακριβώς έναν φυσικό αριθμό. Στη δεύτερη γραμμή πρέπει να τυπώνεται η συμβολοσειρά που αντιστοιχεί στην ακολουθία κινήσεων της Arjumand. Αν αυτή η ακολουθία είναι κενή, δηλαδή αν πρόκειται να σώσουμε την Arjumand από το τετράγωνο στο οποίο βρίσκεται, τότε στη δεύτερη γραμμή πρέπει να τυπώνεται η λέξη stay. Αν υπάρχουν πολλές διαφορετικές λύσεις, τότε επιλέγουμε μία ακολουθία κινήσεων που την οδηγεί στο τετράγωνο με τις μικρότερες λεξικογραφικά συντεταγμένες (πρώτα γραμμή και μετά στήλη) και αν υπάρχουν πολλές ακολουθίες κινήσεων που οδηγούν σε αυτό το τετράγωνο, τότε επιλέγουμε τη μικρότερη σε πλήθος κινήσεων και (μεταξύ ισομηκών) τη λεξικογραφικά μικρότερη. Σε C/C++, MLton, ή σε OCaml $./savethecat a1.txt stay $./savethecat a2.txt 5 RDDLL $./savethecat a3.txt 15 DDDRRRURR $./savethecat a4.txt LLUU Σε SML/NJ - savethecat "a1.txt"; stay - savethecat "a2.txt"; 5 RDDLL - savethecat "a3.txt"; 15 DDDRRRURR - savethecat "a4.txt"; LLUU Στο πρώτο παράδειγμα η Arjumand είναι ασφαλής γιατί δεν υπάρχει σπασμένος σωλήνας. Βρίσκεται ήδη στο τετράγωνο με τις ελάχιστες λεξικογραφικά συντεταγμένες (στην πάνω αριστερή

γωνία του χάρτη), άρα δε χρειάζεται να κινηθεί. Ομοίως, στο τέταρτο παράδειγμα είναι επίσης ασφαλής γιατί βρίσκεται σε ένα χώρο του χάρτη που δε θα πλημμυρίσει. Όμως, πρέπει να μετακινηθεί στην πιο πάνω-αριστερά γωνία αυτού του χώρου και για το σκοπό αυτό θα κάνει τις κινήσεις LLUU (θα μπορούσε να βρεθεί εκεί και με τις κινήσεις ULUL αλλά η πρώτη συμβολοσειρά είναι λεξικογραφικά μικρότερη). Για το δεύτερο παράδειγμα, δίνεται παρακάτω ο χάρτης του υπογείου για όλες τις χρονικές στιγμές από την αρχική (t = 0) μέχρι τη σωτηρία της Arjumand (t = 5). Προσέξτε ότι η Arjumand θα μπορούσε να πάει και στο άλλο τετράγωνο που είναι στεγνό τη χρονική στιγμή t = 5, αλλά οι συντεταγμένες εκείνου είναι λεξικογραφικά μεγαλύτερες....w...a.xx...www...axx..wwwww..wxx. XXAX...WWXXW XXWX....A..X WWWXXW XXWX.W.AW..X WWWXXW XXWXWW AWWW.X t = 0 t = 1 t = 2 t = 3 t = 4 t = 5 R D D L L Για το τρίτο (και πιο ενδιαφέρον) παράδειγμα, δίνεται πάλι παρακάτω ο χάρτης του υπογείου για όλες τις χρονικές στιγμές μέχρι τη σωτηρία της Arjumand. AX.X... AXWXXX.. AXX...X...W... A...X....WWW....A..X... WWWWW.....A.X..... WXWXW......AX... W. WXWXWW.. WXWXW....XXA..X. t = 0 t = 1 t = 2 t = 3 t = 4 t = 5 t = 6 t = 7 D D D R R R U R WW WXWXWWW. WXWXWW.. WXWXXX...XX.A.X. WW WXWXWWW. WXWXXX.. WW WXWXXXW. W...X... WW WW..X... WW WXX..AXW WWW.X... WW WXX..AXW WWWWX..W WW WXXW.AXW WWWWX.WW WW WXXWWAXW WWWWXWWW t = 8 t = 9 t = 10 t = 11 t = 12 t = 13 t = 14 t = 15 R R Περαιτέρω οδηγίες για τις ασκήσεις Μπορείτε να δουλέψετε σε ομάδες το πολύ δύο ατόμων, τόσο σε αυτή όσο και στις επόμενες σειρές ασκήσεων. Όμως, έχετε υπ όψη σας ότι, αν δεν περάσετε το μάθημα φέτος, οι βαθμοί των προγραμματιστικών ασκήσεων κρατούνται μόνο για όσους δεν τις έκαναν σε ομάδα αλλά τις έκαναν μόνοι τους. Δεν επιτρέπεται να μοιράζεστε τα προγράμματά σας με συμφοιτητές εκτός της ομάδας σας ή να τα βάλετε σε μέρος που άλλοι μπορούν να τα βρουν (π.χ. σε κάποια σελίδα στο διαδίκτυο, σε ιστοσελίδες συζητήσεων, ). Σε περίπτωση που παρατηρηθούν «περίεργες» ομοιότητες σε προγράμματα, ο βαθμός των εμπλεκόμενων φοιτητών σε όλες τις σειρές ασκήσεων γίνεται αυτόματα μηδέν ανεξάρτητα από το ποια ομάδα... «εμπνεύστηκε» από την άλλη. Μπορείτε να χρησιμοποιήσετε «βοηθητικό» κώδικα (π.χ. κώδικα ταξινόμησης, κάποιο κώδικα που διαχειρίζεται κάποια δομή δεδομένων) που βρήκατε στο διαδίκτυο στα προγράμματά σας, με την προϋπόθεση ότι το πρόγραμμά σας περιέχει σε σχόλια την παραδοχή για την προέλευση αυτού του κώδικα και ένα σύνδεσμο σε αυτόν.

Τα προγράμματα σε C/C++ πρέπει να είναι σε ένα αρχείο και να μπορούν να μεταγλωττιστούν χωρίς warnings με gcc/g++ (version 4.9.2) με εντολές της μορφής, π.χ. gcc std=c99 -Wall Werror -O3 o colors colors.c g++ std=c++11 -Wall Werror -O3 o colors colors.cpp Τα προγράμματα σε ML πρέπει επίσης να είναι σε ένα αρχείο και να δουλεύουν σε SML/NJ v110.76 ή σε MLton 20100608 ή σε Objective Caml version 4.01.0. Το σύστημα ηλεκτρονικής υποβολής σας επιτρέπει να επιλέξετε μεταξύ αυτών των διαλέκτων της ML. Η αποστολή των προγραμμάτων θα γίνει ηλεκτρονικά μέσω του moodle και για να μπορέσετε να τις υποβάλλετε, τα μέλη της ομάδας σας (και οι δύο) θα πρέπει να έχουν ήδη λογαριασμό στο moodle. Θα υπάρξει σχετική ανακοίνωση για την ακριβή διαδικασία υποβολής όταν ανοίξει το σύστημα. Τα προγράμματά σας πρέπει να διαβάζουν την είσοδο όπως αναφέρεται και δεν πρέπει να έχουν κάποιου άλλους είδους έξοδο διότι δεν θα γίνουν δεκτά από το σύστημα στο οποίο θα υποβληθούν.