Я пытаюсь сравнить два слова в файле - PullRequest
0 голосов
/ 09 ноября 2018

Попытка сравнить два слова в файле и построить график, в котором слова являются узлами, а соединения - ребрами, если узлы отличаются только одной буквой.

У меня нет узлов. Мне просто нужно выяснить, как сделать края. У меня есть файл: words.txt. words.txt содержит эти слова в разных строках:

fools
cools
pools
polls
poles
pales
sales
sages

Я пытаюсь написать функцию, которая в основном создает грань между словами, которые отличаются только буквой. Я начал здесь:

FILE = open(words.txt, "r")
for line in FILE:
    **assign word1**? e.g., word1=fools
    **assign word2**? e.g., word2=cools

как только слова назначены, я могу передать их в другую функцию, которая сравнивает их и назначает ребро, поскольку они отличаются только первой буквой.

1 Ответ

0 голосов
/ 09 ноября 2018

Вот один из способов сделать это, я только что добавил оператор print для имитации узла. Но я уверен, что вы сами можете понять, как построить график.

s = '''fools
cools
pools
polls
poles
pales
sales
sages'''

words = s.split('\n') # Do this properly according to your file structure
print(words)
for i in range(len(words)):
    word1 = words[i]
    for j in range(len(words)):
        word2 = words[j]
        res = [index for index in range(len(word1)) if word1[index] != word2[index]]
        if len(res) == 1: # They differ by one word
            print(word1,'---->', word2) # just arbitary node

Выходы:

fools ----> cools
fools ----> pools
cools ----> fools
cools ----> pools
pools ----> fools
pools ----> cools
pools ----> polls
polls ----> pools
polls ----> poles
poles ----> polls
poles ----> pales
pales ----> poles
pales ----> sales
sales ----> pales
sales ----> sages
sages ----> sales

А вот подключаемая функция, может помочь вам.

def differ_by_one_word(word1, word2):
    '''
    Returns True only if both the words differ by one letter
    '''
    res = [index for index in range(len(word1)) if word1[index] != word2[index]]
    if len(res) == 1:
        return True
    else:
        return False

print(differ_by_one_word('fools', 'pools'))
print(differ_by_one_word('fools', 'drools'))

Выходы:

True
False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...