Track
/
Elixir
Elixir
/
Esercizi
/
Elenco di linguaggi
Elenco di linguaggi

Elenco di linguaggi

Esercizio di apprendimento

Introduzione

Array

Gli array sono integrati nel linguaggio Elixir. Sono considerati un tipo di base, indicati dalle parentesi quadre ([]). Gli array possono essere vuoti o contenere un numero qualsiasi di elementi di qualsiasi tipo. Per esempio:

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

Elixir implementa gli array come una lista concatenata, in cui ogni nodo memorizza due valori: il primo elemento e un altro array con tutti gli elementi rimanenti. Il primo elemento dell'array è chiamato «head» e l'array di elementi rimanenti è chiamato «tail». Possiamo usare questa notazione nel codice:

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

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

Possiamo usare la notazione [head | tail] per anteporre elementi a un array:

# Suppose
list = [2, 1]

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

Ci sono diverse funzioni nel modulo Kernel per lavorare con gli array, oltre all'intero modulo List.

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

Istruzioni

In questo esercizio devi implementare alcune funzioni per manipolare un array di linguaggi di programmazione.

1. Definisci una funzione che restituisce un array di linguaggi vuoto

Definisci la funzione new/0 che non prende argomenti e restituisce un array vuoto.

LanguageList.new()
# => []

2. Definisci una funzione che aggiunge un linguaggio all'array

Definisci la funzione add/2 che prende 2 argomenti (un array di linguaggi e una stringa letterale di un linguaggio). Deve restituire l'array risultante, con il nuovo linguaggio anteposto all'array dato.

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

3. Definisci una funzione che rimuove un linguaggio dall'array

Definisci la funzione remove/1 che prende 1 argomento (un array di linguaggi). Deve restituire l'array senza il primo elemento. Supponi che l'array abbia sempre almeno un elemento.

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. Definisci una funzione che restituisce il primo elemento dell'array

Definisci la funzione first/1 che prende 1 argomento (un array di linguaggi). Deve restituire il primo linguaggio nell'array. Supponi che l'array abbia sempre almeno un elemento.

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. Definisci una funzione che restituisce quanti linguaggi ci sono nell'array

Definisci la funzione count/1 che prende 1 argomento (un array di linguaggi). Deve restituire il numero di linguaggi nell'array.

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. Definisci una funzione che determina se l'array include un linguaggio funzionale

Definisci la funzione functional_list?/1 che prende 1 argomento (un array di linguaggi). Deve restituire un valore booleano. Deve restituire true se «Elixir» è uno dei linguaggi nell'array.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elixir")
# => ["Elixir"]
LanguageList.functional_list?(language_list)
# => true
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Elixir Exercism

Vuoi iniziare Elenco di linguaggi?

Iscriviti a Exercism per imparare e padroneggiare Elixir con 58 concetti168 esercizi e il mentoring di persone reali, tutto gratis.