PROG0342 - Roses are red

The modern version of an English poem goes as follows

Roses are red,
Violets are blue,
Sugar is sweet,
And so are you
.
roses are red
Illustration of William Wallace Denslow for "Roses are red" in an edition of Mother Goose from 1901.

The origin of this poem is unknown, but it can minimally be traced back to the following lines that Sir Edmund Spenser wrote in 1590 in his epic The Faerie Queen (Book three, Canto 6, Stanza 6):

It was upon a Sommers shynie day,
When Titan faire his beames did display,
In a fresh fountaine, farre from all mens vew,
She bath'd her brest, the boyling heat t'allay;
She bath'd with roses red, and violets blew,
And all the sweetest flowers, that in the forrest grew.

It also turned up in Gammer Gurton's Garland or the Nursery Parnassus: A Choice Collection of Pretty Songs and Verses, a collection of English nursery rhymes from 1784.

The rose is red, the violet's blue,
The honey's sweet, and so are you.
Thou are my love and I am thine;
I drew thee to my Valentine:
The lot was cast and then I drew,
And Fortune said it shou'd be you.

Victor Hugo supposedly knew the work of Spenser, but it is doubtful that he knew the English nursery rhyme when he published Les Misérables in 1862. Hugo was both a poet and an author, and the text from his novel is interlarded with many songs. One of these songs — sung by the character Fantine — contains the following chorus:

Nous achèterons de bien belles choses avec notre argent
En nous promenant le long des faubourgs.
Les bleuets sont bleus, les roses sont roses,
Les bleuets sont bleus, j'aime mes amours.

Assignment

The assignment consists of making up different versions of the poem, where mainly the colors of the flowers in the last two lines are adapted. Write a function poem that prints a variant of the modern version as a string of four lines. The fragments in italics from the introduction can be adapted. In order to do so, the function has four optional parameters:

  • roses: the color of the roses can be given to this parameter
  • violets: the color of the violets can be given to this parameter
  • line3: the third line of the poem can be given to this parameter (the comma excepted)
  • line4: the last line of the poem can be given to this parameter (the ending period excepted)

Make sure that the standard values of these optional parameters are constructed in a way that the original version of the poem can be printed if no arguments are given to the function. 

Example

>>> print(poem()) 
Roses are red,
Violets are blue,
Sugar is sweet,
And so are you.
>>> print(poem('yellow', line3='Sugar is white')) 
Roses are yellow,
Violets are blue,
Sugar is white,
And so are you.
>>> print(poem(line4='My sweet sixteen', violets='green')) 
Roses are red,
Violets are green,
Sugar is sweet,
My sweet sixteen.

De moderne versie van een Engels gedicht luidt

Roses are red,
Violets are blue,
Sugar is sweet,
And so are you
.
roses are red
Illustratie van William Wallace Denslow voor "Roses are red" in een editie van Mother Goose uit 1901.

De oorsprong van dit gedicht is onbekend, maar de vroegste sporen ervan gaan terug naar de volgende regels die Sir Edmund Spenser in 1590 neerschreef in zijn epos The Faerie Queen (Boek drie, Canto 6, Stanza 6):

It was upon a Sommers shynie day,
When Titan faire his beames did display,
In a fresh fountaine, farre from all mens vew,
She bath'd her brest, the boyling heat t'allay;
She bath'd with roses red, and violets blew,
And all the sweetest flowers, that in the forrest grew.

Het dook ook op in Gammer Gurton's Garland or the Nursery Parnassus: A Choice Collection of Pretty Songs and Verses, een collectie van Engelstalige kinderliedjes uit 1784.

The rose is red, the violet's blue,
The honey's sweet, and so are you.
Thou are my love and I am thine;
I drew thee to my Valentine:
The lot was cast and then I drew,
And Fortune said it shou'd be you.

Victor Hugo kende vermoedelijk wel het werk van Spenser, maar het is twijfelachtig of hij ook het Engelse kinderliedje kende toen hij in 1862 de roman Les Misérables uitbracht. Hugo was zowel dichter als romanschrijver, en de tekst van zijn roman is dan ook doorspekt van de vele liedjes. Een van deze liedjes — gezongen door het personage Fantine — bevat het volgende refrein:

Nous achèterons de bien belles choses avec notre argent
En nous promenant le long des faubourgs.
Les bleuets sont bleus, les roses sont roses,
Les bleuets sont bleus, j'aime mes amours.

Opgave

De sport bestaat erin om verschillende varianten van het gedicht te verzinnen, waarbij vooral de kleuren van de bloemen en de laatste twee versregels aangepast worden. Schrijf een functie gedicht die een variant van de moderne versie van het gedicht teruggeeft als string bestaande uit vier versregels. Daarbij moeten de cursieve fragmenten van de weergave uit de inleiding kunnen aangepast worden. Daarvoor heeft de functie vier optionele parameters:

  • roses: hieraan kan de kleur van de rozen doorgegeven worden
  • violets: hieraan kan de kleur van de viooltjes doorgegeven worden
  • line3: hieraan kan de derde versregel doorgegeven worden (behalve de afsluitende komma)
  • line4: hieraan kan de laatste versregel doorgegeven worden (behalve het afsluitende punt)

Zorg ervoor dat de standaardwaarden van deze optionele parameters zo ingesteld worden, dat de oorspronkelijke versie van het gedicht wordt teruggegeven indien er geen argumenten aan de functie doorgegeven worden.

Voorbeeld

>>> print(gedicht()) 
Roses are red,
Violets are blue,
Sugar is sweet,
And so are you.
>>> print(gedicht('yellow', line3='Sugar is white')) 
Roses are yellow,
Violets are blue,
Sugar is white,
And so are you.
>>> print(gedicht(line4='My sweet sixteen', violets='green')) 
Roses are red,
Violets are green,
Sugar is sweet,
My sweet sixteen.

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

© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.