Logo Studenta

Extienda el tipo Secuencia(α) definiendo las siguientes operaciones: a) Duplicar , que dada una secuencia la devuelve duplicada elemento a elemento...

Extienda el tipo Secuencia(α) definiendo las siguientes operaciones:
a) Duplicar , que dada una secuencia la devuelve duplicada elemento a elemento.
Por ejemplo, Duplicar(a • b • c • <>) ≡ a • a • b • b • c • c • <>.
b) • ≤ •, que chequea si una secuencia es “menor o igual” a otra según el orden lexicográfico para una relación de orden total sobre α dada1.
c) Reverso, que dada una secuencia devuelve su reverso (la secuencia dada vuelta).
d) Capicúa, que determina si una secuencia es capicúa.
Por ejemplo, Capicúa(a • b • b • a • <>) ≡ Capicúa(1 • <>) ≡ Capicúa(<>) ≡ true.
e) EsPrefijo? , que chequea si una secuencia es prefijo de otra.
f) Buscar , que busca una secuencia dentro de otra. Si la secuencia buscada está una o más veces, la función devuelve la posición de la primera aparición; si no está, la función se indefine.
g) EstáOrdenada? , que verifica si una secuencia está ordenada de menor a mayor.
h) InsertarOrdenada, que dados una secuencia so (que debe estar ordenada) y un elemento e (de género α) inserta e en so de manera ordenada.
i) CantidadApariciones, que dados una secuencia y un α devuelve la cantidad de apariciones del elemento en la secuencia.
j) EsPermutación? , que chequea si dos secuencias dadas son permutación una de otra. Pista: utilizar Cantida- dApariciones.
k) Combinar , que dadas dos secuencias ordenadas devuelve una secuencia ordenada que resulta de juntar sus elementos. Por ejemplo, Combinar(“acd”, “bef’) ≡ “abcdef”.


Esta pregunta también está en el material:

Práctica1
13 pag.

Computacional Universidad Nacional de CórdobaUniversidad Nacional de Córdoba

💡 1 Respuesta

User badge image

Ed IA de Studenta Verified user icon



Secuencia(α) {
  Duplicar(s) {
    if (s == <>) {
      return <>;
    } else {
      return s.cabeza • Duplicar(s.cola);
    }
  }

  ≤(s1, s2) {
    if (s1 == <>) {
      return true;
    } else if (s2 == <>) {
      return false;
    } else {
      return s1.cabeza ≤ s2.cabeza && ≤(s1.cola, s2.cola);
    }
  }

  Reverso(s) {
    if (s == <>) {
      return <>;
    } else {
      return Reverso(s.cola) • s.cabeza;
    }
  }

  Capicua(s) {
    if (s == <>) {
      return true;
    } else {
      return s.cabeza == s.cola.cabeza && Capicua(s.cola);
    }
  }

  EsPrefijo?(s1, s2) {
    if (s1 == <>) {
      return true;
    } else if (s2 == <>) {
      return false;
    } else {
      return s1.cabeza == s2.cabeza && EsPrefijo?(s1.cola, s2.cola);
    }
  }

  Buscar(s1, s2) {
    if (s1 == <>) {
      return -1;
    } else if (EsPrefijo?(s1, s2)) {
      return 0;
    } else {
      return Buscar(s1.cola, s2) + 1;
    }
  }

  EstáOrdenada?(s) {
    if (s == <>) {
      return true;
    } else if (s.cabeza > s.cola.cabeza) {
      return false;
    } else {
      return EstáOrdenada?(s.cola);
    }
  }

  InsertarOrdenada(s, e) {
    if (s == <>) {
      return Secuencia(e);
    } else if (e < s.cabeza) {
      return Secuencia(e) • s;
    } else if (e > s.cabeza) {
      return s • InsertarOrdenada(s.cola, e);
    } else {
      return s;
    }
  }

  CantidadApariciones(s, e) {
    if (s == <>) {
      return 0;
    } else if (e == s.cabeza) {
      return 1 + CantidadApariciones(s.cola, e);
    } else {
      return CantidadApariciones(s.cola, e);
    }
  }

  EsPermutación?(s1, s2) {
    if (s1.longitud != s2.longitud) {
      return false;
    } else {
      return CantidadApariciones(s1, s2.cabeza) == s2.longitud;
    }
  }

  Combinar(s1, s2) {
    if (s1 == <>) {
      return s2;
    } else if (s2 == <>) {
      return s1;
    } else {
      return Combinar(s1.cola, s2.cola) • s1.cabeza;
    }
  }
}

0
Dislike0

✏️ Responder

FlechasNegritoItálicoSubrayadaTachadoCitaCódigoLista numeradaLista con viñetasSuscritoSobreDisminuir la sangríaAumentar la sangríaColor de fuenteColor de fondoAlineaciónLimpiarInsertar el linkImagenFórmula

Para escribir su respuesta aquí, Ingresar o Crear una cuenta

User badge image

Otros materiales