Suposem que principi i
fi són enters, i
relacio és una funció de
dos paràmetres que retorna un booleà
(True o
False). Suposarem que
fi - principi
2.
Feu una funció
comprova_funcio(relacio, principi, fi) que
retorna una funció. Aquesta funció retornada,
anomenem-la fret, ha de tenir les següents
característiques: Té una funció f com a
paràmetre, i ha de retornar True si la
relació relacio és compleix per a totes
les parelles adjacents dins la seqüència
f(principi),
f(principi+1),...,
f(fi-1).
Dit d’una altra manera,
comprova_funcio(relacio, principi, fi) ha
de retornar una funció, que podem anomenar
fret, tal que
fret(f) ha de retornar
True si es verifica que:
relacio(f(principi),f(principi+1)) = True
relacio(f(principi+1),f(principi+2)) = True
...
relacio(f(fi-2),f(fi-1)) = True
En altre cas, fret(f) ha de retornar
False
Per exemple, en el joc de proves que veieu més avall:
- La funció comprova_eq amb una funció
f com a argument, és a dir,
comprova_eq(f), comprova que els valors de
f(0), f(1),
f(2), f(3) i
f(4) siguin tals que:
f(0) == f(1),
f(1) == f(2),
f(2) == f(3), i
f(3) == f(4). Si es verifiquen aquestes
quatre igualtats comprova_eq(f) retorna
True, altrament retornarà
False.
- La funció comprova_up amb una funció
f com a argument, és a dir,
comprova_up(f), comprova que els valors de
f(0), f(1),
f(2), f(3) i
f(4) siguin tals que:
f(0) < f(1),
f(1) < f(2),
f(2) < f(3), i
f(3) < f(4). Si es verifiquen aquestes
quatre desigualtats comprova_up(f) retorna
True, altrament retornarà
False.
La funció té tres paràmetres, una funció i dos enters que s’han d’ajustar als requeriments mencionats.
Un cop definida la funció, en provar-la al REPL de Python us hauria de sortir el mateix que podeu observar més avall.
>>> comprova_eq = comprova_funcio(lambda x,y: x == y, 0, 5) >>> comprova_eq(lambda x: 3) True >>> comprova_eq(lambda x: x) False >>> >>> comprova_up = comprova_funcio(lambda x,y: x < y, 0, 5) >>> comprova_up(lambda x: x) True >>> comprova_up(lambda x: 3) False >>>