Track
/
Wren
Wren
/
Esercizi
/
Operazioni su array
Operazioni su array

Operazioni su array

Medio

Istruzioni

Implementa le operazioni di base sugli array.

Nei linguaggi funzionali, le operazioni sugli array come length, map e reduce sono molto comuni. Implementa una serie di operazioni di base sugli array, senza usare le funzioni esistenti.

Il numero preciso e i nomi delle operazioni da implementare dipenderà dal track, per evitare conflitti con i nomi già esistenti, ma le operazioni generali che implementerai includono:

  • append (dati due array, aggiungi tutti gli elementi del secondo array alla fine del primo array);
  • concatenate (data una serie di array, combina tutti gli elementi di tutti gli array in un unico array appiattito);
  • filter (dati un predicato e un array, restituisci l'array di tutti gli elementi per cui predicate(item) è True);
  • length (dato un array, restituisci il numero totale di elementi che contiene);
  • map (date una funzione e un array, restituisci l'array dei risultati dell'applicazione di function(item) a tutti gli elementi);
  • foldl (date una funzione, un array e un accumulatore iniziale, piega (riduci) ogni elemento nell'accumulatore da sinistra);
  • foldr (date una funzione, un array e un accumulatore iniziale, piega (riduci) ogni elemento nell'accumulatore da destra);
  • reverse (dato un array, restituisci un array con tutti gli elementi originali, ma in ordine inverso).

Nota: l'ordine in cui gli argomenti vengono passati alle funzioni fold (foldl, foldr) è significativo.

Implementare le operazioni su List

L'obiettivo di questo esercizio è implementare da te alcuni dei metodi di List. È naturale usare un oggetto List al suo interno per conservare i dati. Non toccare i metodi di List (come where, map, ecc.).

Ci sono alcune operazioni «primitive» su List a cui non si può sfuggire, come:

  • lo slicing: list[from..to]
  • l'aggiunta: list.add(item)

Il protocollo degli iteratori

Le operazioni su List da implementare hanno tutte a che fare con l'iterazione in modi diversi. Informati sul protocollo degli iteratori. Poi potrai fare così:

var list = ListOps.new([1, 2, 3, 4])
for (item in list) {
    do_something_with(item)
}
Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Wren Exercism

Vuoi iniziare Operazioni su array?

Iscriviti a Exercism per imparare e padroneggiare Wren con 117 esercizi e il mentoring di persone reali, tutto gratis.

Approfondimento su Operazioni su array!

Goditi un'introduzione pratica alla ricorsione, esplora le alternative imperative e funzionali a Operazioni su array e approfondisci la ricorsione in coda e le funzioni di accumulo.