Dmustache
@Dmustache
Python, Cpp, SQL

Как перемешать между собой слова фразы?

Как перемешать меду собой отрезки фразы?
Дана фраза:
Если плоскость проходит через данную прямую, параллельную другой плоскости, и пересекает эту плоскость, то прямая пересечения плоскостей параллельна данной прямой
Как ее разделить на N равных частей и перемешать между собой при этом на выводе получить строку?
Мой код:
def chunk(in_string,num_chunks):
    in_string = letter.split(' ')
    chunk_size = len(in_string) // num_chunks
    if len(in_string) % num_chunks:
        chunk_size += 1
        iterator = iter(in_string)
        for _ in range(num_chunks):
            accumulator = list()
            for _ in range(chunk_size):
                try:
                    accumulator.append(next(iterator))
                except StopIteration:
                    break
            yield ' '.join(accumulator)
letter = 'Если плоскость проходит через данную прямую, параллельную другой плоскости, и пересекает эту плоскость, то прямая пересечения плоскостей параллельна данной прямой'

letter = list(chunk(letter, 3))

phrase = letter
while letter == phrase:
    letter = random.sample(letter, len(letter))
print(letter)
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
MinTnt
@MinTnt
letter = 'Если плоскость проходит через данную прямую, параллельную другой плоскости, и пересекает эту плоскость, то прямая пересечения плоскостей параллельна данной прямой'

def chunk(st, lns):
	import random
	mv = st.split()
	mv = [' '.join(mv[x:x+lns]) for x in range(0, len(mv), lns)]
	return ' '.join(random.sample(mv, len(mv)))
	
print(chunk(letter, 3))
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SoreMix
@SoreMix Куратор тега Python
yellow
import random

sentence = 'Если плоскость проходит через данную прямую, параллельную другой плоскости, и пересекает эту плоскость, то прямая пересечения плоскостей параллельна данной прямой'

chunk_size = 3
words = sentence.split()

chunked_words = []

for i in range(0, len(words), chunk_size):
    chunked_words.append(words[i:i + chunk_size])

random.shuffle(chunked_words)

new_sentence = ''

for chunk in chunked_words:
    new_sentence += ' '.join(chunk) + ' '

print(new_sentence)
Ответ написан
Комментировать
aRegius
@aRegius
Python Enthusiast
from itertools import chain
from random import shuffle
from more_itertools import chunked


sub_sentences = list(chunked(sentence.split(), 3))
shuffle(sub_sentences)
new_sentence = ' '.join(item for item in chain.from_iterable(sub_sentences))
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы