L’Esperanto és una llengua artificial és a dir, creada de manera expressa per humans, en contrast amb les altres llengües que s’anomenen naturals, com per exemple, el català. Va ser creada pel oftalmòleg jueu polonès Ludwik Lejzer Zamenhof. La seva intenció era crear una llengua que no fos de ningú i que, alhora, pogués ser de tothom qui ho volgués, facilitant així l’entesa entre parlants de llengües diferents, de manera que no fos un dels dos parlants qui hagués de cedir cap a l’altra llengua, sinó que tots dos haguessin de cedir i fer servir aquesta llengua auxiliar.
L’Esperanto té 16 regles gramaticals, i en aquesta pràctica en farem servir dues:
La pràctica consisteix en tres exercicis que cal fer de manera acumulativa (aquesta n’és la tercera part). Això vol dir que per a fer aquesta tercera part, caldrà fer servir el que hagueu fet (si funciona bé) a la primera part.
La primera part de la pràctica consistirà en, donat una seqüència d’entrada amb aquest format:
paraula_1
paraula_2
paraula_3
...
paraula_n
FINO
on cada paraula paraula_i
acabarà en la lletra o
o en la lletra a, fer la funció
entraSeq ()
o
o en a
. No estan necessàriament en
ordre alfabètic, i no hi ha cap repetit.NOMS
i ADJECTIUS
tals
que NOMS
conté totes les paraules que apareixen al canal
d’entrada i que acaben en la lletra o en el mateix
ordre en què apareixen al canal d’entrada.
La llista ADJECTIUS
contindrà totes les que acaben en a.Com podeu veure, aquesta funció no rep cap paràmetre, i simplement torna dues llistes, una amb les paraules que acaben en o i una altra amb les paraules que acaben en a.
La tercera part consisteix a fer una funció que, donats dos
vectors NOMS
i ADJECTIUS
formi totes les possibles
combinacions de adjectiu1 adjectiu2 i nom (separats per un espai).
Concretament, la funció serà aquesta:
calculaTriples(NOMS,ADJECTIUS)
NOMS
és un vector que conté paraules que acaben en la
lletra o.
ADJECTIUS
és un vector que conté paraules que acaben en la
lletra a. adjectiu1 adjectiu2 nom
, separats per un espai.
En aquest cas, cal fer totes les possibles combinacions,
sempre i quan adjectiu1
≠ adjectiu2
.
Per exemple, si ADJECTIUS = ['bona','granda']
i NOMS = ['viro']
, el resultat hauria de ser la llistaR = ['bona granda viro', 'granda bona viro']
.
Com es pot observar, l’ordre de les combinacions
ha de respectar l’ordre que hi ha en els vectors NOMS
i ADJECTIUS
.
Recordeu que podeu concatenar strings
fent servir l’operador
de suma. Per exemple, "bona" + " " + "domo"
avalua a
"bona domo"
.
Observació
Només cal que enviïs el fitxer amb la funció (i les funcions auxiliars que hagis fet)
que et demanem i prou.
El fitxer main.py
et pot servir per a fer la teva solució, però no cal que n’enviïs
el contingut.
Entrada
paraula1 paraula2 ...
acabada en la paraula FINO
Sortida
Dos vectors que contenen els noms (acabats en o) del canal d’entrada i els adjectius (acabats en a).
Donats els dos vectors anteriors, totes les parelles adjectiu nom.
Donats els dos primers vectors, totes les parelles adjectiu1 adjectiu2 nom tals que adjectiu1 ≠ adjectiu2.
Input
afabla akvo alta besto domo FINO
Output
Noms: ( 3 ) akvo besto domo Adjectius: ( 2 ) afabla alta Triples: afabla alta akvo afabla alta besto afabla alta domo alta afabla akvo alta afabla besto alta afabla domo
Input
ronda linio malpeza mondo nova FINO
Output
Noms: ( 2 ) linio mondo Adjectius: ( 3 ) ronda malpeza nova Triples: ronda malpeza linio ronda malpeza mondo ronda nova linio ronda nova mondo malpeza ronda linio malpeza ronda mondo malpeza nova linio malpeza nova mondo nova ronda linio nova ronda mondo nova malpeza linio nova malpeza mondo