Διαδρομές
/
Cairo
Cairo
/
Ασκήσεις
/
Η Παρείσφρηση της Annalyn
Η Παρείσφρηση της Annalyn

Η Παρείσφρηση της Annalyn

Άσκηση εκμάθησης

Εισαγωγή

Στη Cairo, οι τιμές Boolean (λογική τιμή) αντιπροσωπεύονται από τον προκαθορισμένο τύπο bool, που μπορεί να πάρει ως τιμή είτε true είτε false.

let speeding = true;   // Boolean variable 'speeding' set to 'true'
let has_error = false; // Boolean variable 'has_error' set to 'false' 

Η Cairo υποστηρίζει τρεις λογικούς τελεστές που μπορούν να αξιολογήσουν εκφράσεις σε τιμές Boolean, επιστρέφοντας είτε true είτε false.

Τελεστής Τι σημαίνει
&& (and) Είναι αληθές αν και οι δύο προτάσεις είναι αληθείς.
|| (or) Είναι αληθές αν τουλάχιστον μία πρόταση είναι αληθής.
! (not) Είναι αληθές μόνο αν η πρόταση είναι ψευδής.

Οδηγίες

Σε αυτή την άσκηση, θα υλοποιήσεις τη λογική της αποστολής για ένα νέο παιχνίδι RPG που αναπτύσσει ένας φίλος. Η βασική ηρωίδα του παιχνιδιού είναι η Annalyn, ένα γενναίο κορίτσι με έναν άγριο και πιστό σκύλο. Δυστυχώς, η καταστροφή χτυπά: ο καλύτερός της φίλος απήχθη ενώ έψαχνε για μούρα στο δάσος. Η Annalyn θα προσπαθήσει να τον βρει και να τον ελευθερώσει, παίρνοντας προαιρετικά μαζί της τον σκύλο της σε αυτή την αποστολή.

Αφού πέρασε λίγο καιρό ακολουθώντας τα ίχνη του καλύτερού της φίλου, βρίσκει το στρατόπεδο όπου εκείνος κρατείται. Αποδεικνύεται ότι υπάρχουν δύο απαγωγείς: ένας πανίσχυρος ιππότης και ένας πονηρός τοξότης.

Έχοντας βρει τους απαγωγείς, η Annalyn σκέφτεται ποιες από τις παρακάτω ενέργειες μπορεί να κάνει:

  • Γρήγορη επίθεση: μια γρήγορη επίθεση μπορεί να γίνει αν ο ιππότης κοιμάται, καθώς χρειάζεται χρόνο για να φορέσει την πανοπλία του, οπότε θα είναι ευάλωτος.
  • Κατασκόπευση: μπορείς να κατασκοπεύσεις την ομάδα αν τουλάχιστον ένας από αυτούς είναι ξύπνιος. Αλλιώς, η κατασκόπευση είναι χάσιμο χρόνου.
  • Σήμα στον κρατούμενο: μπορείς να δώσεις σήμα στον κρατούμενο με ήχους πουλιών αν ο κρατούμενος είναι ξύπνιος και ο τοξότης κοιμάται, καθώς οι τοξότες είναι εκπαιδευμένοι στα σήματα με πουλιά, οπότε θα μπορούσαν να υποκλέψουν το μήνυμα.
  • Ελευθέρωση του κρατούμενου: η Annalyn μπορεί να προσπαθήσει να μπει κρυφά στο στρατόπεδο για να ελευθερώσει τον κρατούμενο. Αυτό είναι ρίσκο και μπορεί να πετύχει μόνο με έναν από τους δύο παρακάτω τρόπους:
    • Αν η Annalyn έχει μαζί της τον σκύλο της, μπορεί να σώσει τον κρατούμενο αν ο τοξότης κοιμάται. Ο ιππότης φοβάται τον σκύλο και ο τοξότης δεν θα προλάβει να ετοιμαστεί πριν η Annalyn και ο κρατούμενος το σκάσουν.
    • Αν η Annalyn δεν έχει τον σκύλο της, τότε αυτή και ο κρατούμενος πρέπει να κινηθούν με μεγάλη μυστικότητα! Η Annalyn μπορεί να ελευθερώσει τον κρατούμενο αν ο κρατούμενος είναι ξύπνιος και ο ιππότης με τον τοξότη κοιμούνται και οι δύο, αλλά αν ο κρατούμενος κοιμάται δεν μπορεί να σωθεί: ο κρατούμενος θα τρομάξει από την ξαφνική εμφάνιση της Annalyn και θα ξυπνήσει τον ιππότη και τον τοξότη.

Έχεις τέσσερις εργασίες: να υλοποιήσεις τη λογική που καθορίζει αν οι παραπάνω ενέργειες είναι διαθέσιμες, με βάση την κατάσταση των τριών χαρακτήρων που βρίσκονται στο δάσος και το αν ο σκύλος της Annalyn είναι παρών ή όχι.

1. Έλεγξε αν μπορεί να γίνει γρήγορη επίθεση

Όρισε τη συνάρτηση can_fast_attack() που παίρνει μια Boolean τιμή που δείχνει αν ο ιππότης είναι ξύπνιος. Η συνάρτηση επιστρέφει true αν μπορεί να γίνει γρήγορη επίθεση με βάση την κατάσταση του ιππότη. Αλλιώς, επιστρέφει false:

let knight_awake = true;
can_fast_attack(knight_awake); // false

2. Έλεγξε αν μπορείς να κατασκοπεύσεις την ομάδα

Όρισε τη συνάρτηση can_spy() που παίρνει τρεις Boolean τιμές, που δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι. Η συνάρτηση επιστρέφει true αν μπορείς να κατασκοπεύσεις την ομάδα, με βάση την κατάσταση των τριών χαρακτήρων. Αλλιώς, επιστρέφει false:

let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
can_spy(knight_awake, archer_awake, prisoner_awake); // true

3. Έλεγξε αν μπορείς να δώσεις σήμα στον κρατούμενο

Όρισε τη συνάρτηση can_signal_prisoner() που παίρνει δύο Boolean τιμές, που δείχνουν αν ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι. Η συνάρτηση επιστρέφει true αν μπορείς να δώσεις σήμα στον κρατούμενο, με βάση την κατάσταση των δύο χαρακτήρων. Αλλιώς, επιστρέφει false:

let archer_awake = false;
let prisoner_awake = true;
can_signal_prisoner(archer_awake, prisoner_awake); // true

4. Έλεγξε αν μπορείς να ελευθερώσεις τον κρατούμενο

Όρισε τη συνάρτηση can_free_prisoner() που παίρνει τέσσερις Boolean τιμές. Οι τρεις πρώτες παράμετροι δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι. Η τελευταία παράμετρος δείχνει αν ο σκύλος της Annalyn είναι παρών. Η συνάρτηση επιστρέφει true αν μπορείς να ελευθερώσεις τον κρατούμενο, με βάση την κατάσταση των τριών χαρακτήρων και την παρουσία του σκύλου της Annalyn. Αλλιώς, επιστρέφει false:

let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
let dog_present = false;
can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present); // false
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Cairo Exercism

Έτοιμος να ξεκινήσεις την άσκηση Η Παρείσφρηση της Annalyn;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Cairo με 25 έννοιες68 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.