SoloCodigo

Asuntos Oficiales => Retos => Mensaje iniciado por: JuanK en Domingo 14 de Diciembre de 2003, 21:31

Título: Division Sílabica
Publicado por: JuanK en Domingo 14 de Diciembre de 2003, 21:31
División Silábica

Las siguientes son las reglas de la división de sílabas en el idioma español

1.   Una sola consonante entre dos vocales se agrupa con la segunda vocal:
 
     mesa>me-sa; casa>ca-sa; agujero>a gu-je-ro

2.   Cuando hay dos consonantes entre vocales, la primera consonante se agrupa con la primera vocal, y la segunda consonante con la segunda vocal:

      coacción> co-ac-ción; gimnasia> gim-na-sia; inmutar>in-mu-tar

3.   Los grupos: pr. pl, f'r, tr, dr, cr, el, gr, gl, rr, 11,br, qu y ch no se pueden separar y se unen a la vocal siguiente:   

      abreviar>a-bre-viar; refresco>re-fres-co; perro> pe-rro> hucha>hu-cha;
      allanar>a-lla-nar

      excepción:  prefijo sub , ejemplo:  subrayar, subtitulo

4.   Cuando hay tres o más consonantes, las dos primeras consonantes se unen a la vocal precedente y la tercera (y cuarta) consonante a la siguiente vocal:

     constar>cons-tar; perspectiva>pers-pec-ti-va; entregar>en-tre-gar;
     construcción>cons-truc-ción; transgresión>trans-gre-sión.

5.   Las vocales pueden ser débiles (i, u) o fuertes (a,e,o). Si dos vocales fuertes (a,e,o) están juntas, se separan:

     Taos> Ta-os; preocupado>pre-o-cu-pa-do; caos>ca-os Leonardo> Le- o-nar-do

Si una vocal débil (i,u) y otra fuerte (a,e,o) están juntas forman un diptongo, es decir, una sílaba y no se separan:
     Manuel> Ma-nuel; puerta>puer-ta> violencia>vio-len-cia Dos vocales débiles (i,u) juntas también forman diptongo, y no se separan:
     ciudad>ciu-dad; cuidado> cui-da-do; Luis> Luis


Escriba un programa que realice la división silábica de acuerdo con las reglas anteriores:

Entrada:

Consistirá en una serie de líneas cada una con una palabra.
La última línea será una línea vacía (i.e. tan sólo '\n")

Salida:

Se debe mostrar la palabra correspondiente, separada con guiones, de acuerdo con las reglas anteriores.

NOTA

PARA EFECTOS DE ESTE PROBLEMA, NO EXISTEN TILDES NI EÑES, SE UTILIZARÁ EL ALFABETO AMERICANO ESTÁNDAR DE LA A-Z Y a-z.

Ejemplo:

Citar
Entrada                                     Salida
mesa                                     me-sa
agujero                                  a-gu-je-ro
letargo                                  le-tar-go
gimnasia                                 gim-na-sia
inmutar                                  in-mu-tar
abreviar                                 a-bre-viar
refresco                                 re-fres-co
perro                                    pe-rro
hucha                                    hu-cha
allanar                                  a-lla-nar
constar                                  cons-tar
perspectiva                              pers-pec-ti-va
entregar                                 en-tre-gar
Taos                                     Ta-os
Preocupado                               Pre-o-cu-pa-do
caos                                     ca-os
Leonardo                                 Le-o-nar-do
Manuel                                   Ma-nuel
Puerta                                   Puer-ta
Violencia                                vio-len-cia
ciudad                                   ciu-dad
cuidado                                  cui-da-do
Luis                                     Luis
subtitulo                                sub-ti-tu-lo

La entrada es a travez de un archivo de texto, la salida debe ser en pantalla.
El proghrama debe respetar mayusculas y minusculas, es decir si la entrada es :
PinguiNo la salida debe ser Pin-gui-No. :devil:
La lista de salida y el de entrada deben ser una palabra por renglon como se ve en el ejemplo.

Eso es todo mucha sutere a todos los participantes.!!!
ANIMO :smartass:
Título: Re: Division Sílabica
Publicado por: © Jonathan © en Lunes 15 de Diciembre de 2003, 20:21
Hola amigo, interesante reto, sabes... he descubierto una palabra que apuesto que tu programa no sapara en silabas correctamente, y creo es porque te falta agregar las letras TH en los grupos de palabras que no se pueden separar.
   La palabra es JONATHAN, creo que separada es JO-NA-THAN, por lo que segun se ve tu programa o el que realicemos no separaria bien en silabas. Bueno, por ahora solo consulto sobre esto. Saludos  :hola:


P.D: Segun analice el programa hecho sin agregar TH separaria mi nombre asi: JO-NAT-HAN o algo por el estilo  :comp:
Título: Re: Division Sílabica
Publicado por: JuanK en Lunes 15 de Diciembre de 2003, 20:26
:ph34r: Lo que pasa es que jonathan no es una palabra del lenguaje español. :smartass:
Título: Re: Division Sílabica
Publicado por: © Jonathan © en Lunes 15 de Diciembre de 2003, 20:29
MIL DISCULPAS AMIGO  :huh:  :whistling:  :smartass:
Título: Re: Division Sílabica
Publicado por: dreadlock en Miércoles 17 de Diciembre de 2003, 01:50
Amigo me parece un buen reto, intentare hacerlo, me pondre manos ala obra, espero ser el primero en acabar, :comp: , si no me desilucionare un poco, pero creo tener una solucion a este planteamiento
Título: Re: Division Sílabica
Publicado por: JuanK en Miércoles 17 de Diciembre de 2003, 05:45
:comp: ok bienvenido y suerte.
Título: Re: Division Sílabica
Publicado por: © Jonathan © en Jueves 18 de Diciembre de 2003, 13:05
Hola amigo, quisiera saber, ya que no especificas el nombre que debe tener el archivo de entrada, si ha este lo debemos especificar por linea de comando como haciamos en el reto del protocolo de transferencia HDLC.
   Por ahora es la unica inquietud. Gracias y miles de Saludos  :hola:  :hola:  :smartass:
Título: Re: Division Sílabica
Publicado por: JuanK en Jueves 18 de Diciembre de 2003, 15:02
cualquier archivo por la linea de entrada, es decir se debe pasar como parametro al ejecutable.
Título: Re: Division Sílabica
Publicado por: plaf en Viernes 9 de Enero de 2004, 00:17
waaa eso me huele a miles de ifs dentro de otros ifs y funciones booleanas y muchos || y waaa, pero bueno, cuando este suficientemente aburrido lo intento... :P

y lo q realmente me trajo a responder era q vi recien ayer lo de los gatos con sombrero y ya me lo cerraron :( pero igual queria aportar mi solucion para no sentir q desperdicie el rato...
lo de leer y escribir en los archivos es facil asi q hice solo lo de calcular los gatos y alturas, y si no me equivoco podria ser algo asi:

Código: Text
  1.  
  2. double x; // el numero de niveles de gatos q no trabajan
  3. int trabajan, alto, flojos, altura, n;
  4.  
  5. // aca leo del archivo "alto" y "trabajan"
  6.  
  7. // como trabajan N^x y la altura del gato mayor es (N+1)^x
  8. // N = raiz_x(trabajan); o sea pow(trabajan,1/x);
  9.  
  10. for(x=1.0; (int)(pow(pow(trabajan,1/x)+1,x)+0.01) != alto; x++);
  11. // el +0.01 es para arreglar el error q podria dar
  12.  
  13. N=(int)(pow(trabajan,1/x)+0.01);
  14.  
  15. flojos=0;
  16. altura=trabajan;
  17. for(n=0; n<x; n++)
  18. {
  19.     flojos+=pow(N,n);
  20.     altura+=pow(N,n)*pow(N+1,x-n);
  21. }
  22.  
  23. // y al final imprimo al archivo
  24.  
  25.  
Título: Re: Division Sílabica
Publicado por: JuanK en Viernes 9 de Enero de 2004, 15:10
Hola..
jajajaja  :whistling:

bueno se nota que crees programar bastante bien... :lightsabre:
te invito a hacer este reto para que veas lo equivocado que estas... , no se hace como tu dices waaaaaa :devil:
y si progrmas bien deberias ponerte a prueba con los retos que he publicado.. porque ademas te enseñaran bastante...

Respecto al reto de los gatos, si quieres puedo reabrirlo para meter tus comentarios, pero eso si la solucion que tu das no sirve porque no esta completa ...
por más que sepas hacer lo de los archvos si no lo haces no sirve el programa porque no hace lo que pide ... el reto es completo y no a medias :kicking:

Asi que si estas interesado en ese reto o en los otros hasmelo saber,
 :blink: si crees que no puedes hacer los retos seria bueno que tambien me lo hicieras saber, siempre es importante saber 'porque?'

Bueno..,. nuevamente te invito a participar... tal vez suene un poco ofensivo pero es loque le pasa a la mayoria de los que ven estos retos:
---les da miedo :scream:
si te da miedo, trata de vencerlo y participa de verdad,
o sino te da miedo...
pues de muestra lo que sabes :P :lightsabre:
Título: Re: Division Sílabica
Publicado por: plaf en Viernes 9 de Enero de 2004, 18:52
a ver a ver, me estas retando???
ah bueno es un foro de retos...

pa q no te quejes ya hice el de los gatos entero :P

y este otro, pos voy a ver q tal me anda, lo voy a empezar a intentar, de ahi te cuento como me va
Título: Re: Division Sílabica
Publicado por: JuanK en Viernes 9 de Enero de 2004, 20:25
Correcto, esta algo incompleto en cuanto a los mensagesal usuario pero esta bien,
ahora te invito a participar de este reto antes de que se cierre, y antes de que publique explicaciones y soluciones,
ANIMO.
Título: Re: Division Sílabica
Publicado por: plaf en Viernes 9 de Enero de 2004, 20:58
pues yo diria q SI es con varios ifs dentro de otros ifs y miles de || y funciones q retornan 1s y 0s (aunque una tuvo q expandirse por los guiones), o bueno, quizas no SEA asi, pero de q se puede hacer asi, se puede. y si no me crees, pues te dejo la prueba :P

;)
Título: Re: Division Sílabica
Publicado por: JuanK en Viernes 9 de Enero de 2004, 21:16
bien..
siempre hay mas de una manera de hacer las cosas.
lo que dje arriba era para forzarte a partyicipar  :devil:
bienvenido. :smartass:
Título: Re: Division Sílabica
Publicado por: © Jonathan © en Sábado 10 de Enero de 2004, 00:27
Muuuuuuuuuuuy bueno Plaf, yo aun estoy tratando de terminarlo, dime, eres una especie de robot o algo por el estilo??. Saludos :hola:
Título: Re: Division Sílabica
Publicado por: © Jonathan © en Sábado 10 de Enero de 2004, 01:33
Encontre una especie de BUG en tu programa. Intenta de poner la palabra: buRro, eso es separado asi: buR-ro, y deberia ser asi: bu-Rro, juank dijo que debe poder separa cualquier palabra entreverando mayuscula y minuscula, rebiza tu codigo e intenta arreglarlo. Saludos y la verdad me dejaste sorprendido! :hola:
Título: Re: Division Sílabica
Publicado por: plaf en Sábado 10 de Enero de 2004, 03:15
bue, grax por los elogios :) (y aqui entre nos, soy un bot :o (y mas entre nos aun, fui creado por otro bot :o (y muy muy entre nos, esta es la matrix :ph34r: )))

y el bug es xq se me paso la minusculeacion en el juntas(), y a parte sobra reconocer el guion (lo puse al principio y despues agregue el caso generico x si aparecian no-letras) y si se minusculea al principio del tipo() me ahorro un || :P

bueno dejo la actualizacion
Título: Re: Division Sílabica
Publicado por: JuanK en Domingo 11 de Enero de 2004, 03:03
Saludos plaf!
felicitaciones!!! :smartass:

Vas muy bien, tan solo te faltan unas condiciones en palabras como por ejemplo:

'sublime'

y algunas otras que tendre que revisar con tiempo!!!

Te cuento que estoy asombrado pues el codigo que traes es de buena calidad , de hecho es mas compacto que el mio, aunque falta estructurarlo un poco, y nuevamente mejorar  la interaccion con el usuario.

Por el momento vas bien... te falta poco.

Jonathan!!! com vas tu? :kicking:
Título: Re: Division Sílabica
Publicado por: dreadlock en Martes 13 de Enero de 2004, 05:41
Tengo unas dudas

Como veo que ya hay otros dos participantes en este, me supongo que debe haber un legitimo mejor programador jejejeje :D que se supondria es quien lo haga primero, pero pense en mi cabesota estan algunas ideas, que no eh tenido la oportunidad de llevar a cabo por problemas con la maquina, pero ahora esta jalando al 100% y las llevare a cabo. pero como ya escribi tengo dudas.

1.- El ganador es quien acabe primero el programa, o quien lo haga mas bonito y funcional¿? :D, esto porque pensaba que no es lo mismo hacer algo en blanco y negro, que en modo grafico/ o en modo texto con colores asi bonito. aunque lo importante es que funcione verdad, en fin no redundare.

2.- Me imagino que como en todo buen concurso debemos hacer solo lo que el cliente pide en este caso el buen JuanK, eso decia mi maestro :D.

3.- Es que pense que ahhh que va lo hare lo mejor que pueda, ahora si desde ahora empieza la cuenta regresiba, en una semana (el 19 de enero tendre alkgunos resultados).

4.- no hay 4, solo les deseo suerte alos demas concurantes

Noticia de ultima hora(como no lei la segunda hoja), me acobo de enterar que un concursante casi acaba, me tendre que apurar, no leere los codigos del compañero, para poner a trabajar mas a mi cerebro.
Título: Re: Division Sílabica
Publicado por: JuanK en Martes 13 de Enero de 2004, 14:53
En efecto...

1- Ganan todos los que acaben el programa en un tiempo establecido y que por supuesto este programa cumpla como minimo todas los requisitos del reto y como minimo todas las recomendaciones de formato.
2-Aunque hayan varios ganadores se destacaran las mejores cosas de cada uno, y se le haran a cada uno las observaciones necerias.
3-Aunque este reto esta programado para finalizar en una semana, realmente siempre los dejo abiertos unas semanas más con el fin de esperar a todas las personas que esten participando, la finalidad de los retos no es realmente buscar un ganador, sino buscar quienes son capaces de hacerlos.  :smartass:

4-Como recomendacion para todos los participantes, no es bueno publicar la solucion de un reto para evitar que gente inescrupulosa pueda copiarlo, lo mejor es que publiquen sus post pero que el archivo me lo envien por correo electronico, al finalizar el reto se publicaran todos los fuentes.  B)

Bien, eres bienvanido dreadlock
suerte y exitos en este reto!!!  :lightsabre:
Título: Re: Division Sílabica
Publicado por: plaf en Martes 13 de Enero de 2004, 21:51
- como se supone q puedo reconocer cuando sub es prefijo y cuando no? sin tener q adjuntar un diccionario para buscarlo y conjugarlo si es verbo, etc... porque subl* no siempre se separa en sub-l*.. vi el diccionario y estan sub-lin-gual y sub-lu-nar q sirven de ejemplo, asi q hay q decidirse entre perder unas u otras... y obviamente yo elijo la opcion en la q no tengo q cambiarle nada al codigo :P

- con la interaccion con el usuario te refieres a mensajes de error y cosas asi? bueno, le agregue un par de printf()s...

- estructuracion, pos no sabo como estructurarlo mas gonito, le saque las variables globales y le puse parametros a las funciones... no soy muy experto en programar lindo, llevo menos de un año programando...

- ganador? :o y q se gana? estrellitas en el perfil? :P

- mandar el codigo al mail es mucho esfuerzo, prefiero seguir corrompiendo al publico :devil:  :devil:  :devil: ademas q tiene de malo, si lo unico q se gana con estos retos es autosatisfaccion, y q tiene de satisfactorio copiarle el codigo a otro?
Título: Re: Division Sílabica
Publicado por: dreadlock en Miércoles 14 de Enero de 2004, 19:33
Yo tambien tengo preguntas:, esque empece haciendo el analizis al reves, creo que ya encontre la solucion mas fiable.

1.-  Se puede convertir el texto en mayusculas o minusculas para facilitar su analisiz¿?
Título: Re: Division Sílabica
Publicado por: JuanK en Domingo 18 de Enero de 2004, 00:03
no, lee nuevamente el enunciado, el programa debe respetar mayusculas y minusculas.
plaf: tienes razon en cuanto tenga tiempo lo revisare.
Título: Re: Division Sílabica
Publicado por: shephiroth en Lunes 19 de Enero de 2004, 09:09
Buenas. Soy nuevo y recien comenzaré con este reto. El de los gatos tambien me ha impactado, y me pondré con él despues puesto que ya esta cerrado y este aun esta abierto.

Y para empezar aportaré mi granito de arena sobre dos cuestiones que se han empleado:

1) Convertir todo a minusculas: El trabajo te pide que al final visualices la palabra separada tal como la escribieron, pero internamente puedes transformar la cadena recibida a minusculas, trabajar con ella, y a la hora de la separación usar la primera.

2) El tema de Subl...para saber si hay que separar estas has de ir a las siguientes consonantes. Me explico "sublingual", para saber si hay que separarla te tienes que ir a las siguientes consotantes, en este caso "ng" y ver como las separas. En ese caso tienes que cortar las silabas, es decir, quedaría "Sublin-gual". Ahora nos fijamos como queda lo que seríala segunda silaba. Si termina en consonante la "bl" se separa, mientras que si termina en vocal permanecerán unidas. Demomento todas las q he probado siguiendo el mecanismo explicado funciona. Eso si, comprobado de cabeza, que aun no empecé a programarlo xDD

SALUDOS.

EDITADO:
Corrijo, si termina en vocal devil "e-i" no se rompe, si termina en vocal fuerte se rompe.
Título: Re: Division Sílabica
Publicado por: JuanK en Sábado 24 de Enero de 2004, 15:45
Saludos..
bueno he estado muy ocupado con el trabajo en mi oficina y hace ya rato que no me asomaba por aqui,
en fin ahora mismo revisare la nueva solucion  que envio plaf y les anuncio que el reto se cerrara el sabado 31 de enero,
asi que animo a todos los participantes para que acaben el  reto.
Título: Re: Division Sílabica
Publicado por: JuanK en Sábado 24 de Enero de 2004, 20:12
Muy bien plaf---
lastimosamente para mi temo que cometi un error... verifique con mi progframa y tampoco valida lo de sublime... por obvias razones...
lamento mucho pero me equivoque...
lo siento

he seguido haciendo pruebas y todo esta ok.. te felicito has terminado el reto!!!!!!! :smartass:  :comp:


y eres el primero!!!!!! :smartass:  :smartass:

Lo mejor de tu programa es que es un codigo muy compacto!!! :comp:

en las mediciones preliminares de tiempo que he realizado en un Pentium 4 de 2.0 Ghz he obtenido estos resultados:

Cabe aclarar que los logre redireccionando la salida de pantalla a un archivo de texto, a travez del sistema operativo sin tocar lo programas, y que para medir el tiempo la unidad utilizada son los ticks, y la funcion es la funcion uclock().

Se tomaron 30 muestras de tiempo de ejecucion con el archivo de texto que se incluye en este post

tiempos de plaf:
Código: Text
  1.  
  2. 745
  3. 730
  4. 759
  5. 734
  6. 759
  7. 724
  8. 725
  9. 746
  10. 723
  11. 784
  12. 742
  13. 740
  14. 757
  15. 794
  16. 797
  17. 727
  18. 740
  19. 750
  20. 727
  21. 720
  22. 775
  23. 726
  24. 754
  25. 738
  26. 828
  27. 726
  28. 771
  29. 853
  30. 852
  31. 849
  32.  
  33. promedio :759,8333333
  34.  
  35.  

tiempos de juank
Código: Text
  1.  
  2. 768
  3. 813
  4. 735
  5. 767
  6. 730
  7. 735
  8. 755
  9. 797
  10. 755
  11. 741
  12. 801
  13. 738
  14. 758
  15. 756
  16. 735
  17. 745
  18. 795
  19. 745
  20. 729
  21. 812
  22. 746
  23. 743
  24. 744
  25. 745
  26. 763
  27. 740
  28. 739
  29. 754
  30. 753
  31. 731
  32. promedio  :755,6
  33.  
  34.  

me faltaron unas poquitas palabras del archivo por que las borre antes de punlicar el post:
archivo de texto:
Citar
guerrilla
experto
delirio
juez
jerga
descerebrado
catedral
concentrar
mesa
agujero
letargo
gimnasia
inmutar
abreviar
refresco
perro
hucha
allanar
Manuel
Puerta
Violencia
ciudad
cuidado
Luis
protagonistas
de
novela
dos
mesa
tecnologica
abuelita
murcielago
leal
catedral
concentrar
sublime
otorrinolaringologo

Como aun no se ha cerrado el reto puedes optimizar tu programa en cualquier sentido.. es decir volverlo mas compacto o más rapido.. en fin tu decides.

Recuerden todos que el reto se cierra el proximo sabado.
Título: Re: Division Sílabica
Publicado por: JuanK en Miércoles 28 de Enero de 2004, 03:36
Hola!!!
ya esta en desarrollo el proximo reto...
sera una sorpresa pero no sera facill.. aun nolo acabo asi que aun hay tiempo...
Título: Re: Division Sílabica
Publicado por: JuanK en Jueves 5 de Febrero de 2004, 04:51
Para
shephiroth
dreadlock
jonathan

saludos amigos,
el reto estaba abierto hasta el sabado que paso..
como no he visto ningun post de su parte, debo preguntarles quienes continuaran on el reto y quienes y no, en el caso de que alguno decida no continuar, me gustaria saber porque y los motivos, para de esta manera retroalimentar las dudas e inconvenientes que se hayan tenido,
por el momento el ganador absoluto y unico es plaf, y digo absoluto porque el programa que hizo es mucho mejor que el mio.

FELICITACIONES PLAF!!! :smartass:  :comp:  :angel:  :birthday:  :hippi:  :bravo:

bueno en todo caso no me fue tan mal, ya que aunque el codigo es largo y la verdad falta depurarlo bastante alcance a ser una milesimas más rapido :P :whistling:
esta es mi solucion:
Título: Re: Division Sílabica
Publicado por: shephiroth en Jueves 5 de Febrero de 2004, 10:04
Buenas. Yo la verdad al principio intenté empezarlo, incluso comenté la solución al sublime que espero os ayudase. Pero por diferentes razones debí de dejarlo puesto que el proyecto del cyber me lleva bastante tiempo. Eso si, al siguiente reto le daré duro desde el principio (si puedo xDD)

Por cierto, se que esto no es visual c++.net, pero alguno sabe como conectar dos programas sin usar MFC??

GRACIAS
Título: Re: Division Sílabica
Publicado por: © Jonathan © en Jueves 5 de Febrero de 2004, 12:43
Hola, yo pues tengo varios motivos, primero que pense en que podia hacerlo pero me di cuenta que no era facil ya que debia ponerle tiempo que era el segundo problema y que debia trabajar continuamente... hice tres veces el codigo, osea lo que una vez empece, todo por problemas con el rigido, hasta que por descuido el HD cayo al suelo y ese fue el fin de todo lo que habia comenzado una vez y el comienzo de un nuevo cambio para mi PC... desde ahi ya no me dieron ganas de continuar debido a la incomodidad de trabajo y a la falta de tiempo por buscar y trabajar para conseguir la comodidad necesaria. Espero me comprendas amigo, no es facil la situacion E y tu lo sabes mejor que yo. Saludos y Suerte :hola:
Título: Re: Division Sílabica
Publicado por: JuanK en Viernes 6 de Febrero de 2004, 04:56
Bueno tranquilos...
igual no es obligacion y hay cosas que tienen prioridad.
quiero escuchar los comentarios de todos  para que feliciten a plaf por su excelente trabajo...
ya viene el proximo reto.. es mas facil.. pero mas bonito
Título: Re: Division Sílabica
Publicado por: © Jonathan © en Lunes 9 de Febrero de 2004, 13:58
Pues PLAF, FELICITACIONES, es realemtne sorprendente la velocidad con la que resolviste y creaste el programa... en realidad debes ser un BOT, y esta segun dijiste debe ser la Matrix  ;)  :o ... en lo que dedusco por la velocidad qeu tienes que debes ser NEO  :o ... algo realmente sorprendente  ;) , Saludos y muy bueno tu trabajo :comp: .  :hola: