tag:blogger.com,1999:blog-7415103.post6055403818021724378..comments2023-08-04T09:51:52.906+02:00Comments on reflexiones de fortran y otras basuras: El melenas de Cifras y Letras no tenía ni puta ideafortranhttp://www.blogger.com/profile/11425459665752142514noreply@blogger.comBlogger1125tag:blogger.com,1999:blog-7415103.post-48231284850946308452008-07-27T17:19:00.000+02:002008-07-27T17:19:00.000+02:00Fe de erratas:hay un bug en la versión de OCaml, q...Fe de erratas:<BR/>hay un bug en la versión de OCaml, que nos dejó un poco descolocados en el previo de la última LAN Party mientras les enseñaba el código a algunos colegas...<BR/><BR/>la función que compara los subsets de una palabra normalizada para ordenarlos por longitud sólo miraba la longitud de la lista, es decir, el número de letras diferentes (no sumaba el número de veces que aparecía cada letra).<BR/><BR/>lo he solucionado ordenando después las palabras, para que así de paso salgan también por orden alfabético después de por tamaño; con la siguiente función:<BR/><BR/>(*compara palabras primer por longitud y luego alfabeticamente *)<BR/>let cmp_by_length a b =<BR/> match (String.length a) - (String.length b) with<BR/> 0 -> String.compare a b<BR/> | n -> n<BR/><BR/>(* devuelve todos los anagramas y subanagramas que hay en el<BR/>diccionario para la palabra pasada por parametro*)<BR/>let get_anagrams dict word =<BR/> let rec priv_get_anagrams acc rest = <BR/> match rest with<BR/> [] -> acc<BR/> | h::t -> priv_get_anagrams (acc @ (Hashtbl.find_all dict h)) t<BR/> in<BR/> List.sort cmp_by_length (priv_get_anagrams [] (subsets (normalize word)))fortranhttps://www.blogger.com/profile/11425459665752142514noreply@blogger.com