Διαδρομές
/
Elixir
Elixir
/
Ασκήσεις
/
Καταμέτρηση πουλιών
Καταμέτρηση πουλιών

Καταμέτρηση πουλιών

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

Εισαγωγή

Αναδρομή

Οι αναδρομικές συναρτήσεις είναι συναρτήσεις που καλούν τον εαυτό τους.

Μια αναδρομική συνάρτηση πρέπει να έχει τουλάχιστον μία βασική περίπτωση και τουλάχιστον μία αναδρομική περίπτωση.

Μια βασική περίπτωση επιστρέφει μια τιμή χωρίς να καλέσει ξανά τη συνάρτηση. Μια αναδρομική περίπτωση καλεί ξανά τη συνάρτηση, τροποποιώντας την είσοδο, ώστε κάποια στιγμή να ταιριάξει με τη βασική περίπτωση.

Πολύ συχνά, κάθε περίπτωση γράφεται σε δική της ρήτρα συνάρτησης.

# base case
def count([]), do: 0

# recursive case
def count([_head | tail]), do: 1 + count(tail)

Οδηγίες

Είσαι ένας φανατικός παρατηρητής πουλιών και καταγράφεις πόσα πουλιά έχουν επισκεφτεί τον κήπο σου κάθε μέρα.

Αποφάσισες να ανεβάσεις την παρατήρηση πουλιών σε άλλο επίπεδο και να υλοποιήσεις μερικά εργαλεία που θα σε βοηθήσουν να παρακολουθείς και να επεξεργάζεσαι τα δεδομένα.

Έχεις επιλέξει να αποθηκεύσεις τα δεδομένα ως λίστα από ακέραιους αριθμούς. Ο πρώτος αριθμός στη λίστα είναι ο αριθμός των πουλιών που επισκέφτηκαν τον κήπο σου σήμερα, ο δεύτερος χθες, και ούτω καθεξής.

1. Έλεγξε πόσα πουλιά επισκέφτηκαν σήμερα

Υλοποίησε τη συνάρτηση BirdCount.today/1. Θα πρέπει να δέχεται μια λίστα με τους ημερήσιους αριθμούς πουλιών και να επιστρέφει τον σημερινό αριθμό. Αν η λίστα είναι κενή, θα πρέπει να επιστρέφει nil.

BirdCount.today([2, 5, 1])
# => 2

2. Αύξησε τον σημερινό αριθμό

Υλοποίησε τη συνάρτηση BirdCount.increment_day_count/1. Θα πρέπει να δέχεται μια λίστα με τους ημερήσιους αριθμούς πουλιών και να αυξάνει τον σημερινό αριθμό κατά 1. Αν η λίστα είναι κενή, επίστρεψε [1].

BirdCount.increment_day_count([4, 0, 2])
# => [5, 0, 2]

3. Έλεγξε αν υπήρξε μέρα χωρίς επισκέψεις πουλιών

Υλοποίησε τη συνάρτηση BirdCount.has_day_without_birds?/1. Θα πρέπει να δέχεται μια λίστα με τους ημερήσιους αριθμούς πουλιών. Θα πρέπει να επιστρέφει true αν υπήρξε τουλάχιστον μία μέρα που κανένα πουλί δεν επισκέφτηκε τον κήπο, και false διαφορετικά.

BirdCount.has_day_without_birds?([2, 0, 4])
# => true

BirdCount.has_day_without_birds?([3, 8, 1, 5])
# => false

4. Υπολόγισε τον συνολικό αριθμό των πουλιών που επισκέφτηκαν

Υλοποίησε τη συνάρτηση BirdCount.total/1. Θα πρέπει να δέχεται μια λίστα με τους ημερήσιους αριθμούς πουλιών και να επιστρέφει τον συνολικό αριθμό πουλιών που επισκέφτηκαν τον κήπο σου από τότε που άρχισες να συλλέγεις τα δεδομένα.

BirdCount.total([4, 0, 9, 0, 5])
# => 18

5. Υπολόγισε τον αριθμό των πολυάσχολων ημερών

Κάποιες μέρες είναι πιο πολυάσχολες από άλλες. Πολυάσχολη μέρα είναι εκείνη κατά την οποία πέντε ή περισσότερα πουλιά έχουν επισκεφτεί τον κήπο σου.

Υλοποίησε τη συνάρτηση BirdCount.busy_days/1. Θα πρέπει να δέχεται μια λίστα με τους ημερήσιους αριθμούς πουλιών και να επιστρέφει τον αριθμό των πολυάσχολων ημερών.

BirdCount.busy_days([4, 5, 0, 0, 6])
# => 2
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Elixir Exercism

Έτοιμος να ξεκινήσεις την άσκηση Καταμέτρηση πουλιών;

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