-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuscaPermutacion.py
More file actions
executable file
·93 lines (84 loc) · 2.41 KB
/
Copy pathbuscaPermutacion.py
File metadata and controls
executable file
·93 lines (84 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/usr/bin/python3
# -*- coding: utf-8 -*-
#
# Este es un programita para resolver el problema de mi amiga Lucia de
# adivinar a que animal se refiere cada una de las siguientes
# permutaciones de caracteres:
#
# 1 - fabulo
# 2 - locabal
# 3 - localme
# 4 - vicero
# 5 - irmoderado
# 6 - anteelfe
# 7 - toga
# 8 - elon
# 9 - dorapelo
# 10 - comas
# 11 - trapean
# 12 - grite
#
import sys
import urllib.request
import urllib.error
def permutar(palabra, estado):
# incrementa el estado
lleva = 0
c = len(estado) - 1
estado[c] += 1
while c >= 0:
estado[c] += lleva
lleva = 0
maximo = len(estado) - c
if estado[c] > maximo:
estado[c] = 0
lleva = 1
c -= 1
# arma la permutación que le corresponde a ese estado.
palabra = list(palabra)
combinacion = []
c = 0
while c < len(estado):
combinacion.append(palabra.pop(estado[c]))
c += 1
combinacion.append(palabra[0])
# devuelve la combinación y su estado.
return "".join(combinacion), estado, lleva
def probarPermutacion(palabra, fuentes):
# print("buscando \"{}\"".format(palabra))
for fuente in fuentes:
direccion = fuente + palabra
# si encuentra la permutación en esta fuente, entonces esta es la palabra.
request = None
try:
request = urllib.request.urlopen(direccion)
codigo = request.getcode()
except urllib.error.HTTPError as error:
codigo = error.code
finally:
if request:
request.close()
if codigo == 200:
print("Encontré \"{}\" en \"{}\".".format(palabra, direccion))
return True
return False
fuentes = ["https://es.wikipedia.org/wiki/",
"https://es.wiktionary.org/wiki/"]
# tomar el argumento
palabra = sys.argv[1]
estado = [0] * (len(palabra) - 1)
combinacion = palabra
lleva = 0
encontrada = False
while lleva == 0:
# prueba cada permutación de la palabra que se pasó como parámetro
print("La palabra que vamos a probar es \"{}\".".format(combinacion))
# verifica la permutación
encontrada = probarPermutacion(combinacion, fuentes)
if encontrada:
print("\n\nLa palabra correcta es {}\n".format(combinacion))
break
combinacion, estado, lleva = permutar(palabra, estado)
if not encontrada:
print("La palabra no fue encontrada.")
print("Listo!")