Autor
|
Tema: ayuda con python (Leído 2,847 veces)
|
Cache01
Desconectado
Mensajes: 3
|
No se como hacer el siguiente problema!!!! Dada una lista de palabras, se pide encontrar un ordenamiento circular de las mismas en el cual una palabra B puede suceder a otra A si la primer letra de B es igual a la última letra de A. El ordenamiento debe ser circular (toda palabra debe tener una que la antecede y una que la sucede) y completo (debe incluir a todas las palabras de la lista). En caso de no existir un ordenamiento se debe informar "No existe ordenamiento ej entrada:arbol orden susana otro listo nexos la salida seria:susana arbol listo otro orden nexos archivo http://www.oia.org.ar/_media/prob/c3a02n3p1.pdf
|
|
« Última modificación: 3 Abril 2014, 08:11 am por Cache01 »
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
vamos por partes! 1) el tema dice "ayuda en python" así que dinos en que sentencias tienes problemas 2) usas 2.x o 3.x 3) tienes difinido algo de la función o esperas todo del foro? 4) quizá necesitas solo el seudocódigo con la solución 5) podrías empezar con algo como: pedir las palabras a ordenar : perro,casa,reloj,orden, etc cada una de ellas es una cadena tomar la primera letra de la primer cadena (p,perro) buscar esa letra en la última letra de las cadenas restantes (no está) sino está tendría que ser la primera ordenada buscar la ultima letra de la cadena y buscar la primera de las restantes ver cuantas posibles hay (o, perro coincide o,orden) sino coincide con alguna es imposible ordenar repetir con la segunda cadena sino coincide con ninguna ya no es posible ordenar etc. 6)si avanzas hasta ahí y muestras tus progresos seguro que los que más saben te ayudan con gusto. 7) dudo que alguien quiera hacer todo por ti!
|
|
|
En línea
|
|
|
|
Cache01
Desconectado
Mensajes: 3
|
El problema que tengo es que no se como relacionar las palabras con los inicios y los finales
inicios=[] finales=[] juntos=[] palabras=[] try: x=int(input("Digite 1 para ingresar palabra o 2 para finalizar ")) while x==1 and x!=2: palabra=input("Digite la palabra a ingresar ") palabra=str.lower(palabra) inicio=palabra[0] inicios.append(inicio) final=palabra[len(palabra)-1] finales.append(final) palabras.append(palabra) for i in range (0,len(inicios)-1): for a in range(0,len(finales)-1): if i==a: juntos.append(inicios) juntos.append(finales[a]) print(juntos) x=int(input("Digite 1 para ingresar palabra o 2 para finalizar ")) else: print("Programa finalizado") except: print("error dato invalido")
|
|
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
a ver: ok se me ocurre lo siguiente: tenes 2 listas A) [a,l,n,o,o,s] primera letra de arbol listo nexos orden otro susana B) [l,o,s,n,o,a] ultima letra de arbol listo nexos orden otro susana
siendo arbol la primer palabra de la lista busco la 2 para la solucion
1) buscar l (letra final de arbol e inicio de la próxima) en A hay 1 sola asi que la segunda palabra es listo buscar o (letra final de listo e inicio de la proxima) en A hay 2 2) comparar que la letra final de la palabra encontrada sea distina de la misma de inicio si son iguales o sea: o(A) y o (B) usar esa primero porque sigue dando como siguiente letra de inicio o otro sino son iguales usar cualquiera! orden repetir 1) repetir 2)
y listo!
como escribis el código no me meto porque no hay error en la sintaxis, solo distintos métodos de programación y cada uno elige la que quiere!
|
|
|
En línea
|
|
|
|
tincopasan
Desconectado
Mensajes: 1.286
No es lo mismo conocer el camino que recorrerlo.
|
Hola de nuevo! no tengo mucho tiempo (ni ganas jeje) pero hice un código para que veas más o menos a que me refiero, espero te oriente!: :CODE/ Lista=["nexos","arbol","listo","orden","susana"] ListaFinal=[] Orden= 0 LetrasInicio=[] LetrasFinal=[]
def buscarElemento(lista, elemento): for i in range(0,len(lista)): if(lista == elemento): return i print("Lista Original",Lista) for i in Lista: LetrasInicio.append (i[0]) #letra inicial LetrasFinal.append(i[-1]) #letra final
ListaFinal.append (Lista[0]) #agrega palabra desde el lugar 0 for letras in LetrasFinal: LetraSiguientePalabra= buscarElemento(LetrasInicio,LetrasFinal[Orden]) Repetido= LetrasInicio.count(LetrasFinal[Orden]) #busca si se repite la letra final en la letra inicial if Repetido== 1: SiguientePalabra= Lista[LetraSiguientePalabra] ListaFinal.append(SiguientePalabra) Orden = LetraSiguientePalabra
ListaFinal.pop() print ("Lista Ordenada",ListaFinal)
:\\CODE
Obvio que falta si está repetida una letra, pero mostrá avances y alguien que sepa(no es mi caso) te ayudará!
|
|
|
En línea
|
|
|
|
Cache01
Desconectado
Mensajes: 3
|
Muchas Gracias !!!!!!! si le pude hacer pero con distintas funciones, en caso que de q quieras ver el codigo me avisas y te lo envio!!!!!!!
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Ayuda IDE Python
Scripting
|
kyps
|
7
|
4,067
|
4 Enero 2010, 06:15 am
por Carloswaldo
|
|
|
Ayuda con Python
« 1 2 »
Scripting
|
Ideka
|
12
|
8,735
|
19 Febrero 2010, 23:32 pm
por leogtz
|
|
|
Ayuda Con [Python]
Scripting
|
jero22
|
3
|
2,652
|
2 Abril 2010, 20:51 pm
por Masita
|
|
|
Ayuda con Python
Scripting
|
Soft87
|
2
|
3,217
|
27 Mayo 2011, 02:52 am
por Novlucker
|
|
|
[Python] ¿Por qué Python 2.7.3 admite la sintaxis de Python 3?
« 1 2 »
Scripting
|
Yidu
|
10
|
11,182
|
10 Febrero 2013, 21:46 pm
por Eleкtro
|
|