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.
La descrizione di questo esercizio qui sopra è condivisa da tutte le track di Exercism.
Per essere coerenti con la libreria standard di Elixir, le funzioni usate da foldl e foldr dovrebbero prendere l'elemento come primo argomento e l'accumulatore come secondo.
Inoltre, per non entrare in conflitto con la funzione Kernel.length/1, importata automaticamente, la funzione che conta la lunghezza si chiamerà count.
Uno o più test di questo esercizio sono stati contrassegnati come :slow, perché potrebbero metterci molto tempo a terminare. Per questo motivo non verranno eseguiti sulla piattaforma dal test runner automatico. Se stai risolvendo questo esercizio direttamente sulla piattaforma, nell'editor web, potresti invece valutare di scaricarlo sul tuo computer. Così potrai eseguire tutti i test e verificare l'efficienza della soluzione.
Iscriviti a Exercism per imparare e padroneggiare Elixir con 58 concetti168 esercizi e il mentoring di persone reali, tutto gratis.
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.