Trilhas
/
Elixir
Elixir
/
Exercícios
/
Lista de linguagens
Lista de linguagens

Lista de linguagens

Exercício de aprendizagem

Introdução

Listas

As listas são nativas da linguagem Elixir. Elas são consideradas um tipo básico, representado por colchetes. As listas podem estar vazias ou conter qualquer número de itens de qualquer tipo. Por exemplo:

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

O Elixir implementa listas como uma lista encadeada, em que cada nó armazena dois valores: o primeiro item e outra lista com todos os itens restantes. O primeiro item da lista é chamado de cabeça e a lista restante de itens é chamada de cauda. Podemos usar essa notação no código:

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

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

Podemos usar a notação [head | tail] para adicionar elementos ao início de uma lista:

# Suppose
list = [2, 1]

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

Há várias funções no módulo Kernel para trabalhar com listas, assim como todo o módulo List.

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

Instruções

Neste exercício, você precisa implementar algumas funções para manipular uma lista de linguagens de programação.

1. Defina uma função que retorna uma lista de linguagens vazia

Defina a função new/0, que não recebe argumentos e retorna uma lista vazia.

LanguageList.new()
# => []

2. Defina uma função que adiciona uma linguagem à lista

Defina a função add/2, que recebe 2 argumentos (uma lista de linguagens e um literal de string de uma linguagem). Ela deve retornar a lista resultante com a nova linguagem adicionada no início da lista recebida.

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

3. Defina uma função que remove uma linguagem da lista

Defina a função remove/1, que recebe 1 argumento (uma lista de linguagens). Ela deve retornar a lista sem o primeiro item. Considere que a lista sempre terá pelo menos um item.

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. Defina uma função que retorna o primeiro item da lista

Defina a função first/1, que recebe 1 argumento (uma lista de linguagens). Ela deve retornar a primeira linguagem da lista. Considere que a lista sempre terá pelo menos um item.

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. Defina uma função que retorna quantas linguagens há na lista

Defina a função count/1, que recebe 1 argumento (uma lista de linguagens). Ela deve retornar o número de linguagens na lista.

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. Defina uma função que determina se a lista inclui uma linguagem funcional

Defina a função functional_list?/1, que recebe 1 argumento (uma lista de linguagens). Ela deve retornar um valor Boolean. Ela deve retornar true se "Elixir" for uma das linguagens da lista.

language_list = LanguageList.new()
# => []
language_list = LanguageList.add(language_list, "Elixir")
# => ["Elixir"]
LanguageList.functional_list?(language_list)
# => true
Editar via GitHub O link abre em uma nova janela ou aba
Elixir Exercism

Tudo pronto para começar Lista de linguagens?

Crie sua conta no Exercism para aprender e dominar Elixir com 58 conceitos168 exercícios e mentoria humana de verdade, tudo de graça.