За последние 24 часа нас посетили 22929 программистов и 1726 роботов. Сейчас ищут 2060 программистов ...

Задача на одномерный массив

Тема в разделе "Сделайте за меня", создана пользователем qwe123, 30 мар 2021.

Метки:
  1. qwe123

    qwe123 Новичок

    С нами с:
    30 мар 2021
    Сообщения:
    2
    Симпатии:
    0
    Есть массив

    PHP:
    1. $cars = [
    2.     ['name' => 'Такси 1', 'position' => rand(0, 1000), 'isFree' => (bool) rand(0, 1)],
    3.     ['name' => 'Такси 2', 'position' => rand(0, 1000), 'isFree' => (bool) rand(0, 1)],
    4.     ['name' => 'Такси 3', 'position' => rand(0, 1000), 'isFree' => (bool) rand(0, 1)],
    5.     ['name' => 'Такси 4', 'position' => rand(0, 1000), 'isFree' => (bool) rand(0, 1)],
    6.     ['name' => 'Такси 5', 'position' => rand(0, 1000), 'isFree' => (bool) rand(0, 1)],
    7. ];
    Нужен алгоритм на определение самого ближайшего и свободное такси до пассажира

    Положение пассажира так же рандомно
    Код (Text):
    1. $passenger = rand(0, 1000);
    Вывод по примеру:
    "Такси 1, стоит на 15 км, до пассажира 3 км (занят)"
    "Такси 2, стоит на 0 км, до пассажира 12 км (свободен) - едет это такси"
    "Такси 3, стоит на 300 км, до пассажира 288 км (свободен)"

    Нельзя создавать свою функцию, и нельзя изменять структуру самого массива $cars
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.584
    Симпатии:
    1.762
    И что тут сложного? Координаты даже не на плоскости, а на прямой...
     
  3. qwe123

    qwe123 Новичок

    С нами с:
    30 мар 2021
    Сообщения:
    2
    Симпатии:
    0
    Если вам не сложно, помогите, пожалуйста
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.331
    Адрес:
    Лень
    Гребаная религия не позволяет.
    https://ru.stackoverflow.com/questions/1196054/Создать-скрипт-для-вывода-данных-из-массива
    Но тебя все равно училка раком поставит, т.к:
    А если Учитель - бери много вазелина, возможно прокатит.
     
  5. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.490
    Симпатии:
    281
    PHP:
    1. <?php
    2. $cars = [
    3.     ['name' => 'Такси 1', 'position' => rand(0, 1000), 'isFree' => (bool) rand(0, 1)],
    4.     ['name' => 'Такси 2', 'position' => rand(0, 1000), 'isFree' => (bool) rand(0, 1)],
    5.     ['name' => 'Такси 3', 'position' => rand(0, 1000), 'isFree' => (bool) rand(0, 1)],
    6.     ['name' => 'Такси 4', 'position' => rand(0, 1000), 'isFree' => (bool) rand(0, 1)],
    7.     ['name' => 'Такси 5', 'position' => rand(0, 1000), 'isFree' => (bool) rand(0, 1)],
    8. ];
    9.  
    10. $k = 0;
    11. $pos = max(array_column($cars, 'position'));
    12.  
    13. foreach($cars as $key => $row)
    14. {
    15. if($row['position'] <= $pos && $row['isFree'] == 1)
    16. {
    17.   $pos = $row['position'];
    18.   $k = $key;
    19. }
    20. }
    21.  
    22. ptint_r($cars[$k]);
    23. ?>
     
  6. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.490
    Симпатии:
    281
    Да, еще не помешает одна дополнительная переменная с двумя значениями.
    Скажем - 0 и 1.
    На случай, если вся колонка "занята"
    тогда на выводе будет что-то вроде
    Код (Text):
    1.  
    2. if($var == 1)
    3. {
    4. print_r($cars[$k]);
    5. }
    6. else
    7. {
    8. echo 'свободных машин нет';
    9. }