Так qrazydraqon описал идею со сложностью O(n*k) при условии размещения в памяти вычисленных перестановок O(n*k): сначала последовательно выбирается первое число (перебором), затем второе уже при n=n-1, k=k-1 и т.д.
А идея основана на том (по крайней мере, я так вывел), что каждое число встречается ровно С(n-1,k-1) раз и до такого же номера соответствующий набор будет начинаться с нулевого элемента. В исходном примере каждое число встречается 5! / 2!3! = 10, т.е. 0..9 номера будут у наборов, начинающихся с «0». У следующих C(n-2,k-1) = 4! / 1!3! = 4 номеров первым числом будет «1». Ну и так далее по рекурсии.
А дальше, в зависимости от величин n и k можно либо хранить перестановки в памяти, либо нет.
Как-то так. А факториалы считать — долго. Хотя, думаю, выделить место под k чисел (для хранения всех C(n-x, k-x)) вполне реально. Впрочем, если можно было бы обойтись без перебора.
Если I2P позволяет «хостить» без белого IP, а загружать одновременно через много посредников, то да. Разве что ли, цепочка посредников будет лишь увеличивать энтропию Вселенной.
Трекер и DHT — это работа клиентом. Я лично под серым ip не копался, но исходя из теории, для этого явно надо разрешить uTP (даже, пожалуй, лучше bt.transp_disposition=26, дабы запретить соединения TCP), указать порт исходящих соединений и именно на него пытаться долбиться с другого компьютера. А с этого, соответственно, долбиться на исходящий порт другого одновременно.
Вряд ли, конечно, но даст ли прирост скорости использование IPv6 (toredo, например)?
P.S. если задача имеет в т.ч. и академический интерес, я бы запустил сервер на машине с белым IP и посмотрел, с каким портом источника приходят UDP-пакеты.
Тут уж лучше попытаться сразу научить ребёнка правильно реагировать на такое — в будущем ещё не раз возможны аналогичные ситуации (интересно, правда, как?).
Брутально: устроить конкурс, у кого круче (прочнее) мобила и сбросить их все с лестницы. Ифоны разбились, владелец Ноклы — самый клёвый ребёнок в классе.
Хотя в данной формулировке более корректным выглядит полноценное общение с этой машины с последующим переносом и слиянием истории (опять же, для R&Q есть готовые решения=) ).
А вообще, я сам жду принятия в стандарт XEP-0136, дабы все эти манипуляции с историей стали ненужными.