33 lines
1.0 KiB
Python
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)
|