itsanii4 behöver inte mer hjälp
itsanii4 89
Postad: 1 dec 2021 10:52

Number of occurrences in a list

Jag ska skapa en funktion i haskell som räknar hur många gånger ett element uppstår i en lista. Det som ska returneras är själva elementet och siffran bredvid som står för hur många gånger elementet förekom. Ett exempel är  pairsCount [("hello","me"),("me","hello"),("yes","no")]. Då blir svaret [(("hello","me"),2), (("yes","no"),1)]. 

Jag tänker att man skapa två funktioner. Den ena räknar och den andra tar bort samma element (ifall det upprepas) och samtidigt returnerar listan med elementen och siffran. 

Programmeraren 3390
Postad: 1 dec 2021 15:19

Jag kan inte Haskell men rent generellt: Om du kan använda en Hashmap där det ordnade Pair:et är nyckeln och antal är värdet räcker det med att loopa igenom, vända på paret om de inte står i bokstavsordning, skapa/hämta räknaren för Pair-nyckeln och inkrementera den (och stoppa tillbaka det uppdaterade värdet).

Har du inget snabbt uppslag av vilka par du redan har (som en hashmap) riskerar du att loopa resultatlistan för varje element i inlistan. Det blir dyrt när listan är lång eftersom som antalet varv växer kvadratiskt. Men kan fungera som en första version.

Svara
Close