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

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

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

Αδιανόητη αυθαιρεσία: Διευθυντής Π.Ε αδικεί υποψήφιο Διευθυντή σχολείου και δημιουργεί «μπάχαλο» με εμπλοκή της δικαιοσύνης!

Κατάρτιση 500.000 ενηλίκων: 10.000 προσλήψεις εκπαιδευτών ενηλικών με έως 22 ευρώ την ώρα

Παν.Πατρών: Μοριοδοτούμενο σεμινάριο ΕΙΔΙΚΗ ΑΓΩΓΗΣ με μόνο 65Є εγγραφή - Ξεκινάει 28 Μαρτίου

Μοριοδοτούμενο σεμινάριο Ειδικής Αγωγής (ΕΛΜΕΠΑ) με μόνο 50Є εγγραφή- αιτήσεις ως 28/3

2ος Πανελλήνιος Γραπτός Διαγωνισμός ΑΣΕΠ: Τα 2 μαθήματα εξέτασης και η ύλη

Proficiency και Lower μόνο 95 ευρώ σε 2 μόνο ημέρες στα χέρια σας (ΧΩΡΙΣ προφορικά, ΧΩΡΙΣ έκθεση!)

ΕΥΚΟΛΕΣ ΠΙΣΤΟΠΟΙΗΣΕΙΣ ΙΣΠΑΝΙΚΩΝ και ΙΤΑΛΙΚΩΝ για εκπαιδευτικούς - Πάρτε τις άμεσα

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

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