====== Examen Final - 75.14. Lenguajes Formales - 08/05/07 ====== **Cátedra:** Monica Kuhn\\ **Fecha:** 1º Oportunidad - 1º Cuatrimestre 2007\\ **Día:** 08/05/2007 Esta página está incompleta; podés ayudar completando el material. ===== Enunciado ===== ==== Funcional ==== Dado el siguiente ambiente (un entero y una matriz representada a traves de listas, donde cada lista es una fila de la matriz): < Ente < <12 21 35> <41 57 86> <17 18 25> <...> > > Se pide generar una función que devuelva solo los númeos de columnas cuya sumatoria de sus números supere al entero en cuestión. No se puede utilizar ni recursividad ni While. EJ: < 84 < <11 22 23> <41 15 16> <17 18 25> <15 30 35> > > Resultado: < 2 3> ==== APL ==== Dada una matriz cuadrada numérica M, escribir **una** expresión en APL para obtener la matriz resultante de poner en cero las posiciones de M que pertenezcan al "diamante central". Ejemplos: M <- 9 9 p 7?9 M \begin{array}{c c c c c c c c c} 8 & 4 & 6 & 7 & 2 & 5 & 3 & 8 & 4 \\ 6 & 7 & 2 & 5 & 3 & 8 & 4 & 6 & 7 \\ 2 & 5 & 3 & 8 & 4 & 6 & 7 & 2 & 5 \\ 8 & 4 & 6 & 7 & 2 & 5 & 3 & 8 & 4 \\ 6 & 7 & 2 & 5 & 3 & 8 & 4 & 6 & 7 \\ 2 & 5 & 3 & 8 & 4 & 6 & 7 & 2 & 5 \\ 8 & 4 & 6 & 7 & 2 & 5 & 3 & 8 & 4 \\ 6 & 7 & 2 & 5 & 3 & 8 & 4 & 6 & 7 \\ 2 & 5 & 3 & 8 & 4 & 6 & 7 & 2 & 5 \\ \end{array} Resulta en : \begin{array}{c c c c c c c c c} 8 & 4 & 6 & 7 & 0 & 5 & 3 & 8 & 4 \\ 6 & 7 & 2 & 0 & 0 & 0 & 4 & 6 & 7 \\ 2 & 5 & 0 & 0 & 0 & 0 & 0 & 2 & 5 \\ 8 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 4 \\ 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ 2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 5 \\ 8 & 4 & 0 & 0 & 0 & 0 & 0 & 8 & 4 \\ 6 & 7 & 2 & 0 & 0 & 0 & 4 & 6 & 7 \\ 2 & 5 & 3 & 8 & 0 & 6 & 7 & 2 & 5 \\ \end{array} M <- 6 6 p 7?9 M \begin{array}{c c c c c c c c c} 7 & 2 & 5 & 3 & 8 & 4 \\ 5 & 3 & 8 & 4 & 6 & 7 \\ 8 & 4 & 6 & 7 & 2 & 5 \\ 7 & 2 & 5 & 3 & 8 & 4 \\ 5 & 3 & 8 & 4 & 6 & 7 \\ 8 & 4 & 6 & 7 & 2 & 5 \\ \end{array} Resulta en : \begin{array}{c c c c c c c c c} 7 & 2 & 0 & 0 & 8 & 4 \\ 5 & 0 & 0 & 0 & 0 & 7 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ 5 & 0 & 0 & 0 & 0 & 7 \\ 8 & 4 & 0 & 0 & 2 & 5 \\ \end{array} ===== Resolución ===== ==== Funcional ==== def suma_columnas = alpha (+/) def numerar_vector = trans o [iota o length, id] def select = great o [2 o 1, 1 o 2] -> appendl o [2 o 2, 1 o 1];2 def resultado = 2 o /select o appendr o [numerar_vector o suma_columnas o 2,[1,~<>]] ==== APL ==== (,(1+⌈a)≥(W,V)∘.+W←(⍳⌈A),V←⌽⍳⌈(A←0.5×(⍴M)[0])-1)/M ===== Discusión ===== Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.