Thumbnail
Προσφορά του φροντιστηριακού ομίλου ΕΝΑ

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

Το παιχνίδι Game of Life είναι ένα κυτταρικό αυτόματο που επινοήθηκε από τον Βρετανό μαθηματικό John Horton Conway το 1970. Το παιχνίδι αυτό δεν χρειάζεται κανέναν παίκτη, που σημαίνει ότι η εξέλιξη του καθορίζεται από την αρχική του κατάσταση. Το σύμπαν του παιχνιδιού είναι ένα άπειρο δισδιάστατο ορθογώνιο πλέγμα, κάθε κελί του οποίου μπορεί να περιέχει ένα ζωντανό ('*') ή ένα νεκρό (' ') κύτταρο. Κάθε κελί έχει 8 γείτονες και από την μία γενιά στην επόμενη ισχύουν οι εξής κανόνες:

  • Κάθε ζωντανό κύτταρο με λιγότερους από 2 ζωντανούς γείτονες πεθαίνει από μοναξιά
  • Κάθε ζωντανό κύτταρο με 2 ή 3 ζωντανούς γείτονες επιζεί
  • Κάθε ζωντανό κύτταρο με περισσότερους από 3 ζωντανούς  γείτονες πεθαίνει λόγω υπερπληθυσμού
  • Κάθε νεκρό κύτταρο με ακριβώς 3 ζωντανούς γείτονες γίνεται ζωντανό (αναπαράγεται)

Να γραφεί πρόγραμμα που:

  1. Διαβάζει την αρχική κατάσταση του πλέγματος Π[10, 8] και διασφαλίζει ότι κάθε κελί έχει την τιμή '*' για ζωντανό ή ' ' για νεκρό κύτταρο.
  2. Υπολογίζει την κατάσταση του πλέγματος μετά από 30 γενιές, χρησιμοποιώντας τα παρακάτω υποπρογράμματα:

Επομενη_Γενια: Αντιγράφει το πλέγμα, που δέχεται ως παράμετρο, σε ένα νέο ίσων διαστάσεων. Στη συνέχεια, το αντίγραφο επεξεργάζεται από το υποπρόγραμμα Νεα_Κατασταση και ενημερώνεται κάθε κελί του αρχικού πλέγματος.

Νεα_Κατασταση: Δέχεται ένα πλέγμα και τις συντεταγμένες ενός κελιού και υπολογίζει και επιστρέφει την νέα κατάσταση του κελιού σύμφωνα με τους παραπάνω κανόνες.

Ζωντανοι_Ανα_Γραμμη: Δέχεται ένα πλέγμα, μία γραμμή, το αριστερότερο και το δεξιότερο άκρο των γειτόνων ενός κυττάρου και επιστρέφει το πλήθος των ζωντανών οργανισμών στη γραμμή αυτή.

Γειτονες: Δέχεται ένα πλέγμα και τις συντεταγμένες ενός κελιού και επιστρέφει το πλήθος των ζωντανών γειτόνων.

  1. Εμφανίζει την κατάσταση του πλέγματος μετά από 30 γενιές.

 

ΠΡΟΓΡΑΜΜΑ Game_of_Life

ΜΕΤΑΒΛΗΤΕΣ

            ΑΚΕΡΑΙΕΣ: Ι, J

            ΧΑΡΑΚΤΗΡΕΣ: Π[10, 8]

 

ΑΡΧΗ

            ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10

                        ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 8

                                    ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ

                                                ΔΙΑΒΑΣΕ Π[Ι, J]

                                    ΜΕΧΡΙΣ_ΟΤΟΥ Π[Ι, J] = '*' Η Π[Ι, J] = ' '

                        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

            ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 30

                        ΚΑΛΕΣΕ ΕΠΟΜΕΝΗ_ΓΕΝΙΑ(Π)

            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

            ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10

                        ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 8

                                    ΓΡΑΨΕ Π[Ι, J]

                        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ

 

ΔΙΑΔΙΚΑΣΙΑ ΕΠΟΜΕΝΗ_ΓΕΝΙΑ(Π)

ΜΕΤΑΒΛΗΤΕΣ

            ΑΚΕΡΑΙΕΣ: Ι, J

            ΧΑΡΑΚΤΗΡΕΣ: Π[10, 8], Π2[10, 8]

ΑΡΧΗ

            ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10             ! Αντιγραφή αρχικού πλέγματος για τη δημιουργία της επόμενης γενιάς

                        ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 8

                                    Π2[Ι, J] ← Π[Ι, J]

                        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

            ΓΙΑ Ι ΑΠΟ 1 ΜΕΧΡΙ 10

                        ΓΙΑ J ΑΠΟ 1 ΜΕΧΡΙ 8

                                    Π[Ι, J] ← ΝΕΑ_ΚΑΤΑΣΤΑΣΗ(Π2, Ι, J)      

                        ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ           

ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

 

ΣΥΝΑΡΤΗΣΗ ΝΕΑ_ΚΑΤΑΣΤΑΣΗ(Π, X, Y): ΧΑΡΑΚΤΗΡΑΣ

ΜΕΤΑΒΛΗΤΕΣ

            ΑΚΕΡΑΙΕΣ: X, Y, κ

            ΧΑΡΑΚΤΗΡΕΣ: Π[10, 8]

ΑΡΧΗ

            κ ← ΓΕΙΤΟΝΕΣ(Π, X, Y)

            ΑΝ Π[X, Y] = '*' ΚΑΙ (κ = 2 Ή κ = 3) ΤΟΤΕ

                        ΝΕΑ_ΚΑΤΑΣΤΑΣΗ ← '*'

            ΑΛΛΙΩΣ_ΑΝ Π[X, Y] = ' ' ΚΑΙ κ = 3 ΤΟΤΕ

                        ΝΕΑ_ΚΑΤΑΣΤΑΣΗ ← '*'

            ΑΛΛΙΩΣ

                        ΝΕΑ_ΚΑΤΑΣΤΑΣΗ ← ' '

            ΤΕΛΟΣ_ΑΝ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

 

ΣΥΝΑΡΤΗΣΗ ΖΩΝΤΑΝΟΙ_ΑΝΑ_ΓΡΑΜΜΗ(Π, X, Y1, Y2): ΑΚΕΡΑΙΑ

ΜΕΤΑΒΛΗΤΕΣ

            ΑΚΕΡΑΙΕΣ: I, πλ, X, Y1, Y2

            ΧΑΡΑΚΤΗΡΕΣ: Π[10, 8]

ΑΡΧΗ

            πλ ← 0

            ΓΙΑ I ΑΠΟ Y1 ΜΕΧΡΙ Y2

                        ΑΝ Π[X, I] = '*' ΤΟΤΕ

                                    πλ ← πλ + 1

                        ΤΕΛΟΣ_ΑΝ

            ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

            ΖΩΝΤΑΝΟΙ_ΑΝΑ_ΓΡΑΜΜΗ ← πλ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

 

ΣΥΝΑΡΤΗΣΗ ΓΕΙΤΟΝΕΣ(Π, X, Y): ΑΚΕΡΑΙΑ

ΜΕΤΑΒΛΗΤΕΣ

            ΑΚΕΡΑΙΕΣ: X, Y, Y1, Y2, πλ

            ΧΑΡΑΚΤΗΡΕΣ: Π[10,8]

ΑΡΧΗ

            ΑΝ Y = 1 ΤΟΤΕ                                     ! Στήλη  = 1, δεν υπάρχουν γείτονες αριστερά

                        Y1 ← 1

                        Y2 ← 2

            ΑΛΛΙΩΣ_ΑΝ Y = 8 ΤΟΤΕ                      ! Στήλη  = 8, δεν υπάρχουν γείτονες δεξιά

                        Y1 ← 7

                        Y2 ← 8

            ΑΛΛΙΩΣ                                               ! Υπάρχουν γείτονες αριστερά και δεξιά

                        Y1 ← Y - 1

                        Y2 ← Y + 1

            ΤΕΛΟΣ_ΑΝ

            ΑΝ X = 1 ΤΟΤΕ                                     ! Γραμμή = 1, δεν υπάρχουν γείτονες πάνω

                        πλ ← ΖΩΝΤΑΝΟΙ_ΑΝΑ_ΓΡΑΜΜΗ(Π,1,Y1,Y2) + ΖΩΝΤΑΝΟΙ_ΑΝΑ_ΓΡΑΜΜΗ(Π,2,Y1,Y2)

            ΑΛΛΙΩΣ_ΑΝ X = 10 ΤΟΤΕ                    ! Γραμμή = 10, δεν υπάρχουν γείτονες κάτω

                        πλ ← ΖΩΝΤΑΝΟΙ_ΑΝΑ_ΓΡΑΜΜΗ(Π,9,Y1,Y2) + ΖΩΝΤΑΝΟΙ_ΑΝΑ_ΓΡΑΜΜΗ(Π,10,Y1,Y2)

            ΑΛΛΙΩΣ                                               ! Υπάρχουν γείτονες πάνω και κάτω

                        πλ ← ΖΩΝΤΑΝΟΙ_ΑΝΑ_ΓΡΑΜΜΗ(Π,X-1,Y1,Y2) + ΖΩΝΤΑΝΟΙ_ΑΝΑ_ΓΡΑΜΜΗ(Π,X,Y1,Y2)                                                                 + ΖΩΝΤΑΝΟΙ_ΑΝΑ_ΓΡΑΜΜΗ(Π, X+1, Y1,Y2)

            ΤΕΛΟΣ_ΑΝ

            ΑΝ Π[X, Y] = '*' ΤΟΤΕ

                        πλ ← πλ - 1

            ΤΕΛΟΣ_ΑΝ

            ΓΕΙΤΟΝΕΣ ← πλ

ΤΕΛΟΣ_ΣΥΝΑΡΤΗΣΗΣ

 

Επιμέλεια θεμάτων: Καλαϊτζάκη Μαρία

 

alfavita.gr

Επισκεφθείτε το φροντιστηριακό όμιλο ΕΝΑ εδώ

Ειδήσεις, θέματα και λύσεις για Πανελλήνιες 2024 - Βάσεις εισαγωγής

Μηχανογραφικό: Διαφοροποιήσεις στις επιλογές των υποψηφίων και επιλογές που εκπλήσσουν

Βάσεις εισαγωγής: Πτώση σε Πολυτεχνεία και Νομικές αλλά οι Ιατρικές

Φτιάξε σωστά το Μηχανογραφικό σου με την βοήθεια των πιο εξειδικευμένων συμβούλων επαγγελματικού προσανατολισμού

Τι σημαίνει η φράση «οι καιροί ου μενετοί»;

Google news logo Ακολουθήστε το Alfavita στo Google News Viber logo Ακολουθήστε το Alfavita στo Viber

σχετικά άρθρα

ilikiomeni
Μοναξιά: Πώς και πόσο αυξάνει τον κίνδυνο εγκεφαλικού επεισοδίου
Οι ερευνητές τοποθέτησαν τους συμμετέχοντες σε μία από τις τέσσερις ομάδες ανάλογα με τις βαθμολογίες μοναξιάς τους στις δύο χρονικές στιγμές
Μοναξιά: Πώς και πόσο αυξάνει τον κίνδυνο εγκεφαλικού επεισοδίου
ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ
Αναπληρωτές εκπαιδευτικοί: Νέα Προκήρυξη του ΑΣΕΠ ανοίγει νέους Πίνακες κατάταξης σε 58 ειδικότητες
Από τους Πίνακες αυτούς το υπουργείο Παιδείας θα «αντλεί» αναπληρωτές εκπαιδευτικούς, όποτε χρειάζεται, για τα σχολεία όλης της χώρας. 
Αναπληρωτές εκπαιδευτικοί: Νέα Προκήρυξη του ΑΣΕΠ ανοίγει νέους Πίνακες κατάταξης σε 58 ειδικότητες
Ξηροί καρποί
Αδυνάτισμα: Το παρεξηγημένο σνακ που προκαλεί κορεσμό και διευκολύνει την απώλεια βάρους
Ποιο είναι το παρεξηγημένο σνακ που προκαλεί κορεσμό και διευκολύνει την απώλεια βάρους
Αδυνάτισμα: Το παρεξηγημένο σνακ που προκαλεί κορεσμό και διευκολύνει την απώλεια βάρους