2 回答

TA貢獻1829條經驗 獲得超4個贊
這是一個解決方案。基本邏輯是:
識別元音 ( vowel_inx) 的所有位置。
為這些位置創建所有數字組合的叉積。
循環這個叉積,并通過將數字分配到它們在原始術語中的相應位置來創建新詞。
vowels = ["A", "E", "I", "O", "U", "Y"]
pre = "ANDRE"
import itertools
vowel_inx = [i for i in range(len(pre)) if pre[i] in vowels ]
ranges = [range(10) for _ in vowel_inx]
for comb in itertools.product(*ranges):
pw = list(pre)
for i in range(len(vowel_inx)):
pw[vowel_inx[i]] = str(comb[i])
print ("".join(pw))
輸出是:
0NDR0
0NDR1
0NDR2
0NDR3
0NDR4
0NDR5
0NDR6
0NDR7
0NDR8
0NDR9
1NDR0
1NDR1
1NDR2
...

TA貢獻2019條經驗 獲得超9個贊
這是一個正確的方法:
voyelle = ["A", "E", "I", "O", "U", "Y"]
def permute_single_index(word, index):
permutations = []
word_left = word[0:index]
word_right = word[index+1:]
for i in reversed(range(10)):
permutations.append(f"{word_left}{i}{word_right}")
return permutations
def testVoyellePrenom(pre):
upper_pre = pre.upper()
replace_indexes = [i for i, x in enumerate(upper_pre) if x in voyelle]
permutations = [upper_pre]
for ri in replace_indexes:
new_permutations = []
for word in permutations:
new_permutations += permute_single_index(word, ri)
permutations += new_permutations
print(permutations)
print(len(permutations))
def main():
testVoyellePrenom("Andre")
if __name__ == "__main__":
main()
你最終得到 121 個排列。
添加回答
舉報