Título: ayuda con python Publicado por: Cache01 en 3 Abril 2014, 07:57 am 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 (http://) 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 Título: Re: ayuda con python Publicado por: tincopasan en 3 Abril 2014, 11:27 am 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! Título: Re: ayuda con python Publicado por: Cache01 en 4 Abril 2014, 02:11 am 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") Título: Re: ayuda con python Publicado por: tincopasan en 5 Abril 2014, 04:58 am 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! Título: Re: ayuda con python Publicado por: tincopasan en 6 Abril 2014, 18:43 pm 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á! Título: Re: ayuda con python Publicado por: Cache01 en 7 Abril 2014, 07:48 am 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!!!!!!!
|