Heb je je ook al eens bedrogen gevoeld bij een "3+1 gratis" actie? Dat winkels hiermee uitpakken en daarbij in de kleine lettertjes schrijven dat je voor elke aankoop van vier producten de goedkoopste gratis krijgt, tot daar aan toe. Waar klanten vooral problemen mee hebben, is dat sommige winkels dit in hun voordeel laten uitdraaien op het ogenblik dat een klant meer dan vier producten aankoopt. Voor "3 + 1 gratis" durven winkels hun kassasysteem vaak zó programmeren dat een klant die $$n$$ producten aankoopt, daarvan de goedkoopste $$\lfloor\frac{n}{4}\rfloor$$ producten gratis krijgt. Hierbij is $$\lfloor x\rfloor$$ het grootste gehele getal dat niet groter is dan $$x \in \mathbb{R}$$.

3 + 1 gratis
(*) Deze actie betekent dat voor elke $$n$$ producten die je aankoopt, je de goedkoopste $$\lfloor\frac{n}{4}\rfloor$$ producten gratis krijgt.

Als klanten eenmaal betaald hebben, beseffen ze achteraf pas dat ze er profijt zouden aan gedaan hebben als ze verschillende keren langs de kassa gepasseerd hadden. Ze zouden immers de gekochte producten kunnen rangschikken van het duurste naar het goedkoopste product, en dan telkens met vier producten langs de kassa passeren. De eerste keer met de vier duurste producten (waarvan ze de goedkoopste gratis krijgen), een tweede keer met de volgende vier duurste producten, enzoverder. Als het aantal aangekochte producten geen veelvoud is van vier, dan zullen ze een laatste keer langs de kassa moeten passeren met minder dan vier producten, en daarbij dus geen product gratis krijgen. 

Opgave

Stel dat je een aantal producten gekocht hebt in een winkel waar een "3+1 gratis" loopt, en waar het kassasysteem in het voordeel van de winkel geprogrammeerd is op een manier zoals omschreven in de inleiding van deze opgave. Je opdracht bestaat erin te bepalen hoeveel winst je zou maken als je niet alle producten in één keer betaalt, maar meerdere keren langs de kassa passeert om telkens het goedkoopste product van een groep van maximaal vier producten gratis te krijgen. Hiervoor moet je vier functies schrijven waaraan telkens een reeks (list of tuple) met $$n \in \mathbb{N}_0$$ reële getallen (float) moet doorgegeven worden. Deze getallen stellen de prijzen van de aangekochte producten voor.

Voorbeeld

>>> prijzen = [3.23, 5.32, 8.23, 2.23, 9.98, 7.43, 6.43, 8.23, 4.23]
>>> samen(prijzen)
49.85
>>> groeperen(prijzen)
[(9.98, 8.23, 8.23, 7.43), (6.43, 5.32, 4.23, 3.23), (2.23,)]
>>> gegroepeerd(prijzen)
44.65
>>> winst(prijzen)
5.2