Beslissen of iets heel lekker is, dan wel totaal niet lekker is kan soms moeilijk zijn. Sommigen vinden heel zoete gerechten misschien lekker, andere totaal niet. Maar zeggen welke gerechten smakeloos zijn is vaak wel objectief vast te stellen. Een recensent die een restaurant bezoekt zal dus van twee gerechten niet zeggen welke de lekkerste is, maar wel van drie gerechten welke ‘het meest gewoon’ is (dus de middelste van de drie is).

Wij willen nu de gerechten toch in de juiste volgorde zetten door de recensent een aantal keer drie gerechten voor te schotelen.


Implementeer de interface TripleSorter1 in een klasse MyTripleSorter. Schrijf hiervoor een functie List<Dish> sorteer(List<Dish> list, Evaluator evaluator) die een gegeven lijst van Dish2 sorteert op basis van de keuze van de Evaluator3. Deze Evaluator heeft intern een volgorde, maar daarover kan je enkel informatie krijgen door drie Dishes tegelijk mee te geven. De Evaluator geeft dan de index terug van het argument dat het ‘gewoonste’ gerecht voorstelt. Als je de Evaluator hetzelfde gerecht tegelijk meermaals meegeeft, is zijn antwoord niet gedefinieerd.

Aangezien je met zo’n Evaluator een lijst niet van zijn omgekeerde kan onderscheiden, zijn beide antwoorden correct.

Opmerking: Je mag de input niet aanpassen en je mag ook geen ingebouwde sorteermethode gebruiken. Indien je dit wel doet, zullen de testen falen.

Gebruik de testklasse SimpleTest4 om je oplossing lokaal te testen. Je kan hierin eenvoudig extra testgevallen toevoegen.