ФорумПрограммированиеJavaScript → Вычисление комбинаций по факториалу

Вычисление комбинаций по факториалу

  • adw0rd

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

    Spritz 12 мая 2009 г. 5:31

    Есть ли в JavaScript готовая ф-ия для вычисления всех комбинаций по факториалу?

    Комбинаторное определение

    В комбинаторике факториал определяется как количество перестановок множества из n элементов. Например, элементы множества {A,B,C,D} можно линейно упорядочить 4!=24 способами:

    ABCD BACD CABD DABC
    ABDC BADC CADB DACB
    ACBD BCAD CBAD DBAC
    ACDB BCDA CBDA DBCA
    ADBC BDAC CDAB DCAB
    ADCB BDCA CDBA DCBA


    Мне надо, например из 3-х слов
    раз, два, три


    составить комбинации

    раз-два-три
    раз-три-два
    два-раз-три
    два-три-раз
    три-раз-два
    три-два-раз
    adw/0
  • phpdude

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

    Spritz 12 мая 2009 г. 5:35, спустя 4 минуты 14 секунд

    почти уверен что такой штуки в яваскрипте нету ..
    Сапожник без сапог
  • adw0rd

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

    Spritz 12 мая 2009 г. 5:39, спустя 3 минуты 37 секунд

    helldude, тоже так думаю, интересно а в фреймворках…? Я сейчас сам напишу конечно, но просто интересно…
    adw/0
  • phpdude

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

    Spritz 12 мая 2009 г. 5:42, спустя 3 минуты 7 секунд


    helldude, тоже так думаю, интересно а в фреймворках…? Я сейчас сам напишу конечно, но просто интересно…

    такие задачи .. ну оооочень уж редки имхо и в фрейм выносить просто нерационально, поэтому думаю нету)
    Сапожник без сапог
  • adw0rd

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

    Spritz 12 мая 2009 г. 5:54, спустя 11 минут 46 секунд

    helldude, ну возможно есть плагины… ну ладно, сейчас напишу и выложу… пока что еклипс апдейтится…
    adw/0
  • phpdude

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

    Spritz 12 мая 2009 г. 5:57, спустя 2 минуты 45 секунд


    helldude, ну возможно есть плагины… ну ладно, сейчас напишу и выложу… пока что еклипс апдейтится…
    КОД В СТУДИЮ! ждем! :)
    Сапожник без сапог
  • ubica

    Сообщения: 530 Репутация: N Группа: Кто попало

    Spritz 12 мая 2009 г. 5:57, спустя 29 секунд

    писал такое года 4 назад на x86 ассемблере)
  • phpdude

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

    Spritz 12 мая 2009 г. 6:08, спустя 10 минут 20 секунд


    писал такое года 4 назад на x86 ассемблере)
    выкладывай))
    Сапожник без сапог
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 12 мая 2009 г. 6:36, спустя 28 минут 37 секунд



    писал такое года 4 назад на x86 ассемблере)
    выкладывай))

    +1 очень интересно глянуть на асу :)
  • ubica

    Сообщения: 530 Репутация: N Группа: Кто попало

    Spritz 12 мая 2009 г. 6:45, спустя 8 минут 34 секунды

    старый код не нашел, но идея здесь: http://www.wasm.ru/article.php?article=cycle_pwd
  • adw0rd

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

    Spritz 12 мая 2009 г. 11:14, спустя 4 часа 29 минут 6 секунд

  • phpdude

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

    Spritz 12 мая 2009 г. 11:44, спустя 30 минут 14 секунд

    обе ссылки - ужас
    Сапожник без сапог
  • phpdude

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

    Spritz 12 мая 2009 г. 11:58, спустя 14 минут 1 секунду

    <?
    $data = array("Раз","Два","Три");

    $wdata = array_merge($data,$data);
    $count = count($data);

    $result = array();
    foreach($data as $i=>$v)
    {
    $c = $wdata;
    unset($c[$i],$c[$i+$count]);
    $c = array_values($c);

    for($j=0;$j<$count-1;$j++)
    {
    $return[] = $v."-".join("-",array_slice($c,$j,$count-1));
    }
    }

    echo join("\n",$return);


    ну и у мну пиздец код конечно, но как вариант может и пойдет :))

    имхо главное - прозрачность кода.

    Раз-Два-Три
    Раз-Три-Два
    Два-Раз-Три
    Два-Три-Раз
    Три-Раз-Два
    Три-Два-Раз
    Сапожник без сапог
  • phpdude

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

    Spritz 12 мая 2009 г. 11:59, спустя 1 минуту 14 секунд

    Раз-Два-Три-Четыре-Пядь
    Раз-Три-Четыре-Пядь-Два
    Раз-Четыре-Пядь-Два-Три
    Раз-Пядь-Два-Три-Четыре
    Два-Раз-Три-Четыре-Пядь
    Два-Три-Четыре-Пядь-Раз
    Два-Четыре-Пядь-Раз-Три
    Два-Пядь-Раз-Три-Четыре
    Три-Раз-Два-Четыре-Пядь
    Три-Два-Четыре-Пядь-Раз
    Три-Четыре-Пядь-Раз-Два
    Три-Пядь-Раз-Два-Четыре
    Четыре-Раз-Два-Три-Пядь
    Четыре-Два-Три-Пядь-Раз
    Четыре-Три-Пядь-Раз-Два
    Четыре-Пядь-Раз-Два-Три
    Пядь-Раз-Два-Три-Четыре
    Пядь-Два-Три-Четыре-Раз
    Пядь-Три-Четыре-Раз-Два
    Пядь-Четыре-Раз-Два-Три
    Сапожник без сапог
  • phpdude

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

    Spritz 12 мая 2009 г. 12:00, спустя 48 секунд

    Раз-Два-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь
    Раз-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Два
    Раз-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Два-Три
    Раз-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Два-Три-Четыре
    Раз-Жесдь-Семь-Восемь-Девядь-Десядь-Два-Три-Четыре-Пядь
    Раз-Семь-Восемь-Девядь-Десядь-Два-Три-Четыре-Пядь-Жесдь
    Раз-Восемь-Девядь-Десядь-Два-Три-Четыре-Пядь-Жесдь-Семь
    Раз-Девядь-Десядь-Два-Три-Четыре-Пядь-Жесдь-Семь-Восемь
    Раз-Десядь-Два-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь
    Два-Раз-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь
    Два-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Раз
    Два-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Три
    Два-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Три-Четыре
    Два-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Три-Четыре-Пядь
    Два-Семь-Восемь-Девядь-Десядь-Раз-Три-Четыре-Пядь-Жесдь
    Два-Восемь-Девядь-Десядь-Раз-Три-Четыре-Пядь-Жесдь-Семь
    Два-Девядь-Десядь-Раз-Три-Четыре-Пядь-Жесдь-Семь-Восемь
    Два-Десядь-Раз-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь
    Три-Раз-Два-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь
    Три-Два-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Раз
    Три-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Два
    Три-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Два-Четыре
    Три-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Два-Четыре-Пядь
    Три-Семь-Восемь-Девядь-Десядь-Раз-Два-Четыре-Пядь-Жесдь
    Три-Восемь-Девядь-Десядь-Раз-Два-Четыре-Пядь-Жесдь-Семь
    Три-Девядь-Десядь-Раз-Два-Четыре-Пядь-Жесдь-Семь-Восемь
    Три-Десядь-Раз-Два-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь
    Четыре-Раз-Два-Три-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь
    Четыре-Два-Три-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Раз
    Четыре-Три-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Два
    Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Два-Три
    Четыре-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Два-Три-Пядь
    Четыре-Семь-Восемь-Девядь-Десядь-Раз-Два-Три-Пядь-Жесдь
    Четыре-Восемь-Девядь-Десядь-Раз-Два-Три-Пядь-Жесдь-Семь
    Четыре-Девядь-Десядь-Раз-Два-Три-Пядь-Жесдь-Семь-Восемь
    Четыре-Десядь-Раз-Два-Три-Пядь-Жесдь-Семь-Восемь-Девядь
    Пядь-Раз-Два-Три-Четыре-Жесдь-Семь-Восемь-Девядь-Десядь
    Пядь-Два-Три-Четыре-Жесдь-Семь-Восемь-Девядь-Десядь-Раз
    Пядь-Три-Четыре-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Два
    Пядь-Четыре-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Два-Три
    Пядь-Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Два-Три-Четыре
    Пядь-Семь-Восемь-Девядь-Десядь-Раз-Два-Три-Четыре-Жесдь
    Пядь-Восемь-Девядь-Десядь-Раз-Два-Три-Четыре-Жесдь-Семь
    Пядь-Девядь-Десядь-Раз-Два-Три-Четыре-Жесдь-Семь-Восемь
    Пядь-Десядь-Раз-Два-Три-Четыре-Жесдь-Семь-Восемь-Девядь
    Жесдь-Раз-Два-Три-Четыре-Пядь-Семь-Восемь-Девядь-Десядь
    Жесдь-Два-Три-Четыре-Пядь-Семь-Восемь-Девядь-Десядь-Раз
    Жесдь-Три-Четыре-Пядь-Семь-Восемь-Девядь-Десядь-Раз-Два
    Жесдь-Четыре-Пядь-Семь-Восемь-Девядь-Десядь-Раз-Два-Три
    Жесдь-Пядь-Семь-Восемь-Девядь-Десядь-Раз-Два-Три-Четыре
    Жесдь-Семь-Восемь-Девядь-Десядь-Раз-Два-Три-Четыре-Пядь
    Жесдь-Восемь-Девядь-Десядь-Раз-Два-Три-Четыре-Пядь-Семь
    Жесдь-Девядь-Десядь-Раз-Два-Три-Четыре-Пядь-Семь-Восемь
    Жесдь-Десядь-Раз-Два-Три-Четыре-Пядь-Семь-Восемь-Девядь
    Семь-Раз-Два-Три-Четыре-Пядь-Жесдь-Восемь-Девядь-Десядь
    Семь-Два-Три-Четыре-Пядь-Жесдь-Восемь-Девядь-Десядь-Раз
    Семь-Три-Четыре-Пядь-Жесдь-Восемь-Девядь-Десядь-Раз-Два
    Семь-Четыре-Пядь-Жесдь-Восемь-Девядь-Десядь-Раз-Два-Три
    Семь-Пядь-Жесдь-Восемь-Девядь-Десядь-Раз-Два-Три-Четыре
    Семь-Жесдь-Восемь-Девядь-Десядь-Раз-Два-Три-Четыре-Пядь
    Семь-Восемь-Девядь-Десядь-Раз-Два-Три-Четыре-Пядь-Жесдь
    Семь-Девядь-Десядь-Раз-Два-Три-Четыре-Пядь-Жесдь-Восемь
    Семь-Десядь-Раз-Два-Три-Четыре-Пядь-Жесдь-Восемь-Девядь
    Восемь-Раз-Два-Три-Четыре-Пядь-Жесдь-Семь-Девядь-Десядь
    Восемь-Два-Три-Четыре-Пядь-Жесдь-Семь-Девядь-Десядь-Раз
    Восемь-Три-Четыре-Пядь-Жесдь-Семь-Девядь-Десядь-Раз-Два
    Восемь-Четыре-Пядь-Жесдь-Семь-Девядь-Десядь-Раз-Два-Три
    Восемь-Пядь-Жесдь-Семь-Девядь-Десядь-Раз-Два-Три-Четыре
    Восемь-Жесдь-Семь-Девядь-Десядь-Раз-Два-Три-Четыре-Пядь
    Восемь-Семь-Девядь-Десядь-Раз-Два-Три-Четыре-Пядь-Жесдь
    Восемь-Девядь-Десядь-Раз-Два-Три-Четыре-Пядь-Жесдь-Семь
    Восемь-Десядь-Раз-Два-Три-Четыре-Пядь-Жесдь-Семь-Девядь
    Девядь-Раз-Два-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Десядь
    Девядь-Два-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Десядь-Раз
    Девядь-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Десядь-Раз-Два
    Девядь-Четыре-Пядь-Жесдь-Семь-Восемь-Десядь-Раз-Два-Три
    Девядь-Пядь-Жесдь-Семь-Восемь-Десядь-Раз-Два-Три-Четыре
    Девядь-Жесдь-Семь-Восемь-Десядь-Раз-Два-Три-Четыре-Пядь
    Девядь-Семь-Восемь-Десядь-Раз-Два-Три-Четыре-Пядь-Жесдь
    Девядь-Восемь-Десядь-Раз-Два-Три-Четыре-Пядь-Жесдь-Семь
    Девядь-Десядь-Раз-Два-Три-Четыре-Пядь-Жесдь-Семь-Восемь
    Десядь-Раз-Два-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь
    Десядь-Два-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Раз
    Десядь-Три-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Раз-Два
    Десядь-Четыре-Пядь-Жесдь-Семь-Восемь-Девядь-Раз-Два-Три
    Десядь-Пядь-Жесдь-Семь-Восемь-Девядь-Раз-Два-Три-Четыре
    Десядь-Жесдь-Семь-Восемь-Девядь-Раз-Два-Три-Четыре-Пядь
    Десядь-Семь-Восемь-Девядь-Раз-Два-Три-Четыре-Пядь-Жесдь
    Десядь-Восемь-Девядь-Раз-Два-Три-Четыре-Пядь-Жесдь-Семь
    Десядь-Девядь-Раз-Два-Три-Четыре-Пядь-Жесдь-Семь-Восемь
    Сапожник без сапог

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