¿Qué son las palabras ordenadas?
Una palabra ordenada es una palabra en la que las letras aparecen en orden alfabético. Por ejemplo abadía y suciedad . El resto de las palabras están desordenadas por ejemplo geeks
La tarea a mano
Esta tarea está tomada de Rosetta Code y no es tan mundana como parece en la descripción anterior. Para obtener una gran cantidad de palabras, usaremos un diccionario en línea disponible en http://www.puzzlers.org/pub/wordlists/unixdict.txt que tiene una colección de alrededor de 2500 palabras y, dado que usaremos Python, podemos hágalo raspando el diccionario en lugar de descargarlo como un archivo de texto y luego realizar algunas operaciones de manejo de archivos en él.
Requisitos:
pip install requests
Código
El enfoque será recorrer la palabra completa y comparar los valores ascii de los elementos en pares hasta que encontremos un resultado falso; de lo contrario, se ordenará la palabra.
Por lo que esta tarea se dividirá en 2 partes:
Raspado
- Usando las requests de la biblioteca de python, obtendremos los datos de la URL dada
- Almacene el contenido obtenido de la URL como una string
- Descodificación del contenido que suele estar codificado en la web mediante UTF-8
- Convertir la string larga de contenido en una lista de palabras
Encontrar las palabras ordenadas
- Recorriendo la lista de palabras
- Comparación por pares del valor ASCII de cada carácter adyacente en cada palabra
- Almacenar un resultado falso si un par no está ordenado
- De lo contrario imprimiendo la palabra ordenada
# Python program to find ordered words import requests # Scrapes the words from the URL below and stores # them in a list def getWords(): # contains about 2500 words url = "http://www.puzzlers.org/pub/wordlists/unixdict.txt" fetchData = requests.get(url) # extracts the content of the webpage wordList = fetchData.content # decodes the UTF-8 encoded text and splits the # string to turn it into a list of words wordList = wordList.decode("utf-8").split() return wordList # function to determine whether a word is ordered or not def isOrdered(): # fetching the wordList collection = getWords() # since the first few of the elements of the # dictionary are numbers, getting rid of those # numbers by slicing off the first 17 elements collection = collection[16:] word = '' for word in collection: result = 'Word is ordered' i = 0 l = len(word) - 1 if (len(word) < 3): # skips the 1 and 2 lettered strings continue # traverses through all characters of the word in pairs while i < l: if (ord(word[i]) > ord(word[i+1])): result = 'Word is not ordered' break else: i += 1 # only printing the ordered words if (result == 'Word is ordered'): print(word,': ',result) # execute isOrdered() function if __name__ == '__main__': isOrdered()
Output: aau: Word is ordered abbe: Word is ordered abbey: Word is ordered abbot: Word is ordered abbott: Word is ordered abc: Word is ordered abe: Word is ordered abel: Word is ordered abet: Word is ordered abo: Word is ordered abort: Word is ordered accent: Word is ordered accept: Word is ordered ........................... ........................... ...........................
Referencias: Código Rosetta
Este artículo es una contribución de Palash Nigam . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA