[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: PHP задания для практики
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
alex12060
В этом посте будут собраны все задачи которые расбросаны по всей этой теме.
Если вы хотите представить свое решение задачи, то просьба процитировать текст задания, чтобы было понятней, для какой задачи вы выкладываете решение. И так же свой код выделяем специальными bb тегами которые расположены над полем ввода. И ваше решение (код) прячем в спойлер, то есть помещаем его между тегами [ more ]...[ /more ]

Задание 1

Автор: alex12060
Задача - Вывести последние 5 строк из произвольного файла с произвольным содержимым.
Пусть файл data.dat содержит строки:

99999999999999999
88888888888888888
77777777777777777
66666666666666666
55555555555555555
44444444444444444
33333333333333333
22222222222222222
11111111111111111
00000000000000000



Задание 2

Автор: Эли4ка
Пользователь вводит слово(любое,большими и малыми буквами-без разницы)..и скрипт обрабатывает слово и меняет цвет первой буквы на зеленый


Задание 3

Автор: VolDroN
Есть строка

один
два
три
четыре

Нужно написать функцию, которая в зависимости от (bool) аргумента переворачивала строку, или рандомно перемешивает все строки.
Причём строки могут быть с переходом строки как: <br>, <br />, <br/>.


Задание 4

Автор: Winston
Написать ф-ю которая на вход принимает слитную строку, но каждое слово начинается с заглавной буквы, а на выходе разделить эти слова символом _
Например:
echo a('HelloWorld'); // Должно вывести Hello_World
echo a('ПриветМойМир'); // Должно вывести Привет_Мой_Мир


Задание 5

Автор: inpost
Задача такая, есть 3 таблицы, девушки, описание девушек, фотографии девушек.
Надо вывести 5 случайных девушек, с их описанием, и обязательным условием - последняя по добавлению фотография. Все это уместить в 1 красивый запрос Примечание: GROUP BY выше по приоритету чем ORDER BY, поэтому просто ORDER BY для фотографий не поможет


Задание 6

Автор: inpost
Задача одним запросом изменить 2 записи из:
ID=1,ORDER=1 и ID=2,ORDER=2
в
ID=1,ORDER=2 и ID=2,ORDER=1
, ORDER - это порядок расположения. По условию известно у нас лишь 1 запись, ID=1, ORDER=1, надо поменять с ближайшей записью местами ORDER.
При этом не обязательно, что вторая запись будет иметь ORDER=2 или ID=2, там может быть ID=5,ORDER=17.


Задание 6

Автор: Mirexzpalich
На входе:
$str  = "key1%^%key2%^%key3";
$value = "Hello!";

Необходимо получить массив
$array['key1']['key2']['key3'] = "Hello"!;

EVAL не использовать!


Задание 7

Автор: Invis1ble
Задача:
составить регулярное выражание для валидации даты в формате YYYY.mm.dd

Примеры входных значений:
1352.01.01
2000.02.29
2001.02.29
1989.04.31
2010.13.05
2011.11.32

Думаю, идея понятна. Красным выделены некорректные даты, зеленым - корректные.


Задание 8

Автор: alex12060
Задание:

Составление алгоритма для генерирования штрих-кода

Вход: Текст
Выход: Изображение штрих кода

Главное - распознование штрих кода Abbyy FineReader 10

Алгоритм и работа на С# здесь:

http://habrahabr.ru/blogs/net/127799/


Задание 9

Автор: alex12060
Задание: Посчитать максимальное кол-во вариантов выпадающих (!не повторяющихся!) символов в определенном алфавите.

Допустим, есть алфавит:
abdefhiknrstyzABDEFGHKNQRSTYZ23456789

И есть кол-во символов, которые мы получаем, допустим, 2.

Получаются варианты (рандомные):

ad
Fq
L2
m_
....

Итак, соль в том, что надо узнать, сколько таких не повторяющихся вариаций может быть.

Предоставить в виде алгоритма для поиска кол-ва вариантов в заданном алфавите 2-х символьного вывода.
Для мощных людей - составить функцию, которая не будет зависить от определенного алфавита и кол-ва выводов символов.

Алфавит - в примере.


Задание 10

Автор: Invis1ble

Задача: написать функцию, принимающую на входе массив вида
'event1' => .25,
'event2' => .5,
'event3' => .25[code]
(размер массива может быть любым)
и выдающую ключ одного из элементов массива с долей вероятности, определяемой значением данного элемента. Т.е. в данном случае шанс наступления события event1 - 25%, event2 - 50%, event3 - 25%, необходимо смоделировать наступление одного из событий.


Задание 11

Автор: Winston
Написать ф-ю которой передается 3 арг.
1 - Строка
2 - Подстрока
3 - Смещение
Нужно вставить подстроку в строку с использованием смещения
Например такие аргументы передаем

[php]
$str = 'Строка';
$subStr = 'Под';
$offset = 1;
[/php]
На выходе должно получится
[code]СПодтрока


Задание 12

Автор: Winston

И так, возьму на себя инициативу и размещу это задание в этой теме для "взрослых" :)

Сначала задание звучало вот так
Цитата
дано! Целые числа от 1 до 1001! В этом списке есть 2 одинаковых числа! Как, с наименьшими усилиями и меньшей ресурсозатратностью их найти?

Потом Кирик предложил усложнить задачу
Цитата
Давай так, чтобы в условии небыло известно общее количество чисел, и повторятся могут несколько

И теперь я немного добавлю геммора в условие задачи :)
Создать массив рандомного размера с рамдомными значениями, значения могут повторятся.
После этого нужно вывести на экран небольшую статистику: какое число и сколько раз оно встречается в массиве. И еще, чтобы немного по-брэйнфакать мозг, то нужно вывести индексы элементов в которых находятся повторяющиеся значения.
Возможно не все поняли задание так, вот покажу на примере:
Свернутый текст

Число: {9} встречается 4 раз
В элементах: $array[0] -- $array[3] -- $array[6] -- $array[7] --

Число: {5} встречается 2 раз
В элементах: $array[4] -- $array[8] --

Число: {6} встречается 2 раз
В элементах: $array[5] -- $array[10] --

Array
(
[0] => 9
[1] => 1
[2] => 3
[3] => 9
[4] => 5
[5] => 6
[6] => 9
[7] => 9
[8] => 5
[9] => 8
[10] => 6
[11] => 4
[12] => 2
[13] => 7
)

Вот еще пример
Свернутый текст

Число: {6} встречается 2 раз
В элементах: $array[0] -- $array[11] --

Число: {9} встречается 4 раз
В элементах: $array[6] -- $array[7] -- $array[8] -- $array[10] --

Array
(
[0] => 6
[1] => 3
[2] => 4
[3] => 1
[4] => 5
[5] => 2
[6] => 9
[7] => 9
[8] => 9
[9] => 7
[10] => 9
[11] => 6
[12] => 10
)

Как видно размер массива каждый раз разный.


Задание 13

Автор: alex12060
Задание: Вывести алфавит.
Входные данные: Регулярное выражение ([a-z] or [A-Z] or [A-z] or [а-я])
Выход: Алфавит.


Задание 14

Автор: Placido
Задачка,найденная на хабре, с которой я провозился четыре дня, а в конечном итоге написал код за полчаса. Ее выложил товарищ, который устраивался на работу в какую-то шведскую компанию php-разработчиком. Изначально на ее решение было отведено 10 минут.
Задание: написать функцию read_conf($filename), которая будет конвертировать конфигурационный файл (текст файла config.txt - ниже) в многомерный массив (ниже в разделе output). Ключи разделены точками (например, session.server.0.host). Функция должна работать также и с более длинными ключами, например, session.save.db.master.host=10.0.0.1
Оригинал задания на английском ниже (свернут).
Задание (на англ.)

Write a function, read_conf($filename), that converts the configuration below into a multidimensional array.

The configuration is divided up in rows and each row is divided up by key and value. The key can be multidimensional, and can be from 1...N, in the example below we only have 4 levels, but the solution should be able to work even when adding another row with more key levels: eg. session.save.db.master.host=10.0.0.1

Config.txt

id=www
session.timeout=120
session.server.0.host=127.0.0.1
session.server.0.port=1111
session.server.0.id=session1
session.server.1.host=127.0.0.1
session.server.1.port=1111
session.server.1.id=session2
image.width=640
image.height=480
image.watermark.small=wsmall.png
image.watermark.normal=wnormal.png

Output

Array
(
[id] => www
[session] => Array
(
[timeout] => 120
[server] => Array
(
[0] => Array
(
[host] => 127.0.0.1
[port] => 1111
[id] => session1
)

[1] => Array
(
[host] => 127.0.0.1
[port] => 1111
[id] => session2
)

)

)

[image] => Array
(
[width] => 640
[height] => 480
[watermark] => Array
(
[small] => wsmall.png
[normal] => wnormal.png
)

)

)



Задание 15

Автор: imbalance_hero
Есть диапазон IP: 49.05.0.0/20 , надо сравнить имеющийся ip: 49.05.100.152 с данным диапазоном, результат: true\false.
Если усложнить, то имеем сразу несколько диапазонов, которые вот в таком виде лежат в файле india.txt:
49.12.0.0/14
49.32.0.0/12
49.50.64.0/18
49.128.108.0/22
49.128.160.0/20
49.136.0.0/14


Вот надо проверить на вход. Решил я вопрос простым путём, сверился с whois, но это лишь на пару дней решение, сейчас пишу калькулятор для IP

Основная цель: человек зашел, получили его IP: 49.05.100.152, проверили, есть ли его IP в том списке диапазонов, если есть, то доступ закрыт, если нет - проходи. Реализация должна быть на php.

Обозначение после слеша - маска подсети. Можно заглянуть в гугл по этому поводу: Маска подсети


Задание 16

Автор: Winston
Для любителей регулярок, есть такое задание:
Имеем строку вида
<div class="edit\45632" style="width:100%; text-align:left"></div>
<div
style="padding:0px 25px 0px 25px" align="left" class="edit\348"></div>
<div
class="edit\789" style="padding:0px 0px 6px 0px"></div>
<div
class="edit\3154"></div>
<div
id="result">{RESULT}</div>

Из этого кода нам нужно достать последний div с классом edit\число, в нашем случае, это <div class="edit\3154"></div>, потом из этой строки нужно достать число 3154, и заменить {RESULT} в последнем блоке на сумму цифр того числа, которое мы достали (3+1+5+4).
В результате у нас должен выйти такой код
<div class="edit\45632" style="width:100%; text-align:left"></div>
<div
style="padding:0px 25px 0px 25px" align="left" class="edit\348"></div>
<div
class="edit\789" style="padding:0px 0px 6px 0px"></div>
<div
class="edit\3154"></div>
<div
id="result">13</div>

Примечания:
- Количество блоков может быть не ограничено, нужно выбрать последний блок с классом edit\число
- Замену нужно сделать одной регуляркой.


PS: Просьба к модераторам, если в теме появляется задание, вы его добавляйте в этот пост, дабы все задания были навиду, а, то бегать по десяткам страниц этой темы очень не удобно.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.