Beter een goede telefoonbuur dan een verre vriend. Met dat idee ging de redactie van de experimentele nieuwssite Sambal1 van de VRT in december 2014 aan de slag om mensen in Vlaanderen warm te maken om nieuwe vriendschappen aan te gaan. Om het concept uit te testen, stuurde iedereen op de redactie van Sambal alvast onderstaande sms naar zijn of haar telefoonburen, hopend op een antwoord.
Maar wat zijn nu eigenlijk je telefoonburen? Wel, heel eenvoudig, het zijn de personen die bijna hetzelfde telefoonnummer hebben als jezelf, maar dan eentje hoger of lager. Is jouw telefoonnummer bijvoorbeeld 0472/91.39.17, dan heeft je onderbuur het telefoonnummer 0472/91.39.16 en je bovenbuur het telefoonnummer 0472/91.39.18.
Het leren kennen van je telefoonburen gaat in twee stappen. De eerste stap is natuurlijk een bericht sturen. Als er antwoord komt, dan wordt er van de conversatie een screenshot genomen. De beste en leukste screenshots werden verzameld op een tijdelijke Facebookpagina2.
In deze opgave stellen we een telefoonnummer voor als een string die zowel cijfers als andere karakters kan bevatten. Een telefoonnummer bevat altijd minstens één cijfer. De andere karakters zorgen voor een bepaalde opmaak van het telefoonnummer. Zo hebben we bij de voorstelling van het telefoonnummer 0472/91.39.17 voor de opmaak bijvoorbeeld gebruikgemaakt van een extra slash en drie extra punten. Het doel van deze opgave is om de telefoonburen te bepalen van een gegeven telefoonnummer, met behoud van de opmaak van het telefoonnummer. Hiervoor gaan we als volgt te werk:
Schrijf een functie cijfers waaraan een telefoonnummer moet doorgegeven worden. De functie moet een string teruggeven die enkel bestaat uit de cijfers van het gegeven telefoonnummer, in de volgorde waarin ze in het telefoonnummer voorkomen.
Schrijf een functie vervangen waaraan twee argumenten moeten doorgegeven worden: een telefoonnummer en een natuurlijk getal (een int). De functie moet de opeenvolgende cijfers van het gegeven telefoonnummer vervangen door de opeenvolgende cijfers van het gegeven getal, en het resultaat daarvan teruggeven. Indien het gegeven telefoonnummer meer cijfers bevat dan het gegeven getal, dan moeten de extra cijfers vooraan vervangen worden door nullen. Indien het gegeven telefoonnummer minder cijfers bevat dan het gegeven getal, dan moeten de overtollige cijfers op het einde van het getal niet gebruikt worden bij de vervanging.
Gebruik de functies cijfers en vervangen om een functie bovenbuur te schrijven waaraan een telefoonnummer moet doorgegeven worden. De functie moet de bovenbuur van het gegeven telefoonnummer teruggeven.
Gebruik de functies cijfers en vervangen om een functie onderbuur te schrijven waaraan een telefoonnummer moet doorgegeven worden. De functie moet de onderbuur van het gegeven telefoonnummer teruggeven. Hierbij mag de functie ervan uitgaan dat de cijfers van het gegeven telefoonnummer niet allemaal nullen zijn.
>>> cijfers('0472/91.39.17')
'0472913917'
>>> cijfers('++32 (0)9 264 4779')
'32092644779'
>>> vervangen('0472/91.39.17', 1234567890)
'1234/56.78.90'
>>> vervangen('++32 (0)9 264 4779', 123456789)
'++00 (1)2 345 6789'
>>> bovenbuur('0472/91.39.17')
'0472/91.39.18'
>>> bovenbuur('++32 (0)9 264 4779')
'++32 (0)9 264 4780'
>>> onderbuur('0472/91.39.17')
'0472/91.39.16'
>>> onderbuur('++32 (0)9 264 4779')
'++32 (0)9 264 4778'