Ο τύπος Bool είναι ένα από τα δομικά στοιχεία της γλώσσας.
Σκοπός του είναι να περιγράφει αν κάτι είναι αληθές ή ψευδές, με τις αντίστοιχες τιμές True και False.
Τα Boolean (λογικές τιμές) μπορούν να συνδυαστούν με τους τελεστές && "AND" και || "OR", και να αντιστραφούν με τη συνάρτηση not.
Τα Boolean είναι επίσης εξαιρετικά χρήσιμα για να δημιουργείς διακλαδώσεις στον κώδικά σου που εκτελούνται μόνο αν πληρούνται ορισμένες συνθήκες.
Στην Elm, αυτό γίνεται με μια έκφραση if-then-else, όπως φαίνεται παρακάτω.
if someCondition || (someOtherCondition && anotherCondition) then
doSomething
else
doSomethingElse
Σε αυτή την άσκηση θα υλοποιήσεις τη λογική της αποστολής για ένα νέο παιχνίδι ρόλων που αναπτύσσει ένας φίλος. Η βασική ηρωίδα του παιχνιδιού είναι η Annalyn, ένα γενναίο κορίτσι με ένα άγριο και πιστό κατοικίδιο σκυλί. Δυστυχώς, όμως, χτυπά η συμφορά: η καλύτερή της φίλη απήχθη ενώ έψαχνε για μούρα στο δάσος. Η Annalyn θα προσπαθήσει να βρει και να ελευθερώσει την καλύτερή της φίλη, παίρνοντας προαιρετικά μαζί της τον σκύλο της σε αυτή την αποστολή.
Αφού πέρασε κάποιο χρόνο ακολουθώντας τα ίχνη της καλύτερής της φίλης, βρίσκει το στρατόπεδο στο οποίο κρατείται η φίλη της. Αποδεικνύεται ότι υπάρχουν δύο απαγωγείς: ένας πανίσχυρος ιππότης και ένας πονηρός τοξότης.
Έχοντας βρει τους απαγωγείς, η Annalyn εξετάζει ποιες από τις παρακάτω ενέργειες μπορεί να κάνει:
Έχεις πέντε εργασίες: να υλοποιήσεις τη λογική που καθορίζει αν οι παραπάνω ενέργειες είναι διαθέσιμες, με βάση την κατάσταση των τριών χαρακτήρων που βρίσκονται στο δάσος και αν το κατοικίδιο σκυλί της Annalyn είναι παρόν ή όχι.
Υλοποίησε τη συνάρτηση canFastAttack που παίρνει μια τιμή Boolean που δείχνει αν ο ιππότης είναι ξύπνιος. Η συνάρτηση επιστρέφει True αν μπορεί να γίνει γρήγορη επίθεση με βάση την κατάσταση του ιππότη. Διαφορετικά, επιστρέφει False:
knightIsAwake = True
canFastAttack knightIsAwake
--> False
Υλοποίησε τη συνάρτηση canSpy που παίρνει τρεις τιμές Boolean, που δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι. Η συνάρτηση επιστρέφει True αν μπορεί να κατασκοπευτεί η ομάδα, με βάση την κατάσταση των τριών χαρακτήρων. Διαφορετικά, επιστρέφει False:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
canSpy knightIsAwake archerIsAwake prisonerIsAwake
--> True
Υλοποίησε τη συνάρτηση canSignalPrisoner που παίρνει δύο τιμές Boolean, που δείχνουν αν ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι. Η συνάρτηση επιστρέφει True αν μπορεί να δοθεί σήμα στον κρατούμενο, με βάση την κατάσταση των δύο χαρακτήρων. Διαφορετικά, επιστρέφει False:
archerIsAwake = False
prisonerIsAwake = True
canSignalPrisoner archerIsAwake prisonerIsAwake
--> True
Υλοποίησε τη συνάρτηση canFreePrisoner που παίρνει τέσσερις τιμές Boolean. Οι τρεις πρώτες παράμετροι δείχνουν αν ο ιππότης, ο τοξότης και ο κρατούμενος, αντίστοιχα, είναι ξύπνιοι. Η τελευταία παράμετρος δείχνει αν το κατοικίδιο σκυλί της Annalyn είναι παρόν. Η συνάρτηση επιστρέφει True αν ο κρατούμενος μπορεί να ελευθερωθεί με βάση την κατάσταση των τριών χαρακτήρων και την παρουσία του κατοικίδιου σκυλιού της Annalyn. Διαφορετικά, επιστρέφει False:
knightIsAwake = False
archerIsAwake = True
prisonerIsAwake = False
petDogIsPresent = False
canFreePrisoner knightIsAwake archerIsAwake prisonerIsAwake petDogIsPresent
--> False
Υλοποίησε τη συνάρτηση stealthAttackDamage που παίρνει μια τιμή Boolean που δείχνει αν η Annalyn έγινε αντιληπτή. Η συνάρτηση επιστρέφει 7 αν έγινε αντιληπτή, αλλιώς 12.
annalynIsDetected = True
stealthAttackDamage annalynIsDetected
--> 7
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Elm με 28 έννοιες110 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.