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

Λίστα γλωσσών

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

Εισαγωγή

Λίστες

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

empty_list = []
one_item_list = [1]
two_item_list = [1, 2]
multiple_type_list = [1, :pi, 3.14, "four"]

Η Elixir υλοποιεί τις λίστες ως συνδεδεμένη λίστα, όπου κάθε κόμβος αποθηκεύει δύο τιμές: το πρώτο στοιχείο και μια άλλη λίστα με όλα τα υπόλοιπα στοιχεία. Το πρώτο στοιχείο της λίστας ονομάζεται κεφαλή και η λίστα με τα υπόλοιπα στοιχεία ονομάζεται ουρά. Μπορούμε να χρησιμοποιήσουμε αυτόν τον συμβολισμό στον κώδικα:

# [1] represented in [head | tail] notation
[1 | []]

# [1, 2, 3] represented in [head | tail] notation
[1 | [2 | [3 | []]]]

Μπορούμε να χρησιμοποιήσουμε τον συμβολισμό [head | tail] για να προσθέσουμε στοιχεία στην αρχή μιας λίστας:

# Suppose
list = [2, 1]

[3, 2, 1] == [3 | list]
# => true

Υπάρχουν αρκετές συναρτήσεις στο module Kernel για να δουλέψεις με λίστες, καθώς και ολόκληρο το module List.

# Check if 1 is a member of the list
1 in [1, 2, 3, 4]
# => true

Οδηγίες

Σε αυτή την άσκηση πρέπει να υλοποιήσεις μερικές συναρτήσεις για να χειρίζεσαι μια λίστα με γλώσσες προγραμματισμού.

1. Όρισε μια συνάρτηση που επιστρέφει μια κενή λίστα γλωσσών

Όρισε τη συνάρτηση new/0 που δεν παίρνει ορίσματα και επιστρέφει μια κενή λίστα.

LanguageList.new()
# => []

2. Όρισε μια συνάρτηση που προσθέτει μια γλώσσα στη λίστα

Όρισε τη συνάρτηση add/2 που παίρνει 2 ορίσματα (μια λίστα γλωσσών και μια συμβολοσειρά που αντιπροσωπεύει μια γλώσσα). Θα πρέπει να επιστρέφει τη λίστα που προκύπτει, με τη νέα γλώσσα να προστίθεται στην αρχή της δεδομένης λίστας.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Clojure")
# => ["Clojure"]
language_list = LanguageList.add(language_list, "Haskell")
# => ["Haskell", "Clojure"]

3. Όρισε μια συνάρτηση που αφαιρεί μια γλώσσα από τη λίστα

Όρισε τη συνάρτηση remove/1 που παίρνει 1 όρισμα (μια λίστα γλωσσών). Θα πρέπει να επιστρέφει τη λίστα χωρίς το πρώτο στοιχείο. Υπόθεσε ότι η λίστα θα έχει πάντα τουλάχιστον ένα στοιχείο.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Clojure")
# => ["Clojure"]
language_list = LanguageList.add(language_list, "Haskell")
# => ["Haskell", "Clojure"]
language_list = LanguageList.remove(language_list)
# => ["Clojure"]

4. Όρισε μια συνάρτηση που επιστρέφει το πρώτο στοιχείο της λίστας

Όρισε τη συνάρτηση first/1 που παίρνει 1 όρισμα (μια λίστα γλωσσών). Θα πρέπει να επιστρέφει την πρώτη γλώσσα στη λίστα. Υπόθεσε ότι η λίστα θα έχει πάντα τουλάχιστον ένα στοιχείο.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elm")
# => ["Elm"]
language_list = LanguageList.add(language_list, "Prolog")
# => ["Prolog", "Elm"]
LanguageList.first(language_list)
# => "Prolog"

5. Όρισε μια συνάρτηση που επιστρέφει πόσες γλώσσες υπάρχουν στη λίστα

Όρισε τη συνάρτηση count/1 που παίρνει 1 όρισμα (μια λίστα γλωσσών). Θα πρέπει να επιστρέφει τον αριθμό των γλωσσών στη λίστα.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elm")
# => ["Elm"]
language_list = LanguageList.add(language_list, "Prolog")
# => ["Prolog", "Elm"]
LanguageList.count(language_list)
# => 2

6. Όρισε μια συνάρτηση που προσδιορίζει αν η λίστα περιλαμβάνει μια συναρτησιακή γλώσσα

Όρισε τη συνάρτηση functional_list?/1 που παίρνει 1 όρισμα (μια λίστα γλωσσών). Θα πρέπει να επιστρέφει μια τιμή Boolean. Θα πρέπει να επιστρέφει την τιμή αληθής αν η "Elixir" είναι μία από τις γλώσσες στη λίστα.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elixir")
# => ["Elixir"]
LanguageList.functional_list?(language_list)
# => true
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Elixir Exercism

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

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