====== 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á.