генерация Изменений без повторений / Перестановки в Java

редактирование : Этот ответ работает, но в наше время необходимо просто использовать запросы библиотека, как упомянуто другими ответами ниже.

Использование httplib.

>>> import httplib
>>> conn = httplib.HTTPConnection("www.google.com")
>>> conn.request("HEAD", "/index.html")
>>> res = conn.getresponse()
>>> print res.status, res.reason
200 OK
>>> print res.getheaders()
[('content-length', '0'), ('expires', '-1'), ('server', 'gws'), ('cache-control', 'private, max-age=0'), ('date', 'Sat, 20 Sep 2008 06:43:36 GMT'), ('content-type', 'text/html; charset=ISO-8859-1')]

существует также getheader(name) для получения определенного заголовка.

7
задан Chii 14 December 2009 в 13:25
поделиться

3 ответа

Ключевое слово, которое нужно искать, - это перестановка . Существует множество свободно доступных исходных кодов, которые их выполняют.

Что касается того, чтобы они не повторялись, я предлагаю простой рекурсивный подход: для каждой цифры у вас есть выбор, принимать ее в свой вариант или нет, поэтому ваша рекурсия учитывается цифры и разветвляются на два рекурсивных вызова, один из которых включает цифру, а другой - исключает. Затем, после того, как вы достигли последней цифры, каждая рекурсия по существу дает вам (уникальный, отсортированный) список цифр без повторов. Затем вы можете создать все возможные перестановки этого списка и объединить все эти перестановки для достижения конечного результата.

(То же, что и Даффимо сказал: я не буду предоставлять для этого код)

Дополнительное примечание: рекурсия основана на на 0/1 (исключение, включение), которые можно напрямую преобразовать в биты, следовательно, в целые числа. Следовательно, чтобы получить все возможные комбинации цифр без фактического выполнения самой рекурсии, вы можете просто использовать все 10-битные целые числа и перебирать их. Затем интерпретируйте числа так, чтобы установленный бит соответствовал включению цифры в список, которую необходимо переставить.

6
ответ дан 7 December 2019 в 01:22
поделиться

Представьте, что у вас есть магическая функция - при наличии массива цифр она вернет вам правильные перестановки.

Как вы можете использовать эту функцию для создания нового списка перестановок всего с одной дополнительной цифрой?

например,

, если я дал вам функцию с именем permute_three (char [3] цифры) , и я говорю вам, что он работает только для цифр 0 , 1 , 2 , как вы можете написать функцию, которая может переставлять 0 , 1 , 2 , 3 , используя заданную функцию permute_three ?

...

как только вы решил это, что вы заметили? вы можете это обобщить?

0
ответ дан 7 December 2019 в 01:22
поделиться

используя Доллар это просто:

@Test
public void generatePermutations() {
    // digits is the string "0123456789"
    String digits = $('0', '9').join();

    // then generate 10 permutations
    for (int i : $(10)) {
        // shuffle, the cut (0, 4) in order to get a 4-char permutation
        System.out.println($(digits).shuffle().slice(4));
    }
}
0
ответ дан 7 December 2019 в 01:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: