Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Вопрос к программистам - 2
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011 Откуда: Москва
Помог: 221 раз(а)
Спасибо EuGen за интересную статью!
EuGen
Отправлено: 29 Сентября, 2013 - 17:17:22
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Задача из реального приложения.
Есть текстовый файл - достаточно большого размера, для того, чтобы его нельзя было поместить в RAM. На текущей партиции ФС недостаточно места для создания копии файла. Пример:
- Размер файла 200Mb
- Максимум памяти для скрипта 30Mb (и изменить нельзя)
- Свободное место в текущей партиции на диске 100Mb
Вопрос - как записать несколько строк в начало файла? (разумеется, дозаписать).
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
EuGen
Отправлено: 29 Октября, 2013 - 14:59:23
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Предположим, что есть массив строк, который нужно перемешать в случайном порядке. Требуется реализовать такое перемешивание, чтобы оно удовлетворяло требованиям псевдослучайности, то есть реализацией должна быть некоторая функция, например, "getShuffle", которая будет принимать два параметра - массив и некоторое значение (целое число). Внутри одного значения этого числа порядок внутри массива должен быть одинаковым при последовательном перемешивании, неважно сколько раз применялась функция.
Пример:
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
DlTA
Отправлено: 22 Декабря, 2013 - 23:31:04
Постоянный участник
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
Задачка, актуальная под новый год)
есть компания и N человек.
так как денег не фонтан, и каждый чел из компании не может сделать по подарку всем остальным, поэтому каждый готовит только по 1му подарку
нужна разработать генератор выдающий случайную связку, Кто и Кому будет дарить,
но нужно учесть, что сам себе не дарим, и так чтоб нельзя было угадать остальные связки, когда знаешь кому даришь ты.
VenZell
Отправлено: 23 Декабря, 2013 - 05:16:32
Частый гость
Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
VenZell пишет:
так если 2 человека, то можно угадать, кто кому дарит, а это противоречит условию задачи.
вообще то при 3х человеках как не крути но тоже сразу понятно кто и кому дарит.
но это скорее исключительные ситуации (Добавление) armancho7777777, ваш код не выполняет задачу, у вас как минимум половина людей из группы остается без подарка
armancho7777777
Отправлено: 23 Декабря, 2013 - 13:41:10
Активный участник
Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011 Откуда: Москва
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
DlTA, думаю, подразумевается, что люди дарят друг другу.
Но нужно отдельно разобрать случай когда остается 1.
Тогда нужно сделать тройку и чтобы они дарили "по кругу".
P.S. Сам тоже сделал бы просто shuffle, и каждый, дарит следующему в массиве(или первому), но уже есть 2 таких решения.
upd. Неправильно думал. Но вариант то рабочий и удовлетворяет условиям, если внести доработку.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
armancho7777777 пишет:
А как же быть в том случае, если количество участников нечётное ?
Собственно, какая разница? Если это круговая связь, то последний замыкается на первого, таким образом, достаточно лишь обеспечить случайность выборки, что достигается через shuffle
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
IllusionMH
Отправлено: 23 Декабря, 2013 - 14:05:20
Активный участник
Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011 Откуда: .kh.ua
Помог: 242 раз(а)
armancho7777777, если собирать пары которые дарят друг другу, тогда вручную собрать лишний и последнюю пару, объединив их в кольцо.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.