Я хотел бы написать скрипт на Python, и у меня есть слово для ABDEB в моей руке. Я хочу превратить это слово в массив, а затем перемешать буквы внутри слова и получить слова в разных сочетаниях. Кроме того, эти комбинации могут содержать повторяющиеся буквы и образовывать столбец;

BBBED, EEEEA, ADDEA,

И т.п.

В конце концов, я хотел бы поместить эти слова в текстовый файл.

Как я могу это сделать?

Буду признателен, если вы поможете.

-4
mbsen 2 Май 2019 в 15:44

3 ответа

Попробуй это.

import itertools
x = list('ABDEB')
a=[''.join(p) for p in itertools.product(x, repeat=len(x))]
print(a)

ВЫХОД:

['AAAAA', 'AAAAB', 'AAAAD', 'AAAAE', 'AAAAB', 'AAABA',...]

Для сохранения в файл используйте команду ниже.

import numpy as np
np.savetxt('test.txt', a, delimiter=" ", fmt="%s")
1
Shehan Ishanka 2 Май 2019 в 13:12

Используйте random.shuffle. Это быстрее, чем простой алгоритм, так как он использует случайную последовательность Фишера-Йейтса. Это работает за O (N) время, и это идеальный случай.

Ваша собственная реализация, скорее всего, запустится за O (n ^ 2) времени

0
Alec Alameddine 2 Май 2019 в 12:57

Один из самых простых способов - использовать функцию random.shuffle: https://docs.python.org/3/library/random. HTML # random.shuffle

Что касается записи слов в файл, это довольно тривиальное упражнение, поэтому я бы предложил немного поискать этот ответ, так как есть много способов сделать это, а ваша спецификация немного неясна.

0
jimf 2 Май 2019 в 12:47