Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porGermán Escobar Montero Modificado hace 8 años
1
L ENGUAJE DE E SPECIFICACIÓN Algoritmos y Estructuras de Datos I Especificación – Práctica 4 AEDI Especificación – Práctica 4 1
2
M ÁS EJERCICIOS CON SECUENCIAS Especificar el problema de, dada una lista de enteros, devolverla ordenada. problema ordenar(a:[Z]) { modifica : a; asegura : mismos(pre(a),a); asegura : ( i <- [0..|pre(a)|-1)) a[i] ≤ a[i+1]; } AEDI 2 Especificaión - Práctica 4
3
M ÁS EJERCICIOS CON SECUENCIAS Dadas dos listas de enteros s y t y un entero z, devolver la lista de pares que sumen z. Ejemplo: z = 6, s = [1,0,3] y t = [5,6,3] -> res = [(1,5),(0,6),(3,3)] problema paresQueSuman(s,t:[Z],z:Z) = res:[(Z,Z)] { asegura : mismos(res, [(x,y)|x <- s, y <- t, x+y == z]); } AEDI 3 Especificaión - Práctica 4
4
M ÁS EJERCICIOS CON SECUENCIAS Especificar un problema que, dada una lista, devuelva una lista con todas sus sublistas. Ejemplo: s = [1,0,3], res = [[],[1],[0],[3],[1,0],[0,3],[1,0,3]] problema sublistas(a:[Z]) = res:[[Z]] { asegura : mismos(res, [] ++ [a[i..j]| i<-[0..|a|), j<-[i.. |a|) ]); } AEDI 4 Especificaión - Práctica 4
5
M ÁS EJERCICIOS CON SECUENCIAS Especificar el auxiliar que, dada una lista de enteros, devuelva el bool que determina si la lista es una escalera. Ejemplo1: a = [1,2,3] -> true Ejemplo2: a = [1,2,4] -> false aux esEscalera(a:[Z]):Bool = ( i <- [0..|a|-1)) a[i+1] == a[i] + 1; AEDI 5 Especificaión - Práctica 4
6
M ÁS EJERCICIOS CON SECUENCIAS Especificar el problema de, dada una lista de enteros, devolver un par de enteros con la posición de la escalera mas larga como primer elemento, y la longitud de la misma como segundo elemento. problema escaleraMásLarga(a:[Z]) = res:(Z,Z) { requiere: |a|>0 asegura: 0 < prm(res) < prm(res) + snd(res) ≤ |a| asegura: esEscalera(a[prm(res)..prm(res)+snd(res))) asegura: ( i<-[0..|a|), j<-[i..|a|), esEscalera(a[i..j])) |a[i..j]| ≤ snd(res) } AEDI 6 Especificaión - Práctica 4
7
M ÁS EJERCICIOS CON SECUENCIAS Especificar el problema de, dada una lista de enteros, devolver en otra los mismos elementos que en la original pero se les suma a los de las posiciones impares 5. Adicionalmente en la original solo quedan los de las posiciones pares multiplicados por 3. Ejemplo: a=[1,2,3] -> a=[1*3,3*3] y res=[1,2+5,3] problema ejercicioRaro(a:[Z]) = res : [Z] { modifica : a; asegura : |res| == |a|; asegura : mismos(a,[pre(a)[i]*3|i<-[0…|pre(a)|),i mod 2==0]); asegura : ( i <- [0..|res|)) (i mod 2==0 -> res[i] == pre(a)[i]) && (i mod 2!=0 -> res[i] == pre(a)[i] + 5) } AEDI 7 Especificaión - Práctica 4
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.