如果文件中的两个单词仅相差一个字母,则尝试比较文件中的两个单词并制作一个图形,单词为节点,连接为边。
我的节点掉线了。我只需要弄清楚如何做边缘。我有一个文件: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
一旦分配了单词,我就可以将它们传递到我的另一个函数中,该函数比较它们并分配一个边,因为它们之间只有第一个字母不同。
答案 0 :(得分:1)
这是一种实现方法,我刚刚添加了一条print语句来模拟节点。但是我相信您可以弄清楚如何自己构造图形。
buildscript {
ext.kotlin_version = '1.3.0'
ext.gradle_version = '3.0.1'
输出:
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'))