Διαδρομές
/
Elixir
Elixir
/
Ασκήσεις
/
Λειτουργίες λίστας
Λειτουργίες λίστας

Λειτουργίες λίστας

Μέτριο

Οδηγίες

Υλοποίησε βασικές πράξεις σε λίστες.

Στις συναρτησιακές γλώσσες, οι πράξεις σε λίστες όπως οι length, map και reduce είναι πολύ συνηθισμένες. Υλοποίησε μια σειρά από βασικές πράξεις σε λίστες, χωρίς να χρησιμοποιήσεις υπάρχουσες συναρτήσεις.

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

  • append (με δεδομένες δύο λίστες, πρόσθεσε όλα τα στοιχεία της δεύτερης λίστας στο τέλος της πρώτης);
  • concatenate (με δεδομένη μια σειρά από λίστες, συνένωσε όλα τα στοιχεία όλων των λιστών σε μία επίπεδη λίστα);
  • filter (με δεδομένο ένα κατηγόρημα και μια λίστα, επίστρεψε τη λίστα με όλα τα στοιχεία για τα οποία το predicate(item) είναι αληθές);
  • length (με δεδομένη μια λίστα, επίστρεψε τον συνολικό αριθμό των στοιχείων της);
  • map (με δεδομένη μια συνάρτηση και μια λίστα, επίστρεψε τη λίστα με τα αποτελέσματα της εφαρμογής της function(item) σε όλα τα στοιχεία);
  • foldl (με δεδομένη μια συνάρτηση, μια λίστα και έναν αρχικό συσσωρευτή, δίπλωσε (ανάγωγε) κάθε στοιχείο στον συσσωρευτή από τα αριστερά);
  • foldr (με δεδομένη μια συνάρτηση, μια λίστα και έναν αρχικό συσσωρευτή, δίπλωσε (ανάγωγε) κάθε στοιχείο στον συσσωρευτή από τα δεξιά);
  • reverse (με δεδομένη μια λίστα, επίστρεψε μια λίστα με όλα τα αρχικά στοιχεία, αλλά σε αντίστροφη σειρά).

Σημείωσε ότι η σειρά με την οποία περνιούνται τα ορίσματα στις συναρτήσεις δίπλωσης (foldl, foldr) έχει σημασία.

Αλλαγές ειδικά για την Elixir

Η παραπάνω περιγραφή αυτής της άσκησης είναι κοινή για όλα τα tracks του Exercism.

Για λόγους συνέπειας με την πρότυπη βιβλιοθήκη της Elixir, οι συναρτήσεις που χρησιμοποιούν οι foldl και foldr θα πρέπει να δέχονται το στοιχείο ως πρώτο όρισμα και τον συσσωρευτή ως δεύτερο.

Επιπλέον, για να μην υπάρχει σύγκρουση με τη συνάρτηση Kernel.length/1, η οποία εισάγεται αυτόματα, η συνάρτηση που μετράει το μήκος θα ονομάζεται count αντ' αυτού.

Αργές δοκιμές

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

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Elixir Exercism

Έτοιμος να ξεκινήσεις την άσκηση Λειτουργίες λίστας;

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

Αναλυτική ματιά στο Λειτουργίες λίστας!

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