PROG0435 - Pig Latin

no tags 

Pig Latin (or Igpay Atinlay in Pig Latin) is an English language game that is mainly popular with young children. They like to use it as a secret language for amusement or to converse in perceived privacy from other persons. The reference to Latin is a deliberate misnomer. It is simply a form of jargon, used only for its English connotations as a strange and foreign-sounding language.

The usual rules to convert English words into Pig Latin are as follows: 

  • For words that begin with a vowel the suffix -way is added at the end of the word.
  • For words that begin with a series of consonants, the initial consonant cluster is moved to the end of the word and the -ay is appended. In case the letter u is preceded by the letter q, the letter u is also considered to be a consonant.
  • If the first letter of the word was an upper case letter, the first letter of the transformed word should also be converted into upper case. If the first vowel of a word is lower case, the first letter of the transformed word (a consonant) needs to converted into lower case. For all other letters, the use of lower and upper case letters is retained.

fun fact: Among other "languages", Google provides an option for displaying the site in Pig Latin. Images becomes Imagesway, Blogger Oggerblay, and Sign In Ignsay Inway.

Assignment

  • Write a function pigword that takes a word as a string argument. The word should only contain letters. The function must return the transformed word according to the rules of Pig Latin. Keep in mind the rules for upper case and lower case letters as described above.
  • Write a function piglatin that translates a given sentence into Pig Latin version. This is done by translating the individual words of the sentence according the rules of Pig Latin. Words are defined as the longest possible sequence of letters. All characters of the sentence that are not letters (punctuation marks, digits, white space, …) must remain unchanged in the translated sentence.

Example

>>> pigword('egg')
'eggway'
>>> pigword('Pig')
'Igpay'
>>> pigword('Latin')
'Atinlay'
>>> pigword('trash')
'ashtray'
>>> pigword('quit')
'itquay'
>>> pigword('BaNaNa')
'ANaNabay'
>>> pigword('DNa')
'AdNay'
>>> pigword('plover')
'overplay'
>>> pigword('plunder')
'underplay'

>>> piglatin('And now for something completely different!')
'Andway ownay orfay omethingsay ompletelycay ifferentday!'
>>> piglatin('Stwike him, centuwion, stwike him vewy wuffly')
'Ikestway imhay, entuwioncay, ikestway imhay ewyvay ufflyway'

Varkenslatijn (of Pig Latin in het Engels, of Igpay Atinlay in het Pig Latin) is een Engels taalspelletje dat vooral populair is bij kinderen. Die gebruiken het als geheimtaal of louter voor de grap. Met Latijn heeft dit taalspelletje niets te maken. De verwijzing naar deze taal is zuiver gebaseerd op de associatie met een vreemde, onbegrijpbare taal.

Het principe van varkenslatijn is eenvoudig. Engelse woorden worden vervormd met behulp van twee eenvoudige regels:

  • Voeg het achtervoegsel -way toe aan woorden die beginnen met een klinker.
  • Bij woorden die beginnen met één of meer medeklinkers, worden deze naar het einde van het woord verplaatst. Hieraan wordt het achtervoegsel -ay toegevoegd. Wanneer de letter u voorafgegaan wordt door de letter q, dan wordt deze ook als een medeklinker beschouwd.
  • Als de eerste letter van het woord een hoofdletter was, dan wordt de eerste letter van het vervormde woord ook omgezet naar een hoofdletter. Als de eerste klinker van het woord een kleine letter was, dan wordt de eerste letter van het woord (de eerste medeklinker dus) met een kleine letter geschreven in het vervormde woord. Voor de andere letters blijft het gebruik van hoofdletters en kleine letters behouden.

Leuk weetje: Naast andere "talen" biedt Google ook een optie aan om de website weer te geven in Pig Latin. Images wordt dan Imagesway, Blogger wordt Oggerblay, en Sign In wordt Ignsay Inway.

Opgave

  • Schrijf een functie varkenswoord waaraan een (Engels) woord moet doorgegeven worden. Dat woord mag enkel uit letters bestaan. De functie moet de verlatijnste versie van het woord teruggeven volgens de regels van het varkenslatijn. Hou hierbij ook rekening met de regels voor hoofdletters en kleine letters zoals die hierboven beschreven werden.
  • Schrijf een functie varkenslatijn die een gegeven zin omzet naar zijn verlatijnste versie. Hierbij moeten alle individuele woorden verlatijnst worden volgens de regels van het varkenslatijn. Woorden worden daarbij gedefinieerd als de langste mogelijke reeks van letters. Alle karakters van de zin die geen letter zijn (leestekens, cijfers, spaties, …) moeten ongewijzigd overgenomen worden in de verlatijnste versie van de zin.

Voorbeeld

>>> varkenswoord('egg')
'eggway'
>>> varkenswoord('Pig')
'Igpay'
>>> varkenswoord('Latin')
'Atinlay'
>>> varkenswoord('trash')
'ashtray'
>>> varkenswoord('quit')
'itquay'
>>> varkenswoord('BaNaNa')
'ANaNabay'
>>> varkenswoord('DNa')
'AdNay'
>>> varkenswoord('plover')
'overplay'
>>> varkenswoord('plunder')
'underplay'

>>> varkenslatijn('And now for something completely different!')
'Andway ownay orfay omethingsay ompletelycay ifferentday!'
>>> varkenslatijn('Stwike him, centuwion, stwike him vewy wuffly')
'Ikestway imhay, entuwioncay, ikestway imhay ewyvay ufflyway'


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