Как объединить и переставить два списка слов

1684
FernandoSBS

Я хотел бы объединить и / или переставить слова из списка до 3 раз. Например:

Если у меня есть один список с:

apple orange cafe 

и еще один список с:

11 22 33 

он должен производить комбинации, такие как:

11appleorange22 33orange11cafe2211 orangecafe3333apple1133 

По логике слово из любого списка можно повторять до 3 раз, не более. Но в любом порядке и любой перестановке. Как мне этого добиться?

0
Следуя вашей логике `112233112233112233appleorangecafeappleorangecafeappleorangecafe` будет вашей самой длинной комбинацией из вашего примера, верно? nixda 10 лет назад 0
верно, точно FernandoSBS 10 лет назад 0
@ nixda, где ты? FernandoSBS 10 лет назад 0
Вам нужно программное обеспечение или это может быть код? Andy 10 лет назад 0
Нужна часть программного обеспечения. Вы знаете, я пробовал гуглить около 1 часа подряд и не могу поверить, что не смог найти программу, которая делает это, что я хочу. есть веб-сайт, который делает почти все (но только объединяет, не переставляя), но ограничивает количество слов. Поэтому я считаю, что это должно быть локальное программное обеспечение. FernandoSBS 10 лет назад 0

2 ответа на вопрос

1
Paulo Almeida

Если у вас под рукой есть компьютер с Linux (или Mac OS X), создайте файл testс таким содержимым:

apple orange cafe 11 22 33 

следуют шесть пустых строк. Затем запустите это:

cat test test test|shuf|head -n 18|grep -v ^$|paste -s -d"\0" 

cat объединяет файлы, shuf перемешивает строки, head получает первые 18 строк (чтобы вы могли получить максимальную строку), grep исключает пустые строки и вставляет их вместе.

РЕДАКТИРОВАТЬ : Извините, только заметил тег Windows после публикации. Вы можете установить Cygwin для этого, но вы можете просто взять принцип и реализовать что-то еще.

любой способ сделать это с powershell? Кроме того, как насчет пустых строк, если у меня есть список из 30 слов, то я должен поставить 30 пустых строк в конце? FernandoSBS 10 лет назад 0
Возможно, но я не знаю как. Вы можете сделать это и в Excel (перемешать строки, транспонировать, объединить). Paulo Almeida 10 лет назад 0
Да, с помощью этого метода вам нужно будет поставить столько пустых строк в конце, сколько у вас есть слов, но если вы реализуете это по-другому, вы можете получить только слова и получить их случайное число. Я просто не знал ни о каком непосредственном способе сделать это в командной строке. Paulo Almeida 10 лет назад 0
Итак, как вывести его в текстовый файл? FernandoSBS 10 лет назад 0
В Linux перенаправьте вывод, добавив «> имя файла» к команде. Paulo Almeida 10 лет назад 0
и если я хочу, чтобы некоторые слова использовались только в начале, а также не повторялись? FernandoSBS 10 лет назад 0
Кроме того, он будет создавать все возможные комбинации, просто выполнив эту команду? FernandoSBS 10 лет назад 0
Чтобы добавить слова раньше, было бы проще написать скрипт и сначала вывести эти постоянные слова, а затем результат команды перетасовки. И нет, он не создает все возможные комбинации (если вы не запускаете его в цикле и не сохраняете новые перестановки по мере их поступления, но это глупо; вы можете написать скрипт для этого). Paulo Almeida 10 лет назад 0
Мне нужно произвести все комбинации. Могу ли я использовать вашу команду или лучше начать с нуля? FernandoSBS 10 лет назад 0
1
STTR

командная строка, экв cat test test test|shuf|head -n 18|grep -v ^$|paste -s -d"\0":

powershell $r=New-Object Random;1..3^|%^|select -f 18^|%{[array]$A+=$_};1..$A.Count^|%{$A[$r.Next(0,$A.Count-1)]}^|?{$_.Length -ne 0}^|%{$S+=$_};$S 

cat test test test приблизительное соответствие `` 1..3 ^ |% `

shuf Примерное соответствие (перестановочные строки powershell в трубе):

$r=New-Object Random; ... %{[array]$A+=$_};1..$A.Count^|%{$A[$r.Next(0,$A.Count-1)]} 

head -n 18 приблизительная переписка select -f 18

grep -v ^$ приблизительная переписка ?{$_.Length -ne 0}

paste -s -d"\0" приблизительная переписка %{$S+=$_};$S

когда увидеть командную строку:

cat test test test|shuf|head -n 18|grep -v ^$|paste -s -d"\0" 

вообразил тип файла - test:

1 2 3 5  7 8 

использовать файл test:

apple orange cafe 11 22 33 

shuffle1.ps1:

$r=New-Object Random;1..3|%|select -f 18|%{[array]$A+=$_};1..$A.Count|%{$A[$r.Next(0,$A.Count-1)]}|?{$_.Length -ne 0}|%{$S+=$_};$S 

Для генерации текста из шаблонов больше подходят другие языки.

Требуется специалист по Common Lisp и C. Может быть, специалист по Haskell.

Если необходимо математическое символьное вычисление, то это, вероятно, Maxima.

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

Было бы очень хорошо, если бы вы полностью описали свою проблему. Архитектурно.

это все должно быть помещено в скрипт powershell? Выводит ли он все комбинации? FernandoSBS 10 лет назад 0
извините, но я не понимаю ваш пост, не могли бы вы объяснить каждый шаг лучше? FernandoSBS 10 лет назад 0
Я забыл пароль для RAR-файла, и я пытаюсь выяснить это с помощью общих слов, которые я использую. FernandoSBS 10 лет назад 0
@FernandoSBS использует `Passware Kit Professional` ... STTR 10 лет назад 1
отличная программа. Единственным недостатком является то, что я не могу использовать ТОЛЬКО слова из списка слов, так как я должен установить количество символов. FernandoSBS 10 лет назад 0