Skip to content

Instantly share code, notes, and snippets.

@JavierSolis
Created September 4, 2021 19:42
Show Gist options
  • Save JavierSolis/b1b7e7cda1f73f97d8cbd90084cc35e3 to your computer and use it in GitHub Desktop.
Save JavierSolis/b1b7e7cda1f73f97d8cbd90084cc35e3 to your computer and use it in GitHub Desktop.
# PRIMERA SOLUCION DEL PROBLEMA
# Python code to demonstrate math.factorial()
"""
para que no quede una array super largo
convendria una estructura de dictionario
para darles mas peso como un grafo con pesos
asi el array queda fijo y solo queda multiplicar los pesos segun como
valla avanzando
"""
def getLetterIndices(indice,source,letter):
array_result=[]
for i in range(indice+1,len(source)):
#if i<=indice:
# continue
if letter==source[i]:
array_result.append(i)
return array_result
source = "caattcttattacaactaacaaactcaattttcatactcctcttcaactattttaaaccataattattccctacacattcaaacaattccatctacatcacaacttcacttcctaataaaccaatccacatatcatattactctcataccaaataatccaccatattacatccctatttcatcactatactatattaacctcacaatttccattacacaacctaaacttcacttatacccaaaaacctttaccaaccctacactccaacacatactaacaatattacaccacctaccaacataaaatcaactcttccaattaaaaacactctcaaacactccacataacactattacacacctatttaccatcattccacattcacactcaatctcactctctaaaacactaaaatctttcctctcacctctattttcttttattttacttactaccaaaaactaatacacctctctactctaacaaacttctcttacat"
route = "cat"
#por indice desde la ultima letra
#
print(len(source))
number_path=0
partsIni = getLetterIndices(-1,source,route[0])
if len(partsIni)==0:
print(0)
print(partsIni)
for i in range(1,len(route)):
new_parts = []
for j in range(0,len(partsIni)):
partial_parts = getLetterIndices(partsIni[j],source,route[i])
print(len(partial_parts))
if len(partial_parts)==0:
continue
new_parts = new_parts + partial_parts
partsIni = new_parts
print ( len(partsIni))
# Python code to demonstrate math.factorial()
"""
para que no quede una array super largo
convendria una estructura de dictionario
para darles mas peso como un grafo con pesos
asi el array queda fijo y solo queda multiplicar los pesos segun como
valla avanzando
"""
source = "caattcttattacaactaacaaactcaattttcata"
route = "cat"
class Nodo:
indice = 0
peso = 0
def getLetterIndices(peso_anterior, old_dictionary, new_dictionary, indice,source,letter):
dicc_result={}
# peso_anterior = 0
for i in range(indice+1,len(source)):
#if i<=indice:
# continue
if letter==source[i]:
key = "ind_{}".format(i)
if key in old_dictionary:
#print(key,"PESO_OLD:",old_dictionary[key]['peso'])
peso_anterior = peso_anterior+old_dictionary[key]['peso']
if key in new_dictionary:
#print(key,"PESO_NEW:",new_dictionary[key]['peso'])
peso_anterior = peso_anterior+new_dictionary[key]['peso']
dicc_result[key] = {
'indice' : i,
'peso' : peso_anterior
}
return dicc_result
nodos = {}
#por indice desde la ultima letra
#
print(len(source))
number_path=0
partsIni = getLetterIndices(1,nodos,nodos,-1,source,route[0])
if len(partsIni)==0:
print(0)
print("letter:",route[0])
for key in partsIni:
print(key,partsIni[key])
for i in range(1,len(route)):
new_dicc = {}
for key in partsIni:
partial_dicc = getLetterIndices(
partsIni[key]['peso'],
partsIni,
new_dicc,
partsIni[key]['indice'],
source,
route[i]
)
new_dicc.update(partial_dicc)
print("letter:",route[i])
for key in new_dicc:
print(key,new_dicc[key])
partsIni = new_dicc
print ("COUNT NODO:", len(partsIni))
print(partsIni)
count_rutas = 0
for key in partsIni:
count_rutas = count_rutas + partsIni[key]['peso']
print ("RUTAS:",count_rutas)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment