ΕΡΓΑΣΙΑ 3. Παίζοντας Sudoku. Ημερομηνία Ανάρτησης: 16/03/2018 Ημερομηνία Παράδοσης: 03/04/2018, 09:00

Σχετικά έγγραφα
Παίζοντας Τόμπολα. Ημερομηνία Ανάρτησης: 16/03/2017 Ημερομηνία Παράδοσης: 30/03/2017, 23:59

ΕΡΓΑΣΙΑ 2. Κατασκευάζοντας Ημερολόγια. Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

ΕΡΓΑΣΙΑ 1 Ημερομηνία Ανάρτησης: 02/02/2017 Ημερομηνία Παράδοσης: 16/02/2017, 09:00 π.μ. Στόχος Ορισμός

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 131: ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ I ΕΡΓΑΣΙΑ 2

ΕΡΓΑΣΙΑ 4 - Αντικειμενοστραφής Υλοποίηση του Συστήματος Κατανομής Θέσεων σε Προγράμματα Σπουδών

ΕΡΓΑΣΙΑ 4. Εκλογικό Σύστημα με Μεταφορά και Συσσώρευση Ψήφων. Ημερομηνία Ανάρτησης: 16/04/2018 Ημερομηνία Παράδοσης: 04/05/2018, 09:00

ΕΡΓΑΣΙΑ 2 - Παίζοντας Blackjack

«Μηχανή Αναζήτησης Αρχείων» Ημερομηνία Παράδοσης: 30/04/2015, 09:00 π.μ.

Τελευταία 4 ψηφία ταυτότητας ΑΣΚ0 ΑΣΚ1 ΑΣΚ2 ΑΣΚ3 ΑΣΚ4 Σχόλια ΑΣΚ3 Σχόλια ΑΣΚ4 - Παραδόθηκε μόνο ένα.txt

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τ Μ Η Μ Α Π Λ Η Ρ Ο Φ Ο Ρ Ι Κ Η Σ

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΑΣΚΗΣΗ 5 Ανάπτυξη Προγράμματος Συμπίεσης/Αποσυμπίεσης Αρχείων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ Τμήμα Πληροφορικής

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ

Θέμα Β. ΓΙΑ γ ΑΠΟ 1 ΜΕΧΡΙ 4. ΓΙΑ δ ΑΠΟ 1 ΜΕΧΡΙ 4. Α[γ,δ] 17 - (γ-1)*4 - δ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗ

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

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

ΠΕΡΙΕΧΟΜΕΝΑ. Μονοδιάστατοι πίνακες Πότε πρέπει να χρησιμοποιούνται πίνακες Πολυδιάστατοι πίνακες Τυπικές επεξεργασίες πινάκων

σας φύλλο τον αριθμό της ερώτησης ακολουθούμενη από το γράμμα Σ (Σωστή) ή το γράμμα Λ (Λάθος).

Οι βασικές λειτουργίες (ή πράξεις) που γίνονται σε μια δομή δεδομένων είναι:

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. Για i από 1 μέχρι Μ Εμφάνισε A[4,i] Τέλος_επανάληψης. (μονάδες 6) ΤΕΛΟΣ 1ης ΑΠΟ 7 ΣΕΛΙΔΕΣ

Οικονοµικό Πανεπιστήµιο Αθηνών. Τµήµα Πληροφορικής. Φθινοπωρινό Εξάµηνο Δοµές Δεδοµένων - Εργασία 2. Διδάσκων: E. Μαρκάκης

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

ΕΡΓΑΣΙΑ 4. Παίζοντας Κρεμάλα. Ημερομηνία Ανάρτησης: 30/03/2017 Ημερομηνία Παράδοσης: 27/04/2017, 23:59

Ενότητα 6: Κατακερματισμός Ασκήσεις και Λύσεις

Φροντιστήρια Επίγνωση Προτεινόμενα Θέματα Πανελλαδικών ΑΕΠΠ 2015

Θέματα ΑΕΠΠ Πανελλήνιες Εξετάσεις 2008

Διαδικασιακός Προγραμματισμός

Συνδυαστική Βελτιστοποίηση Εισαγωγή στον γραμμικό προγραμματισμό (ΓΠ)

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ

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

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΩΝ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ «ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ»

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΡΤΙΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 6 (ΕΞΙ)

ΒΙΒΛΙΑ ΒΙΒΛΙΑ

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

Προγραμματισμός Υπολογιστών & Εφαρμογές Python. Κ.Π. Γιαλούρης

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ Γ ΛΥΚΕΙΟΥ ΗΜΕΡΟΜΗΝΙΑ: 6/04/2014

ΕΠΛ131 Αρχές Προγραμματισμού Ι

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

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

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

ΦΡΟΝΤΙΣΤΗΡΙΟ Μ.Ε. «ΠΕΡΙ ΓΝΩΣΕΩΣ»

ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ231: ομές εδομένων και Αλγόριθμοι

Ακρότατα πίνακα, χωρίς min, max, μόνο με pos

Δομές Δεδομένων. Ενότητα 1 - Εισαγωγή. Χρήστος Γκουμόπουλος. Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων


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

ΥΛΗ ΣΤΟ ΜΑΘΗΜΑ ΤΟΥ ΑΕΠΠ Γ ΛΥΚΕΙΟΥ ΚΑΙ ΠΑΡΑΤΗΡΗΣΕΙΣ!

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΗΜΕΡΗΣΙΟΥ ΓΕΝΙΚΟΥ ΛΥΚΕΙΟΥ ΣΑΒΒΑΤΟ 31 MAΪΟΥ ΑΕΠΠ

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΗ ΑΣΚΗΣΗ 2

Μεθόδων Επίλυσης Προβλημάτων

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

Θεωρία Υπολογισμού και Πολυπλοκότητα Ασυμφραστικές Γλώσσες (2)

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο Κάθε δομή μπορεί να χρησιμοποιηθεί σε οποιοδήποτε πρόβλημα ή εφαρμογή

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ

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

ΔΙΑΓΩΝΙΣΜΑ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

ΑΡΧΗ 2ΗΣ ΣΕΛΙΔΑΣ Γ Α... Β

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

Δομές Δεδομένων. Τι είναι η δομή δεδομένων; Έστω η ακολουθία αριθμών: 8, 10,17,19,22,5,12 Λογικό Επίπεδο. Φυσικό Επίπεδο RAM. Ταξινομημένος.

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

8. Η δημιουργία του εκτελέσιμου προγράμματος γίνεται μόνο όταν το πηγαίο πρόγραμμα δεν περιέχει συντακτικά λάθη.

ΚΕΦ. 3 ο ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

ΕΓΧΕΙΡΙ ΙΟ Ο ΗΓΙΩΝ. Ηλεκτρονική. Υπηρεσία Άντλησης Αποτελέσματος Πιστοποίησης Αναπηρίας

ΘΕΜΑ Α ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

10 Α2. 5 Α3. (ΟΧΙ = 20-4*2^2)) H (X>Ψ ΚΑΙ X > Ψ

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Εισαγωγή στις Αρχές της Επιστήμης των Υπολογιστών

Α2. Να αναφέρετε ονομαστικά τις βασικές λειτουργίες που εκτελεί ένας υπολογιστής (Μονάδες 3)

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΜΑΪΟΣ 2018 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

Θεωρητικό Μέρος. int rec(int n) { int n1, n2; if (n <= 5) then return n; else { n1 = rec(n-5); n2 = rec(n-3); return (n1+n2); } }

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

Παρακάτω προτείνεται μια αλληλουχία ενεργειών την οποία ο χρήστης πρέπει να ακολουθήσει για να αξιοποιήσει τις δυνατότητες της εφαρμογής.

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον. Διάρκεια 3 ώρες. Όνομα... Επώνυμο... Βαθμός...

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

Προγραμματισμός Χειμερινό Εξάμηνο 2014

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

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

Γ ΣΑΞΗ ΓΕΝΙΚΟΤ ΛΤΚΕΙΟΤ ΑΝΑΠΣΤΞΗ ΕΥΑΡΜΟΓΨΝ Ε ΠΡΟΓΡΑΜΜΑΣΙΣΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΨΝΙΜΑ: ΠΙΝΑΚΕ

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

Αναλυτικές ο δηγίες χρήσης

ΤΕΛΟΣ 1ΗΣ ΑΠΟ 5 ΣΕΛΙ ΕΣ

Transcript:

ΕΡΓΑΣΙΑ 3 Παίζοντας Sudoku Ημερομηνία Ανάρτησης: 16/03/2018 Ημερομηνία Παράδοσης: 03/04/2018, 09:00 Εισαγωγή Για την τρίτη εργασία χρειάζεται να κατασκευάσετε ένα πρόγραμμα το οποίο παίζει και λύνει το γνωστό παιχνίδι Sudoku. Ουσιαστικά, το πρόγραμμα θα λαμβάνει τα στοιχεία για κάποιο πίνακα Sudoku (με file redirection από αρχείο κειμένου) θα συμπληρώνει τον πίνακα και θα τον παρουσιάζει. Η συμπλήρωση του πίνακα βασίζεται στον κανόνα του παιχνιδιού ότι ένας πίνακας Sudoku 9 x 9 θα πρέπει να περιλαμβάνει σε κάθε σειρά του, σε κάθε στήλη του και σε κάθε ένα από τα 9 εσωτερικά 3 x 3 τμήματά του (που προκύπτουν από την ομαδοποίηση των σειρών και στηλών του σε τριάδες) τον κάθε ένα από τους αριθμούς {1, 2, 3,.., 9}. Νοείται ότι η αρχική τοποθέτηση αριθμών σε δεδομένες θυρίδες του πίνακα (όπως διαβάζονται στην είσοδο του προγράμματος) δεν μπορεί να αλλάξει. Αυτές θεωρούνται κλειστές, ενώ οι υπόλοιπες θυρίδες είναι ανοικτές. Συνεπώς εδώ έχουμε ένα πρόβλημα ικανοποίησης περιορισμών, όπου δοκιμάζονται επιλογές και απορρίπτονται αυτές για τις οποίες προκύπτει κάποια παραβίαση του πιο πάνω κανόνα, μέχρις ότου να συμπληρωθεί με έγκυρο τρόπο ο δεδομένος πίνακας. Είναι επίσης ένα πρόβλημα αναζήτησης, αφού αναζητούνται έγκυρες τιμές για τις ανοικτές θυρίδες. Τα στοιχεία εισάγονται στο πρόγραμμα από κάποιο αρχείο κειμένου, μέσα σε ένα πίνακα δύο διαστάσεων 9 x 9. Για την κράτηση εναλλακτικών επιλογών για τις διάφορες ανοικτές θυρίδες του πίνακα, προκύπτει η ανάγκη να κρατούμε διάφορους εναλλακτικούς πίνακες, μερικώς συμπληρωμένους ως προς τις ανοικτές θυρίδες τους. Ο σχετικός αλγόριθμος εξηγείται στη συνέχεια. Όπως θα δείτε ο αλγόριθμος αυτός αξιοποιεί ένα πίνακα, τα στοιχεία του οποίου είναι πίνακες 9 x 9, και επομένως είναι ένας τρισδιάστατος πίνακας, αλλά στην ουσία τον χειριζόμαστε ως ένα μονοδιάστατο πίνακα (μια στοίβα όπως θα δούμε) για την αποθήκευση εναλλακτικών (μερικώς ολοκληρωμένων) sudokus. Πριν εξηγηθεί ο εν λόγω αλγόριθμος, παρουσιάζονται κάποια παραδείγματα. Παραδείγματα Παράδειγμα 1 Το πιο κάτω παράδειγμα θεωρείται μέτριας δυσκολίας για τον άνθρωπο. Φυσικά για τον υπολογιστή όλα τα παραδείγματα είναι εξίσου εύκολα, συμπεριλαμβανομένων αυτών που θεωρούνται δύσκολα ή πολύ δύσκολα για τον άνθρωπο, όπως τα υπόλοιπα παραδείγματα που δίνονται. ΕΠΛ131 Εργασία 3. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 1

1 9 7 9 6 5 5 2 6 1 2 9 7 4 4 5 2 6 3 4 7 3 7 5 Το πιο πάνω παράδειγμα αναπαρίσταται σε ένα αρχείο κειμένου, π.χ. το αρχείο sud.txt, ως ακολούθως: 1 0 0 9 0 0 0 0 7 0 9 6 0 5 0 0 0 0 5 0 2 0 0 0 0 6 0 0 0 0 0 0 0 0 1 0 0 2 9 0 0 0 7 4 0 0 4 0 0 0 0 0 0 0 0 5 0 0 0 0 2 0 6 0 0 0 0 3 0 4 7 0 3 0 0 0 0 7 0 0 5 Επομένως, η κάθε ανοικτή (διαθέσιμη για εισαγωγή) θυρίδα αντιπροσωπεύεται με το 0 και η κάθε κλειστή θυρίδα (μη διαθέσιμη για τροποποίηση από το χρήστη) με ένα μονοψήφιο αριθμό από 1 έως 9. Νοείται ότι ο αρχικός, μερικώς συμπληρωμένος πίνακας είναι έγκυρος, δηλαδή το ίδιο ψηφίο, εξαιρουμένου του 0, δεν εμφανίζεται πάνω από μια φορά στη σειρά, ή τη στήλη, ή το τμήμα 3 x 3, που το περιλαμβάνει. Το αποτέλεσμα του προγράμματος για το πιο πάνω παράδειγμα δίνεται πιο κάτω: ΕΠΛ131 Εργασία 3. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 2

$ java PlaySudoku < sud.txt ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ 1 8 3 9 6 4 5 2 7 4 9 6 7 5 2 1 8 3 5 7 2 1 8 3 9 6 4 7 3 5 4 9 8 6 1 2 6 2 9 3 1 5 7 4 8 8 4 1 2 7 6 3 5 9 9 5 7 8 4 1 2 3 6 2 6 8 5 3 9 4 7 1 3 1 4 6 2 7 8 9 5 Παράδειγμα 2 4 9 9 1 2 8 1 4 7 8 1 7 8 1 3 2 5 9 5 8 7 3 6 5 ΕΠΛ131 Εργασία 3. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 3

Αρχείο diffsud.txt 4 0 0 0 0 0 0 0 9 0 9 1 0 0 0 2 8 0 0 0 0 0 1 0 0 0 0 0 4 0 7 0 8 0 1 0 0 0 7 0 0 0 8 0 0 0 1 0 3 0 2 0 5 0 0 0 0 0 9 0 0 0 0 0 5 8 0 0 0 7 3 0 6 0 0 0 0 0 0 0 5 $ java PlaySudoku < diffsud.txt 4 8 5 2 3 6 1 7 9 3 9 1 4 7 5 2 8 6 7 6 2 8 1 9 5 4 3 5 4 9 7 6 8 3 1 2 2 3 7 9 5 1 8 6 4 8 1 6 3 4 2 9 5 7 1 7 4 5 9 3 6 2 8 9 5 8 6 2 4 7 3 1 6 2 3 1 8 7 4 9 5 ΕΠΛ131 Εργασία 3. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 4

Παράδειγμα 3 4 2 9 2 4 6 3 7 4 6 3 8 6 9 8 9 7 5 3 4 1 6 5 7 Αρχείο verydiffsud.txt 0 0 0 4 0 2 0 0 0 9 0 0 0 0 0 0 0 2 0 0 4 0 6 0 3 0 0 0 7 0 0 4 0 0 6 0 0 0 3 8 0 6 9 0 0 0 8 0 0 9 0 0 7 0 0 0 5 0 3 0 4 0 0 1 0 0 0 0 0 0 0 6 0 0 0 5 0 7 0 0 0 ΕΠΛ131 Εργασία 3. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 5

$ java PlaySudoku < verydiffsud.txt 3 6 8 4 5 2 7 9 1 9 5 1 7 8 3 6 4 2 7 2 4 1 6 9 3 5 8 5 7 9 2 4 1 8 6 3 4 1 3 8 7 6 9 2 5 6 8 2 3 9 5 1 7 4 2 9 5 6 3 8 4 1 7 1 3 7 9 2 4 5 8 6 8 4 6 5 1 7 2 3 9 Αλγόριθμος Όπως ήδη αναφέρθηκε η δομή δεδομένων πρέπει να είναι ένας τρισδιάστατος πίνακας που απεικονίζει μια στοίβα από sudokus: int[][][] sudostack = new int [100000][9][9]; Η πρώτη διάσταση αποτελείται από ένα μεγάλο πλήθος στοιχείων, π.χ. 100000 (το μέγεθος της στοίβας). Αρχικά το sudostack περιλαμβάνει μόνο το αρχικό Sudoku (οι 9x9 θέσεις του sudostack[0]) που διαβάζεται από το αρχείο εισόδου μέσω ανακατεύθυνσης. Σε κάθε βήμα το Sudoku που είναι το τελευταίο που μπήκε μέσα (για αυτό εξάλλου μιλούμε για στοίβα) αυτό που είναι στο πάνω μέρος της στοίβας αντικαθίσταται με όλες τις πιθανές έγκυρες επεκτάσεις του, στη βάση της πρώτης σε σειρά ανοικτής θυρίδας του, όπου η μέτρηση των θυρίδων μπορεί να γίνει ανά σειρές και ανά στήλες. Στο παράδειγμα 1 πιο πάνω (αρχείο sud.txt), η πρώτη σε σειρά ανοικτή θυρίδα είναι η θυρίδα [0][1]. Βάσει της σειράς της αποκλείονται οι τιμές 1, 7 και 9. Βάσει της στήλης της αποκλείονται οι τιμές 2, 4, 5, και 9. Τέλος, βάσει του σχετικού τμήματος 3 x 3 αποκλείονται οι τιμές 1, 2, 5, 6 και 9. Ως εκ τούτου, οι πιθανές εναλλακτικές τιμές για τη συγκεκριμένη θυρίδα είναι οι τιμές 3 και 8. Το τελευταίο Sudoku που μπήκε στη στοίβα (βασικά για την ώρα, η στοίβα είχε μόνο ένα Sudoku μέσα, αυτό που είχε τους αριθμούς που διαβάστηκαν από το αρχείο) αντικαθίσταται επομένως στη στοίβα υπάρχουν τώρα δύο νέα Sudoku, όπου στο ένα η συγκεκριμένη θυρίδα λαμβάνει την τιμή 3 και στο άλλο την τιμή 8, όπως διαφαίνεται στο πιο κάτω σχήμα (σε αυτή την περίπτωση η στοίβα έχει δύο στοιχεία, όπου το τελευταίο της στοιχείο είναι αυτό που δεικνύεται από τη δεύτερη σε σειρά θυρίδα της): ΕΠΛ131 Εργασία 3. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 6

sudostack 1 8 0 9 0 0 0 0 7 0 9 6 0 5 0 0 0 0 5 0 2 0 0 0 0 6 0 0 0 0 0 0 0 0 1 0 0 2 9 0 0 0 7 4 0 0 4 0 0 0 0 0 0 0 0 5 0 0 0 0 2 0 6 0 0 0 0 3 0 4 7 0 3 0 0 0 0 7 0 0 5 1 0 1 3 0 9 0 0 0 0 7 0 9 6 0 5 0 0 0 0 5 0 2 0 0 0 0 6 0 0 0 0 0 0 0 0 1 0 0 2 9 0 0 0 7 4 0 0 4 0 0 0 0 0 0 0 0 5 0 0 0 0 2 0 6 0 0 0 0 3 0 4 7 0 3 0 0 0 0 7 0 0 5 Αν σε κάποια φάση, το τελευταίο Sudoku που μπήκε μέσα στη στοίβα δεν έχει έγκυρες επεκτάσεις (δεν μπορεί μπει κανένας αριθμός σε καμμιά θέση και να παραμείνει έγκυρο), τότε συνεχίζουμε (να ψάχνουμε για έγκυρες επεκτάσεις) με το προηγούμενο Sudoku (το ακριβώς από κάτω Sudoku στη στοίβα). Η πιο πάνω διαδικασία συνεχίζεται, μέχρις ότου να δημιουργηθεί πλήρως και με εγκυρότητα το επιδιωκόμενο Sudoku. Εκτός από την περαιτέρω εμπέδωση της δομής του πίνακα (πολλαπλών διαστάσεων) και μιας πρώτης επαφής με την έννοια της στοίβας, κύριος στόχος της τρέχουσας εργασίας είναι η άρθρωση και αφαιρετικότητα προγράμματος με τη χρήση ενός αριθμού βοηθητικών συναρτήσεων, οι οποίες στο σύνολό τους αντιπροσωπεύουν το πως έχει διασπαστεί το πρόβλημα σε υπό-προβλήματα. ΕΠΛ131 Εργασία 3. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 7

Παράδοση Όταν έχετε τελειώσει με τον πηγαίο κώδικα, μεταγλωττίστε το και βεβαιωθείτε ότι τρέχει σωστά. Παραδώστε το αρχείο πηγαίου κώδικα (userid_ erg3.java) και μια λίστα δοκιμής (userid_erg3.txt) με ένα τρέξιμο του προγράμματος ηλεκτρονικά μέσω του submit assignment κάτω από το Ασκήσεις Εργασία 3 στην ιστοσελίδα του μαθήματος μέχρι τις 03/04/2018 και ώρα 09:00. Όπου userid βάλτε το username που σας δόθηκε από το τμήμα. Προσοχή: Το σύστημα ελέγχει το χρόνο παράδοσης εργασιών γι αυτό μην περιμένετε την τελευταία στιγμή να κάνετε submit την εργασία σας. Βαθμολογία Ένα πρόγραμμα για να πάρει όλες τις μονάδες είναι απαραίτητο να: χρησιμοποιεί σχόλια έχει ευθυγραμμισμένο κώδικας χρησιμοποιεί αυτό-επεξηγηματικά ονόματα για τις μεταβλητές δουλεύει σωστά κάνει όλους τους απαραίτητους ελέγχους χρησιμοποιεί μεθόδους (αρθρωτή σχεδίαση) Για όλα τα παραπάνω ακολουθήστε τις οδηγίες που περιγράφονται εδώ: http://introcs.cs.princeton.edu/java/11style/. Το αρχείο με το πηγαίο κώδικα πρέπει οπωσδήποτε να περιέχει μια συμπληρωμένη κατάλληλα επικεφαλίδα από σχόλια στην αρχή του αρχείου όπως: /** * Author: Γράψτε εδώ το όνομα σας * Written:../../2018 * Last updated:../../2018 * * Compilation: javac userid_erg3.java * Execution: java userid_erg3 * * Γράψτε εδώ πληροφορίες σχετικά με το τι κάνει * το πρόγραμμα * */ Κριτήρια αξιολόγησης Έγκυρη ανάγνωση δεδομένων μέσω ανακατεύθυνσης 5 ΕΠΛ131 Εργασία 3. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 8

Έλεγχος εγκυρότητας Soduku για 30 γραμμές, στήλες και υπό-πίνακες 3x3 Έλεγχος ολοκλήρωσης παιχνιδιού 5 Έγκυρη διαδικασία εκτέλεσης παιχνιδιού 40 Εκτύπωση αποτελέσματος 5 Σχόλια Ονόματα μεταβλητών 15 αρθρωτή σχεδίαση (χρήση μεθόδων) ΣΥΝΟΛΟ 100 Η εργασία είναι ατομική. Μπορείτε να συζητήσετε για αυτήν με τους συμφοιτητές σας, ωστόσο ποτέ δεν είναι αποδεκτό για σας να δείτε τον κώδικα κάποιου άλλου ή να κάνετε από κοινού τον κώδικα. Φυσικά, αν έχετε οποιεσδήποτε ερωτήσεις σχετικά με την εργασία, είμαστε πάντα στη διάθεσή σας για βοήθεια. Ανίχνευση αντιγραφής θα τιμωρείται με μηδενισμό. Κώδικας που δε μεταγλωττίζει ή δεν τρέχει (crashes) παίρνει αυτόματα βαθμολογία 0. ΕΠΛ131 Εργασία 3. Υπεύθυνος Εργασίας: Παύλος Αντωνίου 9