Ejemplo n.º 1
0
    def suggest(self, term, distance="levenshtein", threshold=None):
        """Método para sugerir palabras similares siguiendo la tarea 3.

        A completar.

        Args:
            term (str): término de búsqueda.
            distance (str): algoritmo de búsqueda a utilizar
                {"levenshtein", "restricted", "intermediate"}.
            threshold (int): threshold para limitar la búsqueda
                puede utilizarse con los algoritmos de distancia mejorada de la tarea 2
                o filtrando la salida de las distancias de la tarea 2
        """
        assert distance in ["levenshtein", "restricted", "intermediate"]

        results = {}  # diccionario termino:distancia
        if threshold == None: threshold = 2**31
        for voc in self.vocabulary:
            if abs(len(voc) - len(term)) > threshold or hamming_distance(
                    term, voc) > threshold:
                d = threshold + 1
            elif distance == "levenshtein":
                d = t3.dp_levenshtein_backwards(term, voc, threshold)
            elif distance == "restricted":
                d = t3.dp_restricted_damerau_backwards(term, voc, threshold)
            else:
                d = t3.dp_intermediate_damerau_backwards(term, voc, threshold)

            if d <= threshold:
                results[voc] = d

        return results
Ejemplo n.º 2
0
 def test_arreglo_unico(self):
     A = [7 for x in range(1000)]
     C = A.copy()
     asc = random() < 0.5
     self.assertEqual(Tarea3.CountingSort(A, 7, asc),
                      sorted(C, reverse=not asc))
Ejemplo n.º 3
0
 def test_arreglo_desordenado(self):
     A = [randint(0, 85) for x in range(142)]
     C = A.copy()
     asc = random() < 0.5
     self.assertEqual(Tarea3.CountingSort(A, 85, asc),
                      sorted(C, reverse=not asc))
Ejemplo n.º 4
0
 def test_arreglo_vacio(self):
     A = []
     self.assertEqual([], Tarea3.CountingSort(A, 100, False))
Ejemplo n.º 5
0
 def test_arreglo_vacio(self):
     A = []
     self.assertEqual([], Tarea3.InsertionSort(A, True))
Ejemplo n.º 6
0
 def test_arreglo_unico(self):
     A = [7 for x in range(1000)]
     C = A.copy()
     asc = random() < 0.5
     self.assertEqual(Tarea3.SelectionSort(A, not asc),
                      sorted(C, reverse=asc))
Ejemplo n.º 7
0
 def test_arreglo_desordenado(self):
     A = [randint(0, 15) for x in range(100)]
     C = A.copy()
     asc = random() < 0.5
     self.assertEqual(Tarea3.SelectionSort(A, asc),
                      sorted(C, reverse=not asc))
Ejemplo n.º 8
0
 def test_arreglo_ordenado(self):
     A = [x for x in range(1000)]
     C = A.copy()
     asc = random() < 0.5
     self.assertEqual(Tarea3.InsertionSort(A, not asc),
                      sorted(C, reverse=asc))