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

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

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

Εισαγωγή

Πίνακες

Στη Ruby, οι πίνακες είναι διατεταγμένες συλλογές οποιουδήποτε αντικειμένου, με ακέραιες θέσεις. Η αρίθμηση των θέσεων ενός πίνακα ξεκινά από το 0. Μια αρνητική θέση θεωρείται ότι μετράει από το τέλος του πίνακα. Για παράδειγμα, η θέση -1 δείχνει το τελευταίο στοιχείο του πίνακα, η -2 είναι το προτελευταίο στοιχείο του πίνακα, και ούτω καθεξής.

Δημιουργία πινάκων

Οι πίνακες συνήθως δημιουργούνται με τον συμβολισμό []. Μπορούν να περιέχουν αντικείμενα οποιουδήποτε τύπου.

array = [1, "two", 3.0]

Πρόσβαση σε στοιχεία

Τα στοιχεία ενός πίνακα μπορούν να ανακτηθούν με τις θέσεις τους χρησιμοποιώντας τη μέθοδο #[]. Αυτή επιστρέφει το στοιχείο στη συγκεκριμένη θέση ή επιστρέφει έναν υποπίνακα που ξεκινά από τη θέση εκκίνησης και συνεχίζει για ένα καθορισμένο μήκος. Οι αρνητικές θέσεις μετρούν προς τα πίσω από το τέλος του πίνακα.

a = [ "a", "b", "c", "d", "e" ]

a[2]       #=> "c"
a[6]       #=> nil
a[1, 3]    #=> [ "b", "c", "d" ]

a[-1]      #=> "e"
a[-2]      #=> "d"
a[-3, 2]   #=> ["c", "d"]

Βοηθητικές μέθοδοι

Υπάρχουν πολλές χρήσιμες βοηθητικές μέθοδοι για τους πίνακες. Ορίστε μερικές από τις πιο συνηθισμένες:

fibonacci = [0, 1, 1, 2, 3, 5, 8, 13]

fibonacci.size      #=> 8
fibonacci.sum       #=> 33
fibonacci.reverse   #=> [13, 8, 5, 3, 2, 1, 1, 0]

Απαρίθμηση

Αντί να χρησιμοποιούμε βρόχους για να διατρέξουμε συλλογές, στη Ruby χρησιμοποιούμε απαρίθμηση.

Η απαρίθμηση είναι η διαδικασία να διατρέχουμε μια συλλογή (εδώ έναν πίνακα) και να εκτελούμε κάποια ενέργεια σε κάθε αντικείμενο. Η απαρίθμηση είναι βασική έννοια στη Ruby και χρησιμοποιείται για πράγματα όπως ταξινόμηση, ομαδοποίηση, mapping, reducing και πολλά άλλα.

Μια απαρίθμηση που τυπώνει κάθε λέξη ενός πίνακα θα έμοιαζε κάπως έτσι:

words = ["the", "cat", "sat"]
words.each do |word|
  puts word
end

# Output:
# the
# cat
# sat

Σε αυτό το παράδειγμα, καλέσαμε τη μέθοδο .each στον πίνακα μας και της περάσαμε ένα μπλοκ που δέχεται μία παράμετρο (word) και την τυπώνει.

Θα δούμε τα μπλοκ πολύ πιο αναλυτικά αργότερα στο track, αλλά για την ώρα σκέψου τα σαν ανώνυμες συναρτήσεις που μπορούν να δέχονται μηδέν ή περισσότερα ορίσματα. Μπορούν να οριστούν με τη σύνταξη do...end (πάνω) ή με τη σύνταξη {} (κάτω).

Ορίστε μερικά ακόμη παραδείγματα μεθόδων πινάκων που χρησιμοποιούν μπλοκ:

fibonacci = [0, 1, 1, 2, 3, 5, 8, 13]

fibonacci.count  { |number| number == 1 }   #=> 2
fibonacci.any?   { |number| number == 6 }   #=> false
fibonacci.select { |number| number.odd? }   #=> [1, 1, 3, 5, 13]
fibonacci.all?   { |number| number < 20 }   #=> true
fibonacci.map    { |number| number * 2  }   #=> [0, 2, 2, 4, 6, 10, 16, 26]

Οδηγίες

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

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

1. Έλεγξε ποιες ήταν οι μετρήσεις την προηγούμενη εβδομάδα

Για λόγους σύγκρισης, κρατάς πάντα δίπλα σου ένα αντίγραφο από τις μετρήσεις της προηγούμενης εβδομάδας, οι οποίες ήταν: 0, 2, 5, 3, 7, 8 και 4. Υλοποίησε τη μέθοδο BirdCount.last_week που επιστρέφει τις μετρήσεις της προηγούμενης εβδομάδας:

BirdCount.last_week
# => [0, 2, 5, 3, 7, 8, 4]

2. Έλεγξε πόσα πουλιά επισκέφτηκαν χθες

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

birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.yesterday
# => 4

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

Υλοποίησε τη μέθοδο BirdCount#total ώστε να επιστρέφει τον συνολικό αριθμό των πουλιών που έχουν επισκεφτεί τον κήπο σου:

birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.total
# => 19

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

Κάποιες ημέρες είναι πιο πολυάσχολες από άλλες. Μια πολυάσχολη ημέρα είναι εκείνη κατά την οποία πέντε ή περισσότερα πουλιά έχουν επισκεφτεί τον κήπο σου. Υλοποίησε τη μέθοδο BirdCount#busy_days ώστε να επιστρέφει τον αριθμό των πολυάσχολων ημερών:

birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.busy_days
# => 2

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

Υλοποίησε τη μέθοδο BirdCount#day_without_birds? που επιστρέφει true αν υπήρξε κάποια ημέρα κατά την οποία μηδέν πουλιά επισκέφτηκαν τον κήπο. Διαφορετικά, επιστρέφει false:

birds_per_day = [2, 5, 0, 7, 4, 1]
bird_count = BirdCount.new(birds_per_day)
bird_count.day_without_birds?
# => true
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Ruby Exercism

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

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