Ejercicio 3 Describe informalmente las siguientes bla bla bla....
a) [0,1,2,3,4,5]
b) [1,2,3,4,5,6]
c) [(0,1), (3,4), (6,7)....(15,16)]
d) [(0,0) (0,1) (1,0) (1,1)]
e)no lo entiendo... ¿ [ [] ] ?
y f) g) h) I) dentro de un par de horas los posteo .....si me salen.... si encuentran el error avisen!!! grax!
Explico un cacho el e) que estuvimos discutiendo con pape hace un rato (denle parte de credito a el):
$$[[]\;| \; x \leftarrow \; [[],[0],[0,1],[0,1,2]] \;]$$
Buen, este ejercicio confunde porq la "expresion" no involucra la "x", es mas, es un [] ... cosa rara... asi que hay q pensarlo desde lo teorico, en una lista por comprension de la forma [ expresion | selectores , condiciones ], la/s variable/s que aparecen en los selectores, van a ir tomando sus respectivos valores 1 por 1, luego pasan por la condicion, si esta no se cumple, se pasa al siguiente valor de la variable.. sino, se pasa ese valor a la expresion, la expresion hace lo suyo y ese valor resultante se agrega como elemento a una nueva lista, y empieza el proceso de vuelta hasta q se acaben los valores posibles en los selectores.. y esa "lista nueva" q dije antes, va a ser el resultado de la lista por compresion...
Ok, aplicando esto al ejercicio:
Primero notamos que no hay condiciones, o sea siempre es True, asi que cada valor que tome la variable "x" va a ir a parar a la expresion... Empezemos, "x" toma el primer valor de \([[],[0],[0,1],[0,1,2]]\) o sea, el []. Eso se lleva a la expresion, pero la joda aca pasa por q la expresion NO depende de x, solo devuelve [].. asi q ese va a ser el primer elemento de la lista resultante.
Ahora, el siguiente valor, x = [0]... pero misma historia, se agrega otro elemento [] a la lista final... y lo mismo va a pasar con [0,1], [0,1,2].. entonces el resultado va a ser la lista [ [], [], [], [] ] y fin del ejercicio.
Algo para notar de esto, es q no interesa que valores tomo x, sino cuantos valores tomo.. yo pude haber redefinido el ejercicio como \([[]\;| \; x \leftarrow \; [1,2,1234,35353] \;]\) y me iba a resultar, otra vez, [ [], [], [], [] ]
Yo justo tuve unos problemitas con esos ultimos..
en el f y g la lista te quedan pares ordenados de dos tipos distintos \((\mathbb{Z}, [\mathbb{Z}] )\) y \((Bool, [Bool])\) Vale hacer eso??
en el g, guarda que te queda una secuencia de secuencia de enteros.. ! : [[],[19],[28]...etc]
Y en el i alguna duda tenia pero ahora ni me acuerdo.. =S
Gracias por postear
El i está mal definido esto: agregar2Digitos (xs : [Z]) : [[Z]], para mí es agregar2Digitos (xs : [Z]) : [Z] por cómo está definido concat, es imposible que de aplicarle concat a algo de [[Z]], sino que tiene que dar [Z].. Lo voy a preguntar igual, pero para mí tiene ese error..
En el h) te estás equivocando por el concat de nuevo, te queda algo de [Z] porque hacés concat([[Z]])..
Y sí, para mí lo del f y el g vale, porque todos los elementos de la lista tienen que tener la misma forma, y eso se cumple porque todos son (Z,[Z]) o (Bool,[Bool]).. No valdría si fueran un par de los primeros y otro de los segundos ponele.. Igual también es algo que se podría preguntar..