Первый конкурс WEB-программистов Weblancer.net
4 сообщения
#16 лет назад
Цитата ("Zionit"):
Отфильтровать регуляркой всё кроме букв и создать массив (explode). после чего по нему пройтись 1 цыклом и посмотреть сколько раз повторяються елементы с одинковыми значениями?)))) Или, непомню как, поменять в массиве местами ключ и значение, и просто выводить foreach ---> echo sizeof ....
Память у PHP не резиновая
116 сообщений
#16 лет назад
Цитата ("Zionit"):Цитата ("SergeD"):Может быть достаточно простая простая задача...
например:
Имеется поток текста. необходимо определять, было ли текущее слово(элемент) в потоке или оно появилось первый раз.
По завершении получить частоту уникальных значений.
Решить можно быстро и многими способами...
Отфильтровать регуляркой всё кроме букв и создать массив (explode). после чего по нему пройтись 1 цыклом и посмотреть сколько раз повторяються елементы с одинковыми значениями?)))) Или, непомню как, поменять в массиве местами ключ и значение, и просто выводить foreach ---> echo sizeof ....
К сожалению - это не верное решение, и примитивное. Вы опять не внимательны...( как и с определением IP моего сайта)...
1895 сообщений
#16 лет назад
Информатика и математика плотно идут рядок, думаю надо выбирать задачы уровня универститетскых соросовкых олимпиад, задачки там очень сложные, как в плане математики так и информатики. Помню когда училса в тех.лицее то у нас екзамен бил подобного уровня, со школьной или даже с уникерситетской программой не сравниться, хотя задания били комплексние, точно также и тут надо сделать, не суто 1 алгоритм, а напр. обьёденить криптографию, графику, БД, регулярные виражения, в общем то что насущно) Надо это потому что напр. я хорошо варю в БД, криптографии тоже более менее, а вот в графике или в 3-Д совсем дуб дерево) Конечно если будет задача на БД то я справлюсь, а если графика то тютю... ладно суть то думаю уловили.Вот ещё пришло в голову, незнаю возможно ли такое.. написать небольшую систему для сбора и анализа всех ошибок что валяться во время работы сайта, и полезно и непросто вроде) Или напр. скрипт который будет вводить код на рапиде, скачивать файлик, а в случаи обрива и т.д. перекачивать его наново, ну такая себе экспертная система)
50 сообщений
#16 лет назад
А почему же вы оставили позади другие специальности - SEO, дизайнеров, копирайтеров, переводчиков? Или для них отдельные конкурсы планируются?
400 сообщений
#16 лет назад
Наверное, потому что программисты круче всех - они всё тянут и на них всё держится. А насчет дизайнеров и т.д. время от времени бывают тендеры в проектах. С программистами такая шутка не проходит... Представляю себе: "дайте мне две-три реализации проекта, я выберу какая получше".
3240 сообщений
#16 лет назад
loverman92, по SEO - я даже не знаю как можно конкурс провести... а вот для дизайнеров, копирайтеров и переводчиков - вполне возможно что-то организуем.
400 сообщений
#16 лет назад
Можно пользовать буфер (последнее слово отсекаем и проверяем, не стыкуется ли оно с первым в начале следующего блока). Рубим буфер по небуквенным символам $words = preg_split("/+/i", $buffer), потом, используя слово, как ключ, проверяем, не находится ли оно в списке выбывших. В языке от силы тысяч 50 слов, так что беря даже в среднем 10 букв в слове, памяти на всё это дело хватит с лихвой.$grand_table = array();
$unique = 0;
$count = 0;
// ...буффер
foreach ($words as $word) {
if(array_key_exists($word, $grand_table)) {
if(++$grand_table == 1) {
--$unique;
}
} else {
$grand_table = 0;
++$unique;
}
++$count;
}
// ...буффер
echo "Привет. Всего слов: $count, уникальных: $unique.";
778 сообщений
#16 лет назад
У меня хоть и небольшой опыт в программировании на PHP, но такие мероприятия поддерживаю целиком и полностью, поэтому +1. А по поводу выбора типа задания, необходимо определиться что будет за конкурс: на знание методови синтаксиса данного языка или же из области олимпиадных задач, где действительно плотно связаны математика и информатика и нужно пораскинуть мозгами (имхо, последний вариант лучше, т.к. по первому хватит и справочника под рукой, ну и немного мозгов соответсвенно ))Да и вообще, почему сразу на PHP??? Давайте лучше на Паскале или Си... )
3240 сообщений
#16 лет назад
phpmaniac, лучше так:$grand_table = array();
foreach ($words as &$word) {
if (!array_key_exists($word, $grand_table)) $grand_table = null;
}
echo "Всего слов: " . count($words) . ", уникальных: " . count($grand_table) . ".";
Это более оптимально, зачем же лишние инкременты и декременты делать для каждого слова, это лишние операции.
3240 сообщений
#16 лет назад
А учитывая специфику PHP, так будет еще лучше по производительности (хотя с точки зрения логики - менее корректно):$grand_table = array();
foreach ($words as &$word) $grand_table = null;
echo "Всего слов: " . count($words) . ", уникальных: " . count($grand_table) . ".";
1267 сообщений
#16 лет назад
Цитата:А вот то же самое, но используя функцию PHP array_flip для работы с массивами (работает еще немного быстрее, я только что замерял):
вот об этом я говорил
Цитата ("Zionit"):
Или, непомню как, поменять в массиве местами ключ и значение
3240 сообщений
#16 лет назад
А вот то же самое, но используя функцию PHP array_flip для работы с массивами (работает еще немного быстрее, я только что замерял):echo "Всего слов: " . count($words) . ", уникальных: " . count(array_flip($words)) . ".";
Но для обработки потока, когда массивов $words может быть несколько, обрабатываемых в скрипте один за другим, то лучше использовать предложенный мной предыдущий способ.
1267 сообщений
#16 лет назад
phpmaniac, возьмите большую базу слов и он будет ещё быстрее))), а поровняв со скоростью работы с 3 вариантом.... Должно быть ещё раз в 10-20 быстрее
400 сообщений
#16 лет назад
tvv, кстати, без ссылки получается ещё быстрее, так что не надо было её добавлять. foreach ($words as $word) $grand_table = null;
1267 сообщений
#16 лет назад
И как, тот вариант который я описал 2 (последний предложеный tvv) быстрее? и на сколько?
3240 сообщений
#16 лет назад
Цитата ("phpmaniac"):tvv, кстати, без ссылки получается ещё быстрее, так что не надо было её добавлять.
Это на коротких словах оно немного быстрее. А если слова длинные, хотя бы 5 символов и более (и тем более разной длины) - то без ссылки будет медленнее. И чем больше будет длина слов, тем более явно будет проявляться повышение производительности при использование ссылки.
Хотя я могу ошибаться, может быть мой тест недостаточно полный. Вообще такие вещи нужно на реальных данных проверять.