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

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

Όλες οι σημαντικές και έκτακτες ειδήσεις σήμερα

Νέα έρευνα συνδέει γνωστά μαγειρικά λάδια με κίνδυνο καρκίνου του παχέος εντέρου

Πανεπιστήμιο Αιγαίου: Το κορυφαίο πρόγραμμα ειδικής αγωγής - Αιτήσεις έως 30/12

ΕΥΚΟΛΕΣ πιστοποιήσεις ΙΣΠΑΝΙΚΩΝ - ΙΤΑΛΙΚΩΝ - ΓΑΛΛΙΚΩΝ - ΓΕΡΜΑΝΙΚΩΝ για ΑΣΕΠ - Πάρτε τις ΑΜΕΣΑ

Το 1ο στην Ελλάδα Πρόγραμμα επιμόρφωσης Τεχνητής Νοημοσύνης για εκπαιδευτικούς με Πιστοποιητικό

ΕΛΜΕΠΑ: Το κορυφαίο πρόγραμμα Ειδικής Αγωγής στην Ελλάδα για διπλή μοριοδότηση

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

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

xeria_4.jpg
Αυτά τα σημάδια στα χέρια μας προειδοποιούν για κακή υγεία: Ψάχτε για καρδιά, πνεύμονες ή ήπαρ
Πρησμένα δάχτυλα και εύθραυστα νύχια: Πότε αποτελούν σημάδι σοβαρότερου προβλήματος υγείας;
Αυτά τα σημάδια στα χέρια μας προειδοποιούν για κακή υγεία: Ψάχτε για καρδιά, πνεύμονες ή ήπαρ