Онлайн конкурс "PHP"
Рівень змагання:
2
Термін проведения:
від 2012-12-01 19:00
до  2012-12-01 21:00
Вікова категорія:
Від 5 до 21
Рефері:
Дмитро Вітюк

Вiтаю всiх! 
Тема цього тижня: робота з масивами у PHP.

№1 Нумерований масив
Оцінка:5

Створити нумерований масив $arr_num, у якому збережені імена людей.

Відсортувати  масив за іменем у порядку спадання та вивести  за допомогою функції print_r.



№2 Асоціативний масив
Оцінка:10

Створити асоціативний массив $arr_assoc у якому збережені пари імен у вигляді дівоче імя - ключ, чоловіче ім`я - значення та заповнити його як на малюнку нижче.

Створити функцію випадкового перемішування пар  таким чином щоб у кожної дівчини з`явився новий хлопець. Якщо після випадкового перемішування якась пара залишилася сталою, необхідно заново перезапускати перемішування до тих пір, поки усі пари стануть новими.

Виконати функцію над масивом $arr_assoc.  Вивести  за допомогою функції print_r значення старого та перемішаного масиву $arr_assoc.



№3 Ігрова площина
Оцінка:20

Є координатна поверхня розміром 100 на 100 пікселів. 

Завдання:

1. Згенерувати масив з 50 точками, які знаходяться всередині цієї координатної поверхні. Координати точок повинні бути випадковими.  У результаті масив повинен мати наступний вигляд:

$data = array(   array( "x" => 91, "y" => 81),   array( "x" => 50, "y" => 99),  ...    array( "x" => 23, "y" => 2 )  );
 
Вивести масив за допомогою функції print_r;
 
2. Відсортувати масив по зростанню координати Х. Якщо існує декілька точок з одинаковими координатами Х, необхідно відсортувати ці точки по зростанню координати Y. У результаті масив повинен мати наступний вигляд:
 
$data = array(  array( "x" => 1, "y" => 81), array( "x" => 2, "y" => 5), array( "x" => 2, "y" => 85),  ...,  array( "x" => 98, "y" => 2 )  );
 
Вивести масив за допомогою функції print_r;

3. Розбити координатну площину на однакових 9 квадратів (як на малюнку). Створити новий масив, який матиме 9 комірок, що відповідають квадратам координатної площини. У ці комірки додати точки, які знаходяться у цих координатах. Результуючий масив повинен матиме наступний вигляд:

$coord_data = array(
1 => array( array( "x" => 2, "y" => 5), array( "x" => 2, "y" => 15),  array( "x" => 15, "y" =>10),  array( "x" => 20, "y" =>1)  ),
...,
9 => array( array( "x" => 81, "y" => 99), array( "x" => 92, "y" =>80),  array( "x" => 99, "y" =>88)  )
);
 
Вивести результуючий масив за допомогою функції print_r;


№4 Дворівневий пошук
Оцінка:20

Написати функцію, яка визначатиме найближчий об'єкт від заданої точки. 
На вхід функції подається координата точки (х, y), а також масив об'єктів $coord_data який є результатом завдання №3 Ігрова площина.

Алгоритм пошуку повинен містити 2 етапи

        1. Грубий пошук по 9 квадратам
        2. Точний пошук по об'єктам, які знаходяться всередині цих квадратів.