w00x Posted March 28, 2013 Share Posted March 28, 2013 Тази Даниела по-глупава от куче бе. Емо и той не е от най-умните, но поне сигурно може да си пише името. Link to comment Share on other sites More sharing options...
AssassiN Posted March 28, 2013 Share Posted March 28, 2013 Ти пък какво се засягаш? Да не ги познаваш? Link to comment Share on other sites More sharing options...
djadomraz Posted March 28, 2013 Share Posted March 28, 2013 Въпросната Даниела онази с Худидититата ли е? Link to comment Share on other sites More sharing options...
mIRCata Posted March 28, 2013 Share Posted March 28, 2013 Сортираш ги по големина числата и почваш да събираш първото с последното предпоследното с второто и така. Първите двама с последните двама в една група 3и 4 с 13 и 14 и така. Това ти е оптималния вариант според мен. Поне това се сещам за 2 минути размисъл Сега се сещам и варианти където може да не е точно така, и да се наложи последния да е с последните 3, но горе долу идеята е да се сортират и да се правят комбинации първи с последен. Може би вариатн е да се съберат всички 16, да се получи средна стойност и от сортираните да се почне да се събират до достигане на средния сбор или 4-ки. Link to comment Share on other sites More sharing options...
djadomraz Posted March 28, 2013 Share Posted March 28, 2013 Точно така! В перфектния вариант, въпросните числа са с имена. Ще ти го напиша от любов към спорта. А колкото до статията хората се опитват да го решат културно без да пробват всички възможни варианти, само че при теб тези варианти са много малко (списъка е само 16 елемента и се дели на 4 групи по 4 елемента) - това пълното изчерпване на вариантите ще мине за отрицателно време и няма какво да се мисли Link to comment Share on other sites More sharing options...
AssassiN Posted March 28, 2013 Share Posted March 28, 2013 Ще ми го напишеш как? Така че да си въвеждам имена и съответните числа и да ми излизат отборите? Link to comment Share on other sites More sharing options...
djadomraz Posted March 28, 2013 Share Posted March 28, 2013 Да - една тъпа и проста HTML страница с още по-глупав алгоритъм. Ама няма да е веднага Link to comment Share on other sites More sharing options...
AssassiN Posted March 28, 2013 Share Posted March 28, 2013 Ок, ще чакам! Пиеш много скъпи уискита, ама за бира ще се разберем... Link to comment Share on other sites More sharing options...
gado Posted March 28, 2013 Share Posted March 28, 2013 Деба тоя еврофутбол.... Link to comment Share on other sites More sharing options...
djadomraz Posted March 28, 2013 Share Posted March 28, 2013 Ок, ще чакам! Пиеш много скъпи уискита, ама за бира ще се разберем... Аз го написах ама верно хората правилно говорят там за оптимизации. Бройката на вариантите е 416 и javascript-a загива Link to comment Share on other sites More sharing options...
mIRCata Posted March 28, 2013 Share Posted March 28, 2013 Аз го написах ама верно хората правилно говорят там за оптимизации. Бройката на вариантите е 416 и javascript-a загиваАко въведените числа ги събереш и разделиш на броя на групите и пробваш да въртиш числата че да приближат полученото число няма ли да помогне да изрежеш вариантите Link to comment Share on other sites More sharing options...
djadomraz Posted March 28, 2013 Share Posted March 28, 2013 Миро, не се сещам какво имаш предвид и как би помогнало. Ето го кода (слагам го в спойлер че е дългичък като за пост иначе като код е ок). Ако искаш модифицирай го <!DOCTYPE> <html> <head> <title>Test</title> <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet"> <style> #form_controls label { width: 80px; text-align: right; padding-right: 5px; } .controls { margin-bottom: 5px; } .controls input { margin-right: 5px; } </style> </head> <body> <div class="container"> <div class="row"> <form class="span4"> <fieldset class="form-inline"> <legend>Legend</legend> <div id="form_controls"></div> <div class="form-actions"> <button class="btn btn-primary" id="btnSplit">Find Best Partitioning</button> </div> </fieldset> </form> <div class="span8"> <legend>Results</legend> <div id="results" class="row"> </div> </div> </div> </div> <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script> <script> var bestSplit; var bestSplitDelta = 9999; function EvaluateSplit(items) { var teams = [[],[],[],[]]; var teamWeight = [0, 0, 0, 0]; var teamSize = [0, 0, 0, 0]; for (var i = 0; i < 16; i++) { teams[items[i].team].push(i); teamWeight[items[i].team] += items[i].weight; } for (var i = 0; i < 4; i++) if (teams[i].length != 4) return; // invalid teams var minWeight = Math.min.apply(null, teamWeight); var maxWeight = Math.max.apply(null, teamWeight); teamDelta = maxWeight - minWeight; if (teamDelta < bestSplitDelta) { bestSplit = teams; bestSplitDelta = teamDelta; } } function SplitItems(ndx, items) { for (var i = 0; i < 4; i++) { $("#t" + i).text(i); items[ndx].team = i; if (ndx < 15) { SplitItems(ndx + 1, items); } else { EvaluateSplit(items); } } } function DisplayBestSplit(items) { $("#results").html(""); console.log(bestSplit); for (var t = 0; t < 4; t++) { var $div = $("<div class='span2'></div>"); var teamWeidht = 0; for (var n = 0; n < 4; n++) { $div.append(items[bestSplit[t][n]].description); teamWeight += items[bestSplit[t][n]].weight; } $div.append("team weight: " + teamWeight); $("#results").append($div); } } function InitializeForm() { for (var i = 1; i <= 16; i++) { var $div = $("<div class='controls'><label>" + i + ".</label></div>"); var $inp1 = $("<input type='text' placeholder='description' class='input-medium' />").attr("id", "name" + i); var $inp2 = $("<input type='number' placeholder='weight' class='input-mini' />").attr("id", "weight" + i); $inp1.val("item #" + i); $inp2.val((Math.random() * 150).toFixed(0)); $div.append($inp1).append($inp2).append("<span id='t"+i+"'></span>"); $("#form_controls").append($div); } $("#btnSplit").click(function (event) { event.preventDefault(); var items = []; for (var i = 1; i <= 16; i++) { var rec = { description: $("#name" + i).val(), weight: $("#weight" + i).val(), team: 0 }; items.push(rec); } bestSplitDelta = 9999; SplitItems(0,items); DisplayBestSplit(items); }); } InitializeForm(); </script> </body> </html> Проблема е че онази функция върти 16 броя цикли от 1 до 4 което ефективно генерира 4 на 16та степен комбинации - т.е. 4 294 967 296. Мислех си че ще е по-бързо но не би. Поне с javascript. Link to comment Share on other sites More sharing options...
Grimjaur Posted March 28, 2013 Share Posted March 28, 2013 Има ли някой хайлазин, дето да пътува по-често между София и Пловдив? Link to comment Share on other sites More sharing options...
gado Posted March 28, 2013 Share Posted March 28, 2013 Има ли някой хайлазин, дето да пътува по-често между София и Пловдив? Насьо... Прати и съвсем малко восъчна паста, щот искам да пробвам нещо, пък не ми се взима цяла кутия заради едната проба. Link to comment Share on other sites More sharing options...
kotora Posted March 28, 2013 Share Posted March 28, 2013 Аз пътувам всеки петък почти Link to comment Share on other sites More sharing options...
Grimjaur Posted March 28, 2013 Share Posted March 28, 2013 Ква точно восъчна? Которе, ша се разберем нещо. Link to comment Share on other sites More sharing options...
kotora Posted March 28, 2013 Share Posted March 28, 2013 Утре ще пътувам,ако има нещо спешно.Само,че съм зает сутринта.Трябва да правя реферат по Човешки ресурси... Link to comment Share on other sites More sharing options...
Grimjaur Posted March 28, 2013 Share Posted March 28, 2013 Не е спешно. Галин само да каже ква паста му трябва... Link to comment Share on other sites More sharing options...
djadomraz Posted March 28, 2013 Share Posted March 28, 2013 С лека оптимизация това с разделянето тръгна :-) <!DOCTYPE html> <html lang="en"> <head> <title>Test</title> <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet"> <style> #form_controls label { width: 80px; text-align: right; padding-right: 5px; } .controls { margin-bottom: 5px; } .controls input { margin-right: 5px; } </style> </head> <body> <div class="container"> <div class="row"> <form class="span4"> <fieldset class="form-inline"> <legend>Legend</legend> <div id="form_controls"></div> <div class="form-actions"> <button class="btn btn-primary" id="btnSplit">Find Best Partitioning</button> </div> </fieldset> </form> <div class="span8"> <legend>Results</legend> <div id="results" class="row"> </div> </div> </div> </div> <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> <script src="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/js/bootstrap.min.js"></script> <script> var bestSplit; var bestSplitDelta = 9999; var items; var teamWeight = [0, 0, 0, 0]; var teamSize = [0, 0, 0, 0]; var numIterations = 0; function EvaluateSplit() { var teams = [[],[],[],[]]; var teamSize = [0, 0, 0, 0]; for (var i = 0; i < 16; i++) { teams[items[i].team].push(i); } for (var i = 0; i < 4; i++) if (teams[i].length != 4) return; // invalid teams var minWeight = Math.min.apply(null, teamWeight); var maxWeight = Math.max.apply(null, teamWeight); teamDelta = maxWeight - minWeight; if (teamDelta < bestSplitDelta) { bestSplit = teams; bestSplitDelta = teamDelta; } } function SplitItems(ndx) { for (var i = 0; i < 4; i++) { if (teamSize[i] == 4) continue; //$("#t" + i).text(i); items[ndx].team = i; teamWeight[i] += items[ndx].weight; teamSize[i]++; numIterations++; var teamDelta = 0; if (ndx >= 7) { var minWeight = 9999; var maxWeight = 0; for (var t = 0; t < 4; t++) { if (teamSize[t] != 4) continue; if (minWeight > teamWeight[t]) minWeight = teamWeight[t]; if (maxWeight < teamWeight[t]) maxWeight = teamWeight[t]; } teamDelta = maxWeight - minWeight; } if (ndx < 15) { if (teamDelta < bestSplitDelta) // skip bad combinations SplitItems(ndx + 1); } else { if (teamDelta < bestSplitDelta) { EvaluateSplit(); } } teamSize[i]--; teamWeight[i] -= items[ndx].weight; } } function DisplayBestSplit() { $("#results").html(""); for (var t = 0; t < 4; t++) { var $div = $("<div class='span2'></div>"); var tw = 0; for (var n = 0; n < 4; n++) { $div.append(items[bestSplit[t][n]].description + " (" + items[bestSplit[t][n]].weight + ")<br/>"); tw += items[bestSplit[t][n]].weight; } $div.append("team weight: " + tw); $("#results").append($div); } var $div2 = $("<div class='span8'></div>"); $div2.append("<br><br>team difference: " + bestSplitDelta + ", combinations tested: " + numIterations); $("#results").append($div2); } function InitializeForm() { for (var i = 1; i <= 16; i++) { var $div = $("<div class='controls'><label>" + i + ".</label></div>"); var $inp1 = $("<input type='text' placeholder='description' class='input-medium' />").attr("id", "name" + i); var $inp2 = $("<input type='number' placeholder='weight' class='input-mini' />").attr("id", "weight" + i); $inp1.val("item #" + i); $inp2.val((Math.random() * 150).toFixed(0)); $div.append($inp1).append($inp2).append("<span id='t"+i+"'></span>"); $("#form_controls").append($div); } $("#btnSplit").click(function (event) { event.preventDefault(); items = []; for (var i = 1; i <= 16; i++) { var rec = { description: $("#name" + i).val(), weight: parseFloat($("#weight" + i).val()), team: 0 }; items.push(rec); } numIterations = 0; teamWeight = [0, 0, 0, 0]; teamSize = [0, 0, 0, 0]; bestSplitDelta = 9999; SplitItems(0); DisplayBestSplit(); }); } InitializeForm(); </script> </body> </html> Това го записваш в един .html файл и си готов Link to comment Share on other sites More sharing options...
DON_CHEFO Posted March 28, 2013 Share Posted March 28, 2013 И след като го запишеш...какво се случва? Чай да го пробвам...па кой знае, може да изкочи великденското зайче Link to comment Share on other sites More sharing options...
djadomraz Posted March 29, 2013 Share Posted March 29, 2013 Пишеш си имената на хората, кой колко тежи и ти ги разпределя в отбори с еднаква тежест (сила или каквото искаш там го наречи) по възможно най-оптимален начин , та отборите да са най-равностойни Фиксирани са 16 участника и 4 отбора по 4 човека. Link to comment Share on other sites More sharing options...
Antares Posted March 29, 2013 Share Posted March 29, 2013 Работния ден е почнал преди около час... малка доза сутришна инсомния... Link to comment Share on other sites More sharing options...
Grimjaur Posted March 29, 2013 Share Posted March 29, 2013 Link to comment Share on other sites More sharing options...
Antares Posted March 29, 2013 Share Posted March 29, 2013 Я, мой коментар в тубата е top comment. Йееей, май уан минит ъв глори! Link to comment Share on other sites More sharing options...
w00x Posted March 29, 2013 Share Posted March 29, 2013 Пфф. Noob. 60% от моите коментари стават топ коментар.Правя курсове по "Temporary Celebrity Status" ако те интерсува. Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.