Een fatsoenlijke jongeheer zat in een overvolle kerk naast een mooie jongedame en werd als bij donderslag overmand door een hevige passie voor haar. Hij wilde terstond verkering aanvragen, maar de situatie waarin ze zich bevonden maakte een formeel aanzoek onmogelijk. De hoogdringendheid van deze zaak bracht hem echter tot het volgende plan: hij overhandigde beleefd een geopende Bijbel aan zijn lieftallige buurvrouw, waarbij de boekwijzer het vers 2 Johannes 1:5 aanwees.
Een tijdje later gaf ze hem de Bijbel terug, verwijzend naar het vers Ruth 2:10.
Hij gaf haar de Bijbel terug met een verwijzing naar het vers 2 Johannes 1:12.
Hun huwelijk volgde kort na deze Bijbelse conversatie.
De Bijbel is een bundeling van verschillende kortere boeken die los van elkaar en over verschillende periodes geschreven werden, en pas later werden samengevoegd. Sinds het vroege begin van de 13e eeuw werden al deze boeken — op een paar korte na — verder onderverdeeld in hoofdstukken die elk ongeveer één pagina lang zijn. Sinds het midden van de 16e eeuw wordt elk hoofdstuk verder onderverdeeld in verzen van een paar korte regels of zinnen lang. Soms werd een lange zin opgedeeld in verschillende verzen — zoals bijvoorbeeld in Efeziërs 4:1-3 — en soms vormen meerdere korte zinnen één enkel vers — zoals bijvoorbeeld in Genesis 1:2. De gebruikelijke manier om naar een bijbelcitaat te verwijzen is met de naam van het boek, het volgnummer van het hoofdstuk en het volgnummer van het vers. Zo staat Genesis 3:5 bijvoorbeeld voor een fragment uit het boek Genesis, hoofdstuk 3, vers 5.
We geven je een tekstbestand bijbel.txt1, die de volledige (Engelse) tekst van de Bijbel bevat in het volgende formaat:
*** Genesis ***
1:1 In the beginning God created the heaven and the earth.
1:2 And the earth was without form, and void; and darkness was upon the face of
the deep. And the Spirit of God moved upon the face of the waters.
*** Exodus ***
1:1 Now these are the names of the children of Israel, which came into Egypt;
every man and his household came with Jacob.
1:2 Reuben, Simeon, Levi, and Judah,
Deze tekst bestaat uit een aantal opeenvolgende fragmenten. Hierbij bestaat elk fragment uit één of meer opeenvolgende regels en worden de verschillende fragmenten van elkaar gescheiden door minstens één lege regel. Fragmenten die de start van een nieuw bijbelboek aanduiden, beginnen en eindigen met drie sterretjes, met daartussen de naam van het boek (met een extra spatie voor en achter de naam). Alle andere fragmenten stellen de opeenvolgende bijbelverzen voor. Een bijbelvers begint steeds met $$h:v$$ en een spatie, waarbij $$h \in \mathbb{N}_0$$ het volgnummer van een hoofdstuk aanduidt, en $$v \in \mathbb{N}_0$$ het volgnummer van een vers.
Definieer een klasse Bijbel waarmee bijbelcitaten kunnen opgevraagd worden. Bij het aanmaken van een object van deze klasse moet een tekstbestand opgegeven worden. Dit tekstbestand moet de tekst van de Bijbel bevatten, in het formaat dat hierboven werd beschreven. Voorts moeten de objecten minstens over een methode citaat beschikken waaraan de locatie van één of meer opeenvolgende bijbelverzen moet doorgegeven worden, die behoren tot hetzelfde hoofdstuk van hetzelfde bijbelboek. De methode moet de tekst van de opgegeven verzen teruggeven. Voor de locatie van de bijbelverzen wordt een omschrijving gebruikt die één van de volgende twee formaten heeft:
boek hoofdstuk:vers: In dit geval moet de tekst uit de Bijbel teruggegeven worden van het vers met volgnummer vers, uit het hoofdstuk met volgnummer hoofdstuk, uit het boek met naam boek. De tekst van een vers wordt gevormd door alle regels waaruit het vers bestaat achter elkaar te zetten, van elkaar gescheiden door één enkele spatie. Vóór het samenvoegen van de regels dient eerst eventuele witruimte vooraan en achteraan de regel verwijderd te worden.
boek hoofdstuk:start-stop: In dit geval moet de tekst van een aantal opeenvolgende verzen uit de Bijbel teruggegeven worden. Al deze verzen staan in het boek met naam boek, en het hoofdstuk met volgnummer hoofdstuk, te beginnen bij het vers met volgnummer start en eindigend bij het vers met volgnummer stop. Alle regels van een vers moeten op dezelfde manier samengevoegd worden zoals beschreven in het voorgaande item, en de opeenvolgende verzen moeten samengevoegd worden tot één enkele string, telkens van elkaar gescheiden door één enkele spatie.
Bij onderstaande voorbeeldsessie gaan we ervan uit dat het tekstbestand bijbel.txt2 zich in de huidige directory bevindt.
>>> bijbel = Bijbel('bijbel.txt')
>>> bijbel.citaat('2 John 1:5')
'And now I beseech thee, lady, not as though I wrote a new commandment unto thee, but that which we had from the beginning, that we love one another.'
>>> bijbel.citaat('Ruth 2:10')
'Then she fell on her face, and bowed herself to the ground, and said unto him, Why have I found grace in thine eyes, that thou shouldest take knowledge of me, seeing I am a stranger?'
>>> bijbel.citaat('2 John 1:12')
'Having many things to write unto you, I would not write with paper and ink: but I trust to come unto you, and speak face to face, that our joy may be full.'
>>> bijbel.citaat('Ephesians 4:1')
'I therefore, the prisoner of the Lord, beseech you that ye walk worthy of the vocation wherewith ye are called,'
>>> bijbel.citaat('Ephesians 4:2')
'With all lowliness and meekness, with longsuffering, forbearing one another in love;'
>>> bijbel.citaat('Ephesians 4:3')
'Endeavouring to keep the unity of the Spirit in the bond of peace.'
>>> bijbel.citaat('Ephesians 4:1-3')
'I therefore, the prisoner of the Lord, beseech you that ye walk worthy of the vocation wherewith ye are called, With all lowliness and meekness, with longsuffering, forbearing one another in love; Endeavouring to keep the unity of the Spirit in the bond of peace.'