PROG0180 - Colorful fruits

no tags

Little Lena finds the puzzle below in her large book of puzzles. The goal is to connect the fruit with the correct color. Because Lena is a bit stubborn (or simply a little too small), she take pleasure in randomly connecting the fruits with the colors. She does however make sure that every fruit is only connected with one color and vice versa.

Assignment

Write a function

```combine(colors, fruits[, number])
```

to which two obligatory lists of words (strings) must be given. Also, a third, optional, integer argument number can be given to this function. The function must print a list of strings, every element of which has the format 'a word1 word2'. Here, word1 is a randomly chosen word from the first list, and word2 is a randomly chosen word from the second list. The function must combine until all words of one of both lists are used up, keeping into account that every word from the list can only be used once. If a third argument is given, a maximum of this many combinations in a list are printed.

Tip: Study the way the function choice from the module random works, it is given in The Python Standard Library.

Example

```>>> colors = ['purple', 'yellow', 'green']
>>> fruits = ['grape', 'banana', 'apple']
>>> combine(colors, fruits)
['a purple grape', 'a green banana', 'a yellow apple']
>>> combine(colors, fruits)
['a purple grape', 'a green apple', 'a yellow banana']
>>> combine(colors, fruits)
['a purple apple', 'a yellow grape', 'a green banana']
>>> combine(colors, fruits, number=1)
['a purple grape']
>>> combine(colors, fruits, number=2)
['a yellow apple', 'a green banana']
>>> combine(colors, fruits, number=4)
['a yellow banana', 'a green grape', 'a purple apple']
```

In haar grote puzzelboek vind kleine Lena onderstaande puzzel, waarbij het de bedoeling is om elke fruitsoort met de bijhorende kleur te verbinden. Omdat kleine Lena een beetje tegendraads is (of gewoon nog een beetje te klein), vind ze er haar plezier in om willekeurig de soorten fruit met de kleuren te verbinden. Ze let er wel op dat elke soort fruit hoogstens met één kleur verbonden wordt, en dat elke kleur hoogstens met één fruitsoort verbonden wordt.

Opgave

Schrijf een functie

```combineer(kleuren, fruitsoorten[, aantal])
```

waaraan verplicht twee lijsten van woorden (strings) moeten doorgegeven worden. Optioneel kan ook nog een derde integer argument aantal doorgegeven worden. De functie moet een lijst van strings teruggeven, waarvan elk element de vorm 'een woord1 woord2' heeft. Hierbij is woord1 een willekeurig gekozen woord uit de eerste lijst, en woord2 een willekeurig gekozen woord uit de tweede lijst. De functie moet combinaties maken tot alle woorden uit één van beide lijsten opgebruikt zijn, rekening houdend met het feit dat elk woord uit een lijst hoogstens één keer kan gebruikt worden. Indien een derde argument wordt meegegeven, dan worden hoogstens zoveel combinaties in een lijst teruggegeven.

Hint: Bestudeer de werking van de functie choice uit de module random die wordt meegeleverd in de The Python Standard Library.

Voorbeeld

```>>> kleuren = ['paarse', 'gele', 'groene']
>>> fruitsoorten = ['druif', 'banaan', 'appel']
>>> combineer(kleuren, fruitsoorten)
['een paarse druif', 'een groene banaan', 'een gele appel']
>>> combineer(kleuren, fruitsoorten)
['een paarse druif', 'een groene appel', 'een gele banaan']
>>> combineer(kleuren, fruitsoorten)
['een paarse appel', 'een gele druif', 'een groene banaan']
>>> combineer(kleuren, fruitsoorten, aantal=1)
['een paarse druif']
>>> combineer(kleuren, fruitsoorten, aantal=2)
['een gele appel', 'een groene banaan']
>>> combineer(kleuren, fruitsoorten, aantal=4)
['een gele banaan', 'een groene druif', 'een paarse appel']
```

 Added by: Peter Dawyndt Date: 2011-11-02 Time limit: 10s Source limit: 50000B Memory limit: 1536MB Cluster: Cube (Intel G860) Languages: PY_NBC Resource: None