Причина, по которой алгоритм Куба строит все перестановки, состоит в том, что он присоединяет каждый элемент к каждой перестановке остальных элементов. Когда вы выполняете алгоритм кучи, рекурсивные вызовы на входы с длинной длиной помещают элементы n, (n-1), 2, 3, 4, ..., (n-2), 1
в последнюю позицию, а рекурсивные вызовы на входах с нечетной длиной помещают элементы n, (n-3), (n-4), (n-5), ..., 2, (n-2), (n-1), 1
в последнюю позицию. Таким образом, в любом случае все элементы связаны со всеми перестановками элементов n - 1
.
Если вы хотите более подробное графическое объяснение, посмотрите эту статью .
Следующее учебное руководство рекомендует перекомпилировать Ruby с поддержкой SSL: http://www.dinduks.com/rails-cannot-load-such-file-openssl
Предположение, что Вы используете RVM, это шаги для следования для устранения этой проблемы.
Установка openssl пакет
rvm pkg install openssl
Удаляет установку Ruby, Вы используете
rvm remove 1.9.3
И наконец перекомпилировали Ruby с openssl
rvm install 1.9.3 --with-openssl-dir=$HOME/.rvm/usr
, Все должно работать теперь. Не забывайте:
rvm use 1.9.3 --default
Вот еще некоторые ссылки, которые в основном предлагают сделать то же: