|
Модераторы: Alx, Fixin |
|
Bikutoru |
|
|||
Увлекающийся Профиль Группа: Участник Сообщений: 522 Регистрация: 24.5.2005 Где: Москва Репутация: нет Всего: 22 |
Irokez, значит я дальше продвинулся - для строк с разными длинами у меня что-то получается Правда ничего лучше такого
оно пока не генерит -------------------- Человек, словно в зеркале мир — многолик, Он ничтожен — и он же безмерно велик! Омар Хайям |
|||
|
||||
AztEK |
|
|||
Опытный Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: нет Всего: 18 |
Хе-хе. Вот вам интересная задача.
Определите число и название файлов в директории, не прибегая к функциям для работы с директориями. Решение задачи основано на том факте, что PHP обладает несколькими видами кавычек, каждый из которых обладает своими свойствами. Добавлено @ 13:04 Хотел запостить ссылку на сайт с такими задачами, но вспомнил, что там есть решение этой -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
Сумасшедший |
|
||||||||
Чилавек-Каропка Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 15.8.2004 Где: Москва Репутация: нет Всего: 107 |
Irokez, Задача №3 - Защита картинок
два варианта: один с дивами, другой таблицей: первый:
Второй:
Картинка была: Первый генерит 1 232 330 Второй: 559 997 байт только кода "рисунка" Нормально отображается под ИЕ6СП2, Опера9 и ФайрФокс1.5.0.4 Есс-но ни о какой валидности для w3 я не думал.. я просто забыл про неё подумать, т.к. не было этого в условии ЗЫ: Есть еще мысли во втором варианте подключить css, тогда можно будет вроде сократить строку
до строки
Но это потом проверю Это сообщение отредактировал(а) teplik - 16.7.2006, 10:31 -------------------- Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас! |
||||||||
|
|||||||||
skyboy |
|
|||
неОпытный Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
teplik, ты размер картинки не уменьшал? В смысле, если именно этого размера картинку тыобрабатывал скриптами?
|
|||
|
||||
Сумасшедший |
|
|||
Чилавек-Каропка Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 15.8.2004 Где: Москва Репутация: нет Всего: 107 |
Именно этого размера размера, именно эту картинку и брал для тестов.
Для второго варианта как раз примерно так и должно получиться: strlen('<TD width=1 height=1 bgcolor="#9b9b9b"></TD>') == 44; strlen("<TR></TR>") == 9; Размер кода одной строки L_STR_ONE=strlen("<TR>")+W*strlen("<TD width=1 height=1 bgcolor="#9b9b9b"></TD>")+strlen("</TR>") Размер кода всех строк: L_WH=L_STR_ONE*H Полный код: SIZE=strlen("<TABLE border=0 cellspacing=0 cellpadding=0>")+L_WH+strlen("</TABLE>"); Подставляем значения: L_STR_ONE=4+100*44+5==4409 L_WH=4409*127==559943 SIZE=44+559943+8==559995 Хм.. рядовой Код, за вами замечен косяк.. - появилось два лишних байта.. Можно списать на символ окончания файла) Есть варианты с меньшим объемом html?) Это сообщение отредактировал(а) teplik - 16.7.2006, 19:43 -------------------- Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас! |
|||
|
||||
skyboy |
|
|||
неОпытный Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
стопудова например, картинка в виде красного прямоугольника одного размера может быть записана в виде одной ячейки/одного слоя. А шахматная доска любого размера 8х8 - при помощи 25 полосок. Получается, всё сводится к написанию компрессора на строне сервера и декомпрессора на стороне клиента(опционально) Даёшь рукотворный JPEG на javascript Оптимизация, как на меня, возможна двумя путями: с привлечением мощностей клиента и без. Без привлечения - это такая разбивка на полосы разной ширины и разного цвета. Тут, опять же, два пути: слои(размер уменьшится за счет возможности наложения слоёв друг на друга при помощи позиционирования, но увеличится за счёт указания этого самого позиционирования - например, синий прямоугольник с красным крестом рисуется трёмя слоями - одним синим большим и двумя узкими красными) или таблицы(размер уменьшается только при подряд идущих горизонтально пикселях(или ячейки можно группировать и по строкам?)). И алгоритмов находжения оптимального наложения может быть несколько. Кроме этого, можно привлечь javascript и передавать каким-либо образом кодированную и сжатую информацию. Хотя бы тот же jpeg А потом восстанавливать в последовательность div'ов. При этом уже не надо будет искать "наложения слоёв с минимальным размером" - ведь на размер передаваемой информации это не повлияет... Хотя, нет, повлияет... Потому код надо будет хоть как-то сжимать... Кста, вот утвердят на уровне стандарта объект canvas, реализованный(насколько мне известно) в firefox - и не надо будет огород с div'ами или таблицами воротить.... Как идеи? |
|||
|
||||
skyboy |
|
|||
неОпытный Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
ещё идея: проиндексировать цвета, используя классы для стилей. Если цвет всетрчается чаще одного раза, есть смысл описать класс и накладывать на ячейки/слои. Если же цвет встречается только единожды, то лучше задать явно...
Это сообщение отредактировал(а) skyboy - 17.7.2006, 11:17 |
|||
|
||||
Сумасшедший |
|
|||
Чилавек-Каропка Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 15.8.2004 Где: Москва Репутация: нет Всего: 107 |
Мысль:
Передать JavaScript рисунок как бинарник, на стороне JavaScript выполнить преобразование со сжатием в дивы, и вывести эту штуку на экран Комментарии к мысли: Слишком большая нагрузка на клиентский компьютер: и поиск дивов, и их вывод.. А если прийдется выводить изображение, которое в jpg весит около метра.. Сначала загрузка, потом обработка, потом вывод... слишком долго.. Что-то вроде on-line Xnview=) Мысль: Выполнить преобразование изображения в формат дивов на стороне сервера Сжать преобразованный массив данных Записать сжатый массив данных в файл При выводе изображения PHP передает файл в JavaScript, который уже выполняет распаковку и и прорисовку дивов на стороне клиента. Кстати.. гкхмпредставляю глазки юзера ползающего по сети с отключенной графикой и увидевшего вдруг рисунки.. гкхм.. =) Комментарии к мысли: Шифрование... в-принципе можно, вот только пока мое мнение, что это бессмысленно, ибо расшифровывающая функция будет доступна клиенту, а уж переделать ее в любом другом языке для вывода в тот-же canvas слишком просто Хотя и по этому поводу мысли есть: можно шифровать файл преобраованного рисунка, потом перед передачей его в JavaScript выполнять дешифровку. А то вдруг кто скачает файлик преобразованно-сжатого дивовского формата, разожмет его, и напишет программку, которая будет читать такой формат и выполнять обратное преобразование. Плюс создать несколько разных форматов файлов, и соответственно им – различных функций на JavaScript, которые будут соответственно распаковывать по-разному сжатые файлы. Чтобы снизить вероятность отлавливания функции, и ее преобразования в что-то рисующее Мысль зародилась.. теперь нуно не дать ей умереть!) В первую очередь ее носителю с голода Думаем дальше.. Сначала будем думать без сжатия файла:-) Для упрощения жизни Создаем свой формат файла для того, чтобы можно было читать оттуда дивы. Например: 00000 00800 08880 00800 00000 (0 - зеленый 8-черный) x y width height color через табуляцию 0\t0\t5\t5\n00FF00\n 2\t1\t1\t3\t000000\n 1\t2\t3\t1\t000000 Правда с прозрачностью такой фокус не пройдет=( Прийдется делать иначе. Например построчно: 0\t0\t5\t1\t00FF00\n 0\t1\t2\t1\t00FF00\n 3\t1\t2\t1\t00FF00\n 0\t2\t1\t1\t00FF00\n 4\t2\t1\t1\t00FF00\n 0\t3\t2\t1\t00FF00\n 3\t3\t2\t1\t00FF00\n 0\t4\t5\t1\t00FF00 Добавлено @ 19:45 Про классы.. Можно для немногоцветных рисунков! А то если в рисунке много градиентных линий, например по 2 пиксела, то смысл описывать класс для каждых двух пикселов будет теряться. Стоит подумать еще Это сообщение отредактировал(а) teplik - 17.7.2006, 21:02 -------------------- Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас! |
|||
|
||||
Сумасшедший |
|
||||
Чилавек-Каропка Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 15.8.2004 Где: Москва Репутация: нет Всего: 107 |
Реализация чтения простого формата
ver3.php
ver3.div
Добавлено @ 21:22 Это чтобы потом не забыть:-) Теперь можно думать и про реализацию сжатия:-) Есть вопрос: можно сжимать при выводе страницы, а можно каждое изображение только по одному разу. Второй вариант ихмо лучше - не будет сильной нагрузки на сервер + более высокая скорость показа изображения. Но тогда возникает вопрос, а не стоит ли использовать какой-либо другой язык программирования для выполнения сжатия? -------------------- Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас! |
||||
|
|||||
skyboy |
|
||||||||||
неОпытный Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
Зато нет ограничения на время выполнения скрипта. Да и "отрисовка" одного рисунка - меньше, чем просчёт 2035 рисунков одновременно. Впрочем, мне тоже такой подход не по душе...
потенциально - ничего страшного. хоть 28 Мб. сколько будет занимать черный прямоугольник 20000х20000 пикселей в формате jpeg? а один div с атрибутами ширины и высоты?
А простые div'ы и таблицы не "разожмёт"?
Постановка задачи была о PHP, правильно? |
||||||||||
|
|||||||||||
Сумасшедший |
|
||||||
Чилавек-Каропка Профиль Группа: Завсегдатай Сообщений: 1503 Регистрация: 15.8.2004 Где: Москва Репутация: нет Всего: 107 |
К примеру цветовая гамма
неправильно выше написал: к примеру диагональные линии различных цветов.
Правильно Будем мучать PHP) -------------------- Однажды ты спросишь, а я отвечу: "Время ожидания специалиста - 10 минут". Ты бросишь трубку, так и не узнав, что Ваш звонок очень важен для нас! |
||||||
|
|||||||
skyboy |
|
|||
неОпытный Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
||||
|
||||
rMaveric |
|
|||
Опытный Профиль Группа: Участник Сообщений: 375 Регистрация: 18.7.2003 Репутация: нет Всего: 6 |
2 Модераторы
Давайте, ребята, чистить тему. И выкладывать суда только задачи. Или еще лучше для каждой задачи по топику. 2 Irokez Твои задачи немного интересней, но не на много Задача с шифрованием вообще элементарная, особенно криптографическая. Но функцию авторасшифровки без ключа можно написать только зная тип передаваемых сообщений. Так например html расшифровать труда не составит даже без ключа. -------------------- |
|||
|
||||
euginewm |
|
||||||
Drupal Development Профиль Группа: Участник Сообщений: 28 Регистрация: 25.9.2006 Где: Zaporozhye Репутация: нет Всего: нет |
Решение второй задачи (PHP-Script)
страница с формой
страница проверки формы:
И собственно генерация самого изображения
Вот Это сообщение отредактировал(а) euginewm - 1.10.2006, 18:40 |
||||||
|
|||||||
gta4kv |
|
|||
Walking around mad. Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: нет Всего: 91 |
Совсем простая задача:
Что должно быть в $string? ;) Умников попрошу - помолчать. Это сообщение отредактировал(а) gta4kv - 19.1.2008, 16:59 |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |