Tracks
/
Elixir
Elixir
/
Übungen
/
Sprachenliste
Sprachenliste

Sprachenliste

Lernübung

Einführung

Listen

Listen sind in Elixir eingebaut. Sie gelten als grundlegender Typ und werden durch eckige Klammern gekennzeichnet. Listen können leer sein oder beliebig viele Elemente beliebigen Typs enthalten. Zum Beispiel:

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

Elixir implementiert Listen als verkettete Liste, bei der jeder Knoten zwei Werte speichert: das erste Element und eine weitere Liste mit allen restlichen Elementen. Das erste Element der Liste wird als Kopf bezeichnet, die restliche Liste als Rest. Diese Notation können wir im Code verwenden:

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

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

Mit der Notation [head | tail] können wir einer Liste Elemente voranstellen:

# Suppose
list = [2, 1]

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

Im Modul Kernel gibt es mehrere Funktionen für die Arbeit mit Listen, ebenso wie das gesamte Modul List.

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

Anleitung

In dieser Übung implementierst du einige Funktionen, um eine Liste von Programmiersprachen zu bearbeiten.

1. Definiere eine Funktion, die eine leere Sprachenliste zurückgibt

Definiere die Funktion new/0, die keine Argumente entgegennimmt und eine leere Liste zurückgibt.

LanguageList.new()
# => []

2. Definiere eine Funktion, die eine Sprache zur Liste hinzufügt

Definiere die Funktion add/2, die 2 Argumente entgegennimmt (eine Sprachenliste und ein String-Literal einer Sprache). Sie sollte die resultierende Liste zurückgeben, wobei die neue Sprache der übergebenen Liste vorangestellt wird.

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

3. Definiere eine Funktion, die eine Sprache aus der Liste entfernt

Definiere die Funktion remove/1, die 1 Argument entgegennimmt (eine Sprachenliste). Sie sollte die Liste ohne das erste Element zurückgeben. Gehe davon aus, dass die Liste immer mindestens ein Element enthält.

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. Definiere eine Funktion, die das erste Element in der Liste zurückgibt

Definiere die Funktion first/1, die 1 Argument entgegennimmt (eine Sprachenliste). Sie sollte die erste Sprache in der Liste zurückgeben. Gehe davon aus, dass die Liste immer mindestens ein Element enthält.

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. Definiere eine Funktion, die zurückgibt, wie viele Sprachen in der Liste sind

Definiere die Funktion count/1, die 1 Argument entgegennimmt (eine Sprachenliste). Sie sollte die Anzahl der Sprachen in der Liste zurückgeben.

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. Definiere eine Funktion, die feststellt, ob die Liste eine funktionale Sprache enthält

Definiere die Funktion functional_list?/1, die 1 Argument entgegennimmt (eine Sprachenliste). Sie sollte einen booleschen Wert zurückgeben. Sie sollte wahr zurückgeben, wenn "Elixir" eine der Sprachen in der Liste ist.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elixir")
# => ["Elixir"]
LanguageList.functional_list?(language_list)
# => true
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Elixir Exercism

Bereit, mit Sprachenliste zu starten?

Melde dich bei Exercism an, um Elixir mit 58 Konzepte168 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.