Submit | All submissions | Best solutions | Back to list |
PROG0473 - Courting in church |
A decent young man was sitting in a crowded church next to a beautiful young lady. Overwhelmed by a burning passion, he instantly fell in love with her. He immediately wanted her to be his girlfriend, but a formal proposal was impossible due to the situation they found themselves in. The urgency of the matter brought him to the following plan: politely he handed his lovely neighbour an opened Bible, the bookmark pointed at verse 2 John 1:5.
A while later she returned the Bible, referring to verse Ruth 2:10.
He offered her the Bible once more, now referring to verse 2 John 1:12.
This Bible conversation was soon followed by their marriage.
Assignment
The Bible is a bundle of various shorter books that were written separately and in different periods. They were only bound later. At the early beginning of the 13th century, all books —apart from a couple — were divided in chapters. Every chapter is about a page long. Since the middle of the 16th century, every chapter was divided into verses that were only a few lines or sentences long. Sometimes, a long sentence was divided into several verses — e.g. Ephesians 4:1-3 — and sometimes a number of shorter sentences made a single verse — e.g. Genesis 1:2. Usually, the Bible is quoted as followed: the name of the book, the serial number of the chapter and the number of the verse. This way, Genesis 3:5 refers to a section from the book Genesis, chapter 3, verse 5.
We are giving you a text file bible.txt, that contains the entire (English) text from the Bible in the following format:
*** 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,
This text consists of a number of consecutive fragments. With this, every fragment consists of multiple consecutive lines and all fragments are separated by at least one line. Fragments that indicate a new Bible book, start and end with three stars, in between those stars is the name of the book (with an extra space before and after the name). All other fragments introduce the consecutive Bible verses. A Bible verse always starts with $h:v$ and a space. $h \in \mathbb{N}_0$ indicates the serial number of a chapter, $v \in \mathbb{N}_0$ indicates the serial number of a verse.
Define a class Bible which can recall Bible quotations. This class takes a text file as an argument to instantiate. This text file must contain text from the Bible, in the format given above. Furthermore, all objects should contain at least a method quotation, that takes the location of one or more consecutive Bible verses from the same chapter from the same Bible book as an argument. The method has to return the text of the verses. For the location of the Bible verses, a description is used that should have one of the following formats:
- book chapter:verse: In this case, the text from the Bible should be printed from the verse with serial number verse, from the chapter with serial number chapter, from the book with serial number book. The text from a verse is formed by putting all lines from the verse behind one another, separated by a single space. Before merging the lines, any white space before or after the line should be deleted.
- book chapter:start-stop: In this case, the text should print a number of consecutive Bible verses. All these verses come from the book named book, and from the chapter with serial number chapter, starting from the verse with serial number start and ending with the serial number stop. All lines of a verse should be merged in the same way as described in the previous item, and the successive verses should be merged into one single string, separated by a single space each time.
Example
In the example session below, we assume that the text file bible.txt is situated in the current directory.
>>> bible = Bible('bible.txt') >>> bible.quotation('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.' >>> bible.quotation('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?' >>> bible.quotation('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.' >>> bible.quotation('Ephesians 4:1') 'I therefore, the prisoner of the Lord, beseech you that ye walk worthy of the vocation wherewith ye are called,' >>> bible.quotation('Ephesians 4:2') 'With all lowliness and meekness, with longsuffering, forbearing one another in love;' >>> bible.quotation('Ephesians 4:3') 'Endeavouring to keep the unity of the Spirit in the bond of peace.' >>> bible.quotation('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.'
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.
Opgave
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.txt, 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.
Voorbeeld
Bij onderstaande voorbeeldsessie gaan we ervan uit dat het tekstbestand bijbel.txt 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.'
Added by: | Peter Dawyndt |
Date: | 2014-04-12 |
Time limit: | 10s |
Source limit: | 50000B |
Memory limit: | 1536MB |
Cluster: | Cube (Intel G860) |
Languages: | PY_NBC |
Resource: | None |