Dada una matriz (representada como una lista de listas) de T y NIL, realizar una función que devuelva:
Ejemplo: ( ( T NIL T T NIL ) ( NIL NIL NIL T NIL) ( T T NIL NIL T) )—> T
;EJERCICIO 1.a (MAYOR_T '( ( T NIL T T NIL ) ( NIL NIL NIL T NIL) ( T T T NIL T ))) (DEFUN MAYOR_T (M) (POS(SEL_MAYOR(ALFA 'CONTAR_T M))(ALFA 'CONTAR_T M)) ) funcion que cuenta la cantidad de T que hay e una lista (DEFUN CONTAR_T (L) (IF (NULL (CDR L)) (COND ((CAR L) 1) (T 0) ) (COND) ((CAR L) (+ 1 (CONTAR_T (CDR L)))) (T (+ 0 (CONTAR_T (CDR L)))) ) ) ) funcion Alfa de FP (DEFUN ALFA (OP M) (IF (NULL (CAR M)) NIL (APPEND (LIST( FUNCALL OP (CAR M)))(ALFA OP (CDR M))) ) ) funcion que devuelve el valor del mayor elemento de una lista (DEFUN SEL_MAYOR(L) (COND ((NULL (CDR L))(CAR L)) ((> (CAR L)(CADR L))(SEL_MAYOR (CONS(CAR L)(CDDR L)))) (T (SEL_MAYOR (CDR L))) ) ) funcion que devuelve la posicion en L de el elemento X (DEFUN POS (X L) (COND ((NULL L)NIL) ((EQ X (CAR L)) 1) (T(+ 1 (POS X (CDR L)))) ) ) ;EJERCICIO 1.b (MAYORIA_T '( ( T NIL T T NIL ) ( NIL NIL NIL T NIL) ( T T NIL NIL T) )) (DEFUN MAYORIA_T (M) (COND ((>(SUMA(ALFA 'CONTAR_DIF_T_NIL M)) 0) T) (T NIL) ) ) funcion que suma 1 si es > 0 y resta 1 si es < 0 en una lista (DEFUN SUMA (L) (COND ((NULL L)0) ((> (CAR L) 0)(+ 1 (SUMA (CDR L)))) (T (+ -1 (SUMA (CDR L)))) ) ) funcion que cuenta la diferencia entre T y NIL y devuelve el valor (DEFUN CONTAR_DIF_T_NIL (L) (COND ((NULL L)0) ((CAR L)(+ 1 (CONTAR_DIF_T_NIL (CDR L)))) (T(+ -1 (CONTAR_DIF_T_NIL (CDR L)))) ) ) funcion Alfa de FP (DEFUN ALFA (OP M) (IF (NULL (CAR M)) NIL (APPEND (LIST( FUNCALL OP (CAR M)))(ALFA OP (CDR M))) ) )
Realizar una funcion (SUBLIST) que, dada una lista, una posicion inicial y una longitud, devuelva la sublista correspondiente.
Ejemplo : (SUBLIST ‘(A B C D E F G) 3 2)—> (C D)
(DEFUN SUBLIST ( L INI LONG) (COND ((NULL L) NIL) ((EQ LONG 0)NIL) ((EQ INI 1) (CONS (CAR L)(SUBLIST (CDR L) INI (- LONG 1)))) (T (SUBLIST (CDR L) (- INI 1)LONG )) ) )
Realizar una funcion (POSINI) que, dads dos listas simples, devuelva la posicion inicial en la cual la primera lista se encuentra contenida en la segunda. Si no se encuentra contenida devolver cero.
(DEFUN POSINI (L1 L) (COND ((FUNCALL 'AND_MOD (COMPARAR L1 (IR_A (CAR L1) L))) (POS (CAR L1) L)) (T 0) ) ) ;funcion AND modificada que me dice si en una lista son todos T (DEFUN AND_MOD (L) (COND ((NULL (CDR L))(CAR L)) ('AND (CAR L) (AND_MOD (CDR L))) ) ) ;funcion que devuelve la posicion de X en L (DEFUN POS (X L) (COND ((NULL L)0) ((EQ X (CAR L))1) (T(+ 1 (POS X (CDR L)))) ) ) ;funcion que borra los elementos de L anteriores a X (DEFUN IR_A ( X L) (COND ((NULL L)NIL) ((EQ X (CAR L))L) (T( IR_A X (CDR L))) ) ) ;funcion que me iguala los elementos de L1 contra los necesarios en L2 devolviendo T o NIL (DEFUN COMPARAR (L1 L2) (COND ((NULL (CDR L1))(LIST(EQ (CAR L1)(CAR L2)))) (T(CONS (EQ (CAR L1)(CAR L2)) (COMPARAR (CDR L1)(CDR L2)))) ) )
Dada una matriz representada mediante listas, devolver la sumatoria de los numeros de las filas impares menos la sumatoria de los numeros de las filas pares.
(DEFUN CUENTA (M) (- (SUMAR_IMPAR(ALFA 'SUMA M))(SUMAR_PAR (ALFA 'SUMA M))) ) ;funcion que suma los elementos pares de una lista (DEFUN SUMAR_PAR (L) (COND ((NULL (CADR L))0) (T(+ (CADR L)(SUMAR_PAR (CDDR L)))) ) ) ;funcion que suma los elementos impares de una lista (DEFUN SUMAR_IMPAR (L) (COND ((NULL (CAR L))0) (T(+ (CAR L) (SUMAR_IMPAR(CDDR L)))) ) ) ;funcion que devuelve la suma de los elementos de la lista (DEFUN SUMA (L) (COND ((NULL L)0) (T(+ (CAR L)(SUMA (CDR L)))) ) ) ;funcion alfa de FP (DEFUN ALFA (OP M) (IF (NULL (CAR M)) NIL (APPEND (LIST( FUNCALL OP (CAR M)))(ALFA OP (CDR M))) ) )
Dada una matriz representada mediante listas, devolver la matriz resultante de tomar filas impares y columnas pares.
(DEFUN FUNCION (M) (APPEND (IMPARES M)(PARES (TRASPUESTA M))) ) ;funcion que se queda con las filas pares (DEFUN PARES (M) (COND ((NULL (CDDR M)) (LIST(CADR M))) (T(APPEND(list( CADR M))(PARES (CDDR M)))) ) ) ;funcion que se queda con las filas impares (DEFUN IMPARES (M) (COND ((NULL (CDDR M))(LIST(CAR M))) (T (APPEND (LIST (CAR M))(IMPARES (CDDR M)))) ) ) ;funcion que saca la traspuesta de una matriz M (DEFUN TRASPUESTA (M) (COND ((NULL (CADR M))(ALFA 'CAR M)) (T(APPEND (LIST(ALFA 'CAR M))(TRASPUESTA (ALFA 'CDR M)))) ) ) ;funcion alfa de FP (DEFUN ALFA (OP M) (IF (NULL (CAR M)) NIL (APPEND (LIST( FUNCALL OP (CAR M)))(ALFA OP (CDR M))) ) )
Definir una función que actúe como la instrucción distl de programación funcional.
(DEFUN DISTL (X L) (COND ((NULL (CDR L))(LIST(LIST X (CAR L)))) (T(APPEND (LIST(LIST X (CAR L)))(DISTL X (CDR L)))) ) )
Definir una función que devuelva una lista que resulte de intercalar los elementos de dos listas que recibe como parámetros.
(DEFUN INTERCAL (L1 L2) (COND ((AND(NULL L1)(NULL L2))NIL) (T(APPEND (LIST(CAR L1)(CAR L2))(INTERCAL (CDR L1)(CDR L2)))) ) )
Definir una función que calcule la profundidad de una lista.
(DEFUN PROF (L) (IF(ATOM L) 0 (IF(>(+ 1 (PROF (CAR L)))(PROF (CDR L))) (+ 1 (PROF (CAR L))) (PROF (CDR L)) ) ) )
Definir una función que aplicada a una lista numérica devuelva la misma, ordenada por longitud creciente en todos sus niveles.
(DEFUN ORDENAR_CRE (L) (IF(NULL L) NIL (CONS (SEL_MENOR L)(ORDENAR_CRE (ELIM(SEL_MENOR L) L))) ) ) ;funcion que selecciona el menor elemento de una lista (DEFUN SEL_MENOR(L) (COND ((NULL (CDR L))(CAR L)) ((< (CAR L)(CADR L)) (SEL_MENOR (CONS (CAR L)(CDDR L)))) (T(SEL_MENOR (CDR L))) ) ) ;funcion que elimina una ocurrencia de x en L (DEFUN ELIM (X L) (COND ((NULL L) NIL) ((EQ (CAR L) X)(CDR L)) (T(CONS (CAR L)(ELIM X (CDR L)))) ) )