PROG0201 - Electoral fraud

no tags 

For a popular singing contest that is broadcast on TV the organizers have hired a company that will develop a system with which one can vote for the different contestants via text message. According to the rules of the competition, it is only possible to vote once with every mobile phone. Only the first vote that was sent from a certain telephone is saved in the competition's database. At least, that was the intention. Because of a bug in the software (or maybe even malicious intent), multiple votes per telephone were registered. can you find out which telephones have cast multiple votes? 

Assignment

Write a function doubles to which a list of strings or integers must be given as a parameter. This parameter could represent, for example, a list of telephone numbers that have cast a registered vote for a contestant of the singing contest. As a result, the function must print a list that contains all elements that occur more than once in the original list (in this case: the telephone numbers that have cast more than one vote). These elements must be in an increasing order in the list that was printed as result.

Example

>>> doubles([3, 9, 4, 3, 8, 7, 3, 4, 2])
[3, 4]
>>> doubles([1, 2, 3, 4, 5, 6, 7, 8, 9])
[]
>>> doubles([8, 6, 9, 5, 7, 4, 8, 3])
[8]
>>> doubles(['0476-987394', '0498-837493', '0476-987394'])
['0476-987394']

Voor een populaire zangwedstrijd die op TV wordt uitgezonden, heeft de wedstrijdorganisatie een bedrijf onder de arm genomen om een systeem te ontwikkelen waarmee per SMS kan gestemd worden voor de verschillende kandidaten. Volgens het wedstrijdreglement kan per telefoontoestel hoogstens één keer gestemd worden. Enkel de eerste stem die vanaf een bepaald toestel wordt uitgebracht wordt dus in de databank van de zangwedstrijd opgeslaan. Dat was althans toch de bedoeling. Door een bug in de software (het wordt ook niet uitgesloten dat er kwaad opzet in het spel is) werden er mogelijks toch meerdere stemmen per toestel geregistreerd. Kan je uitvissen welke toestellen meerdere stemmen hebben uitgebracht?

Opgave

Schrijf een functie dubbels waaraan als parameter een lijst van strings of integers moet doorgegeven worden. Deze parameter stelt bijvoorbeeld een lijst van GSM-nummers voor die een geregistreerde stem hebben uitgebracht voor een kandidaat van de zangwedstrijd. De functie moet als resultaat een lijst teruggeven die alle elementen bevat die meerdere keren voorkomen in de originele lijst (in casu de GSM-nummers die meer dan één stem hebben uitgebracht). Deze elementen moeten in oplopende volgorde gerangschikt staan in de lijst die als resultaat wordt teruggegeven.

Voorbeeld

>>> dubbels([3, 9, 4, 3, 8, 7, 3, 4, 2])
[3, 4]
>>> dubbels([1, 2, 3, 4, 5, 6, 7, 8, 9])
[]
>>> dubbels([8, 6, 9, 5, 7, 4, 8, 3])
[8]
>>> dubbels(['0476-987394', '0498-837493', '0476-987394'])
['0476-987394']


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