Генератор строк из столбцов
Доброго времени суток, нужно сделать генератор строк, есть 3 поля (textarea) в каждом построчно написаны слова.
Так вот нужно сгенерировать все возможные комбинации этих слов, учитывая только очередь. например: в поле 1 написано: Коля, Вася, Витя в поле 2 написано: Ушел, Пришел, Не было в поле 3 написано: Домой, На работу, В отпуск -----------Результат------------------ Коля Ушел Домой Коля Пришел Домой Коля Не было Домой Коля Ушел На работу Коля Пришел На работу Коля Не было В отпуск и так далее.... Вот не могу только понять как его реализовать? Поделитесь небольшим примером! |
Цитата:
Превращаешь ее в массив... Случайно выбираешь элемент... Вот из трех таких случайных элементов собираешь строку. |
Цитата:
|
Цитата:
|
Цитата:
var name='Коля,Вася,Витя'; var action='Ушел,Пришел,Не было'; var target='Домой,На работу,В отпуск' var str=''; str+=get(name); str+=' '+get(action); str+=' '+get(target); alert(str); function get(Str){ var a=Str.split(','); var i=Math.floor(a.length*Math.random()); return a[i]; }; |
Цитата:
Тогда из строк делаем массивы... Те массивы в массив... И тремя циклами все это хозяйство выводим! |
Такой вот код вышел, но чет не пойму не работает.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Генератор</title> </head> <style>textarea{height:300px;padding:0;margin:0;width:100px;}.generate{width:308px;text-align:center;}.result{background:rgba(155,0,155,0.5)}</style> <script type="javascript"> $('.generate').click( function generate(){ var name='Коля,Вася,Витя'; var action='Ушел,Пришел,Не было'; var target='Домой,На работу,В отпуск' var str=''; str+=get(name); str+=' '+get(action); str+=' '+get(target); alert(str); function get(Str){ var a=Str.split(','); var i=Math.floor(a.length*Math.random()); return a[i]; }; }) </script> <body> <textarea class="gruz"> Коля Вася Витя </textarea> <textarea class="gorod"> Ушел Пришел Не было </textarea> <textarea class="avto"> Домой На работу В отпуск </textarea><br/> <input type="button" class="generate" value="СГЕНЕРИРОВАТЬ"/> <div class="result"></div> </body></html> |
karakym,
Цитата:
|
Что не так сделал? Не работает!
var gruz = document.querySelector('.gruz'), gorod = document.querySelector('.gorod'), avto = document.querySelector('.avto'), button = document.querySelector('.generate'); button.onclick = function () { var str = ''; str+=get(gruz); str+=' '+get(gorod); str+=' '+get(avto); alert(str); var myList = str.split('\n'); for (var i = 0, ln = myList.length; i < ln; ++i) alert(myList[i]); } |
Цитата:
<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=windows-1251' /> <!-- <script src='http://code.jquery.com/jquery-latest.js'></script> <script src="https://code.angularjs.org/1.3.9/angular.min.js"></script> <script src="https://code.angularjs.org/1.3.9/angular-route.js"></script> --> <style type='text/css'> </style> <script type='text/javascript'> function test(){ var arr=[ document.getElementById('gruz').value.split(/\n/), document.getElementById('gorod').value.split(/\n/), document.getElementById('avto').value.split(/\n/) ]; var or=document.getElementById('result'); for (var i=0; i<arr[0].length; i++) { for (var j=0; j<arr[1].length; j++) { for (var k=0; k<arr[2].length; k++) { var str=arr[0][i]+' '+arr[1][j]+' '+arr[2][k]; or.innerHTML=or.innerHTML+str+'<br />'; }; }; }; }; </script> </head> <body> <textarea id="gruz"> Коля Вася Витя</textarea> <textarea id="gorod"> Ушел Пришел Не было</textarea> <textarea id="avto"> Домой На работу В отпуск</textarea> <br/> <input type="button" onclick='test();' class="generate" value="СГЕНЕРИРОВАТЬ"/> <div id="result"></div> </body> </html> |
ksa,
Шайтанама!:write: Спасибо, то что доктор прописал!:victory: |
А подскажите пожалуйста еще такую вещь:
в первом textarea есть 5 строк, но их не нужно комбинировать а просто чередовать! Как это выполнить? |
Цитата:
|
ksa,
Ну смотри что я имею в виду: 1 строка: Коля, Вася, Витя 2 строка: Любит, Не любит 3 строка: Машу, Дашу, Иру -------------------------------- Получится 18 комбинаций, а именно: Цитата:
Цитата:
|
Цитата:
|
Хорошо зайдем с другой стороны!
Представь что в первой строке только одно слово, например: "КоляВасяВитя" (а значит с ним будет только 12 комбинаций) И нужно что бы первое слово каждой сточки было не "КоляВасяВитя", а по очереди для каждой строки Коля, Вася, Витя, Коля, Вася.... Если написать 4 строки в пером textarea, в результате будут вставляться по очереди, но комбинировать будет как буд то там одна строка! |
Расскажу поподробней:
Есть excel файл который будет импортирован в базу данных. Есть строка "Название" для которого очень много позиций, и вот для автоматизации мне нужен такой скрипт. Скрипт сделал все отлично. В первом textarea мне нужно всего одно слово для комбинации, для других textarea их намного больше. Все хорошо генерирует, спасибо еще раз за скрипт. Но вот не задача, в первом textarea всего одно слово "Грузоперевозки", как то однотонно получается и хотелось бы, что бы слово менялось иногда (Хорошо бы по очереди, но можно и случайно) между словами "Перевозка груза, грузоперевозки и прочее", данный скрипт подставит мне слово Перевозка груза так, что у меня появятся лишние строки, но они совсем не нужны! Вот и бьюсь как рыба об лёд... |
Цитата:
|
Теперь чет вообще ничего не работает!
function test(){ var cols=0; var arr=[ document.getElementById('gruz').value.split(/\n/), document.getElementById('gorod').value.split(/\n/), document.getElementById('avto').value.split(/\n/) ]; if ($('#chkgruz').is(':checked')) { var arr[0]=Math.floor(document.getElementById('gruz').value.split(', ').length*Math.random()) } else { } var or=document.getElementById('result'); for (var i=0; i<arr[0].length; i++) { for (var j=0; j<arr[1].length; j++) { for (var k=0; k<arr[2].length; k++) { var str=arr[0][i]+' '+arr[1][j]+' '+arr[2][k]; cols=cols+1; or.innerHTML=or.innerHTML+'<td>'+str+'</td>'; }; }; }; alert('Всего получилось '+cols+' позиций.'); }; |
Цитата:
|
ksa,
Я добавил чекбокс и пытался к нему проверку добавить, если нажат, то рандомно будет первое поле иначе ничего не меняется. Но что то пошло не так( |
karakym, дело в том, что твои задумки нужно правильно отображать в коде программы...
Просто так писать что-то не всегда дает нужный результат. Нужно четко понимать, что ты собрался сделать. И с чем ты в итоге работаешь. Так же нужно научиться тестировать программки, дабы понять, что происходит там внутри... |
ksa,
Да вот дурная моя голова, когда предлагали курс javascrip я отказался, а щас даже и времени нет! Я понимаю логику скриптов, вся проблема в синтаксисе! что бы сделать подстановку по очереди можно например установить строчке в первом поле разделитель запятую для цикла будет считаться, что там одна строка а внутри цикл будет проверять переменную с количеством слов в этой же строчке разделенной запятыми и будет добавлять +1 и будет вставлять такое слово какое значение переменной |
ksa,
Помоги пожалуйста код составить! |
Цитата:
Импорт, это означает запись каждой записи в соответствующее поле таблицы базы. Следовательно при импорте о файле известно все. А коли известно и что-то не удовлетворяет, то и заменить не сложно. Кто же вам мешает описать массив значений ["грузит", "не грузит", "уже разгрузил"], перемешивая его, брать первый его элемент? |
karakym, я даже не понял, что тебе в итоге нужно... :no:
|
ksa,
Нужно, что бы строки с первого поля не комбинировались с остальными, а просто подставлялись по очереди или случайным образом! |
В общем, как сделать, что бы строки с первого поля комбинировались с остальными как одна строка, просто случайно подменялись как варианты этой строки!?
|
Часовой пояс GMT +3, время: 22:15. |