Замиксовать слова! как?

Автор nEwBe, 09 марта 2006, 17:34:39

0 Пользователи и 1 Гость просматривают эту тему.

nEwBe

Народ, нужно замиксовать слова. Т.е. есть набор слов, их надо "перемешать", что бы например в трех файлах были одинаковые слова, но разное их взаимное расположение. Не спрашивайте зачем =) Кто следит за моими бредовыми постами - поймет ;) Просто интересно - если ли такие проги, или реально как нить это "сафффковыми" методами реализовать? Буду благодарен за советы
Як цуп цоп парви каридола, тык паривила тиц тандула... (с)

vAlex_

#1
Вот тебе решение (сохранить как words_rand.wsf; пишется за 5 минут):

<package><job id="WordsRand"><script language="JScript">
var words = ['слово1', 'слово2', 'слово3', 'словоN'];

var n=words.length;
var fso, tf; fso = new ActiveXObject("Scripting.FileSystemObject");

for (k=0; k<3; k++) {
 for (i=0;i < n;i++) {
  var rnd=Math.floor(Math.random( ) * n);
  var r=words[i];
  words[i]=words[rnd];
  words[rnd]=r;
 }

   tf = fso.CreateTextFile("c:\\words"+k+".txt", true);
   tf.Write(words);
   tf.Close();
}

</script></job></package>


Результат будет в файлах C:\words*.txt

Примечание: на XP и 2003 должно работать. Для остальных возможны варианты.
Данный пост и все возможно содержащиеся в нём ссылки поставляются по принципу "AS IS", т.е. "как есть". Вы используете его на свой риск. Автор не будет отвечать ни за какие потери данных, любую упущенную выгоду в процессе использования.
----------------------------------
Программирую быстро, дешево, качественно.
Два варианта

nEwBe

vAlex_
вай, жизнь спас! пасиб огромное !!!!!
Як цуп цоп парви каридола, тык паривила тиц тандула... (с)

vAlex_

#3
Пожалуйста.

Небольшое изменение скрипта (теперь считывает из внешнего файла c:\words.txt, слова д.б. разделены пробелами):

<package><job id="Word_rand_2"><script language="JScript">
var fso, tf; fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.OpenTextFile("c:\\words.txt", 1);
s=tf.ReadAll();
var words = s.split(" ");
var n=words.length;
var iter=3; //Количество повторов

for (k=0; k<iter; k++) {
 for (i=0;i < n;i++) {
  var rnd=Math.floor(Math.random( ) * (n));
  var r=words[i];
  words[i]=words[rnd];
  words[rnd]=r;
 }

   tf = fso.CreateTextFile("c:\\words"+k+".txt", true);
   tf.Write(words);
   tf.Close();
}

</script></job></package>


И можно поменять количество файлов на выходе.
Данный пост и все возможно содержащиеся в нём ссылки поставляются по принципу "AS IS", т.е. "как есть". Вы используете его на свой риск. Автор не будет отвечать ни за какие потери данных, любую упущенную выгоду в процессе использования.
----------------------------------
Программирую быстро, дешево, качественно.
Два варианта

nEwBe

vAlex_
ну нету слов =) еще раз спасибо!
Як цуп цоп парви каридола, тык паривила тиц тандула... (с)

nEwBe

слушай, а как что изменить надо что бы при выводе слова не через "СЛОВО,СЛОВО" были а "СЛОВО СЛОВО" .. т.е. через пробел
Як цуп цоп парви каридола, тык паривила тиц тандула... (с)

vAlex_

Вот так:
<package><job id="DoneInJS"><script language="JScript">
var fso, tf; fso = new ActiveXObject("Scripting.FileSystemObject");
tf = fso.OpenTextFile("c:\\words.txt", 1);
s=tf.ReadAll();
var words = s.split(" ");
var n=words.length;


for (k=0; k<3; k++) {
 for (i=0;i < n;i++) {
  var rnd=Math.floor(Math.random( ) * n);
  var r=words[i];
  words[i]=words[rnd];
  words[rnd]=r;
 }

 tf = fso.CreateTextFile("c:\\words"+k+".txt", true);
 for (i=0;i < n;i++) tf.Write(words[i]+" ");
 tf.Close();
}

</script></job></package>


И ещё здесь исправлена одна ошибка.
Данный пост и все возможно содержащиеся в нём ссылки поставляются по принципу "AS IS", т.е. "как есть". Вы используете его на свой риск. Автор не будет отвечать ни за какие потери данных, любую упущенную выгоду в процессе использования.
----------------------------------
Программирую быстро, дешево, качественно.
Два варианта

nEwBe

vAlex_ ок, и еще раз спасибо =)
Як цуп цоп парви каридола, тык паривила тиц тандула... (с)

vAlex_

Последняя версия:

<package><job id="DoneInJS"><script language="JScript">
var fso, tf; fso = new ActiveXObject("Scripting.FileSystemObject");

var infile="c:\\words.txt";//путь к исходному файлу
var iter=3; //Количество повторов
var insep=" ";//разделитель во входящем файле
var outsep=" ";//разделитель в выходном файле

tf=fso.OpenTextFile(infile, 1);
s=tf.ReadAll();
var words = s.split(insep);
var n=words.length;

for (k=0; k<iter; k++) {
 for (i=0;i < n;i++) {
  var rnd=Math.floor(Math.random( ) * n);
  var r=words[i];
  words[i]=words[rnd];
  words[rnd]=r;
 }

 tf = fso.CreateTextFile("c:\\words"+k+".txt", true);
 for (i=0;i < (n-1);i++) tf.Write(words[i]+outsep);
 tf.Write(words[n-1]);
 tf.Close();
}

</script></job></package>
Данный пост и все возможно содержащиеся в нём ссылки поставляются по принципу "AS IS", т.е. "как есть". Вы используете его на свой риск. Автор не будет отвечать ни за какие потери данных, любую упущенную выгоду в процессе использования.
----------------------------------
Программирую быстро, дешево, качественно.
Два варианта

nEwBe

хех! =))) ну тебя прям за душу взяло =) вообще полезный скрипт, для определенных целей
Як цуп цоп парви каридола, тык паривила тиц тандула... (с)

vAlex_

#10
Цитироватьхех! =))) ну тебя прям за душу взяло =)
Да нет...
Я такие вещи часто пишу, когда требуется рутинную работу автоматизировать.
Но обычно для себя - поэтому, особо не думаю об удобстве или интерфейсе...
А когда, всё-таки, публично выкладываю приходится доделывать.
Конкретно в этом скрипте, нет проверки ошибок, т.е. вдруг файл не существует или прав не хватает... Интерфейса нет...
Данный пост и все возможно содержащиеся в нём ссылки поставляются по принципу "AS IS", т.е. "как есть". Вы используете его на свой риск. Автор не будет отвечать ни за какие потери данных, любую упущенную выгоду в процессе использования.
----------------------------------
Программирую быстро, дешево, качественно.
Два варианта

vAlex_

#11
ЦитироватьЯ такие вещи часто пишу, когда требуется рутинную работу автоматизировать.
Вот ещё у себя раскопал:
скрипт, который создаёт web-ярлыки из 2-х файлов - список url и список названий (сохранить как .wsf):

<job><script language="JScript">
var names = new Array();
var wwws = new Array();
var fso, uf, nf; fso = new ActiveXObject("Scripting.FileSystemObject");

var namefile="c:\\names.txt";//путь к файлу с названиями
var urlfile="c:\\urls.txt";//путь к файлу с url
var insep=" ";//разделитель во входящих файлах

uf=fso.OpenTextFile(urlfile, 1);
nf=fso.OpenTextFile(namefile, 1);
namestring=nf.ReadAll();
wwwstring=uf.ReadAll();
names = namestring.split(insep);
wwws = wwwstring.split(insep);

Shell = new ActiveXObject("WScript.Shell");
for (var i = 0; i < names.length; i++) {
var oUrlLink = Shell.CreateShortcut(names[i]+".url");
oUrlLink.TargetPath = wwws[i];
oUrlLink.Save();
}
</script></job>
Данный пост и все возможно содержащиеся в нём ссылки поставляются по принципу "AS IS", т.е. "как есть". Вы используете его на свой риск. Автор не будет отвечать ни за какие потери данных, любую упущенную выгоду в процессе использования.
----------------------------------
Программирую быстро, дешево, качественно.
Два варианта

nEwBe

прикольно, это что-то типа Избранного чтоль? А ты скажи зачем ты это писал - так мне проще будет понять ее возможности =)
Як цуп цоп парви каридола, тык паривила тиц тандула... (с)

vAlex_

Нужно было из Excel-файла, в котором были 2 колонки - url и название, сделать web-ярлыки типа избранного.

Соответственно делаешь экспорт из Excel в txt, передаёшь в скрипт и получаешь кучу ярлыков, которые впоследствии закидываешь в Избранное.
Данный пост и все возможно содержащиеся в нём ссылки поставляются по принципу "AS IS", т.е. "как есть". Вы используете его на свой риск. Автор не будет отвечать ни за какие потери данных, любую упущенную выгоду в процессе использования.
----------------------------------
Программирую быстро, дешево, качественно.
Два варианта

Leshek

А почему бы это не сделать средствами Visual Basic прямо из-под Excel'я? По-моему ещё проще будет.