ФорумПрограммированиеPHP для идиотов → Странное распределение )

Странное распределение )

  • Sinkler

    Сообщения: 7958 Репутация: N Группа: в ухо

    Spritz 23 февраля 2010 г. 14:22, спустя 6 минут 16 секунд

    adw0rd, спасибо =)
  • }/{EHR

    Сообщения: 734 Репутация: N Группа: Адекваты

    Spritz 23 февраля 2010 г. 22:01, спустя 7 часов 38 минут 22 секунды


    пиздец

    array_diff, array_diff_keys и прочее
    Т.е мне нужно массив со всеми выведенными парами, и массив в котором записана следующая пара для вывода, прогнать через array_diff, после этого искать в результате выполнения array_diff, элемент, который должен выводиться. Если поиск его найдет, ту нужно вывести. Так?
  • }/{EHR

    Сообщения: 734 Репутация: N Группа: Адекваты

    Spritz 24 февраля 2010 г. 9:17, спустя 11 часов 15 минут 50 секунд

    ну вот допустим, я записал все выведенные на экран пары в массив. При выводе следующей пары прогоняю это все через array_diff, и получаю многомерный массив. А как теперь найти нужную пару в нем?
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 февраля 2010 г. 11:13, спустя 1 час 56 минут 37 секунд

    }/{EHR, это для школьной олимпиады чтоли? вот гарантированно рабочее решение (боже, зачем я это делаю?)

    <?php
    for ($pairs = array(), $i = 1; $i <= 16; ++$i)
    for ($j = 1; $j <= 16; ++$j)
    if ($i != $j) $pairs[] = array($i, $j);
    shuffle($pairs);
    $result = array_chunk(array_slice($pairs, 8 * 15), 8);
    header('Content-type: text-plain');
    var_export($result);

    для генерации пар ничего умнее не придумал.
    уникальных пар всего 240. из них нужны 120, поэтому после размешивания отрезаем половину и нарезаем на кусочки
    ιιlllιlllι унц-унц
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 24 февраля 2010 г. 11:30, спустя 16 минут 51 секунду


    боже, зачем я это делаю?
    добрый ты =)
  • }/{EHR

    Сообщения: 734 Репутация: N Группа: Адекваты

    Spritz 24 февраля 2010 г. 11:34, спустя 4 минуты 25 секунд


    }/{EHR, это для школьной олимпиады чтоли? вот гарантированно рабочее решение (боже, зачем я это делаю?)

    <?php
    for ($pairs = array(), $i = 1; $i <= 16; ++$i)
    for ($j = 1; $j <= 16; ++$j)
    if ($i != $j) $pairs[] = array($i, $j);
    shuffle($pairs);
    $result = array_chunk(array_slice($pairs, 8 * 15), 8);
    header('Content-type: text-plain');
    var_export($result);

    для генерации пар ничего умнее не придумал.
    уникальных пар всего 240. из них нужны 120, поэтому после размешивания отрезаем половину и нарезаем на кусочки
    Большое спасибо
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 февраля 2010 г. 11:39, спустя 4 минуты 13 секунд

    апоцеловать? скажи ЗАЧЕМ ТЕБЕ ЭТО? вдруг на самом деле всё одной командой решается )))
    ιιlllιlllι унц-унц
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 24 февраля 2010 г. 11:48, спустя 9 минут 8 секунд

    }/{EHR ↓


    вдруг на самом деле всё одной командой решается )))

    Фас?
  • }/{EHR

    Сообщения: 734 Репутация: N Группа: Адекваты

    Spritz 24 февраля 2010 г. 11:56, спустя 8 минут 1 секунду

    Хотя нет. В одной группе не должны быть одинаковых. Т.е. 1-4,  2-1 не может быть в одной группе.
    Спустя 270 сек.

    апоцеловать? скажи ЗАЧЕМ ТЕБЕ ЭТО? вдруг на самом деле всё одной командой решается )))
    Есть 16 человек и 15 дней. Все должны встретиться по отдельности. В день двух встреч не должно быть.
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 февраля 2010 г. 12:13, спустя 17 минут 26 секунд

    }/{EHR, двоих в один день не всякий сможет
    а как насчет того, что половина парочек вобще не случится? это по правилам?
    ιιlllιlllι унц-унц
  • }/{EHR

    Сообщения: 734 Репутация: N Группа: Адекваты

    Spritz 24 февраля 2010 г. 12:16, спустя 2 минуты 24 секунды


    }/{EHR, двоих в один день не всякий сможет
    а как насчет того, что половина парочек вобще не случится? это по правилам?
    Нет, ты говоришь про то, что 1-2, и 2-1 разные пары, а это одиноковые. Т.е. пар всего 120, а не 240
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 февраля 2010 г. 14:20, спустя 2 часа 3 минуты 51 секунду

    шайтан!
    совсем некрасиво, но работает

    <?php
    // 15 групп пока пустых
    for ($groups = array(), $k = 0; $k < 15; ++$k)
    $groups[] = array();
    // полный перебор неповторяющихся пар где $j < $i (таких 120)
    for ($i = 1; $i <= 16; ++$i) {
    for ($j = $i + 1; $j <= 16; ++$j) {
    foreach ($groups as &$list) {
    // в одном списке не более 2 * 8 участников
    // добавляем сразу 2-их, если их нет в списке
    if (count($list) < 16 && !in_array($i, $list) && !in_array($j, $list)) {
    $list[] = $i;
    $list[] = $j;
    break;
    }
    }
    }
    }
    // клеим пары - так понятнее
    for ($k = 0; $k < 15; ++$k)
    $groups[$k] = array_chunk($groups[$k], 2);

    // выводим
    header('Content-type: text/html; charset=UTF-8');
    echo "<table border=\"1\">\n";
    foreach ($groups as $group) {
    echo "<tr>\n";
    foreach ($group as $pair)
    echo "\t<td>" . $pair[0] . '-' . $pair[1] . "</td>\n";
    echo "</tr>\n";
    }
    echo "<table>\n";
    ιιlllιlllι унц-унц
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 24 февраля 2010 г. 14:27, спустя 7 минут 26 секунд

    artoodetoo, садись. 5. Давай дневник xD
    ЗЫ мне твоя аватарка не нравится ( Негр какой то страшный(
  • artoodetoo

    Сообщения: 5147 Репутация: N Группа: в ухо

    Spritz 24 февраля 2010 г. 14:34, спустя 7 минут 13 секунд

    о, я тебя напугал? комплекс белого человека с маленкой пипиской?
    ιιlllιlllι унц-унц
  • VaseninM

    Сообщения: 2416 Репутация: N Группа: Адекваты

    Spritz 24 февраля 2010 г. 14:38, спустя 3 минуты 22 секунды

    artoodetoo, да не то что бы напугал, да и не то чтобы комплекс… Но он какой то противный. Фу бля)))

Пожалуйста, авторизуйтесь, чтобы написать комментарий!