RosettaCodeData/Task/Isograms-and-heterograms/Python/isograms-and-heterograms.py

33 lines
1.0 KiB
Python

from collections import Counter
def find_n_isograms(wordlist):
n_isograms = []
for word in wordlist:
word_lower = word.lower()
freq = Counter(word_lower)
frequencies = freq.values()
if len(set(frequencies)) == 1 and next(iter(frequencies)) > 1:
n = next(iter(frequencies))
n_isograms.append((-n, -len(word), word))
n_isograms.sort()
return [word for _, _, word in n_isograms]
def find_heterograms(wordlist):
heterograms = []
for word in wordlist:
if len(word) > 10:
word_lower = word.lower()
if len(set(word_lower)) == len(word_lower):
heterograms.append((-len(word), word))
heterograms.sort()
return [word for _, word in heterograms]
with open('unidict.txt', 'r') as file:
wordlist = [line.strip() for line in file]
n_isograms_result = find_n_isograms(wordlist)
heterograms_result = find_heterograms(wordlist)
print("n-isograms (n > 1):", n_isograms_result)
print("Heterograms with more than 10 characters:", heterograms_result)