За последние 24 часа нас посетили 21607 программистов и 1043 робота. Сейчас ищут 662 программиста ...

Реализовать функцию

Тема в разделе "Сделайте за меня", создана пользователем overjoyed, 25 мар 2019.

Метки:
  1. overjoyed

    overjoyed Новичок

    С нами с:
    25 мар 2019
    Сообщения:
    7
    Симпатии:
    0
    Реализовать функцию результатом ее выполнение будет: двумерный массив (массив, состоящий из ассоциативных массивов с ключами a, b, c).

    Пример для входных массива [1, 2, 3, 4, 5, 6].

    результат [[‘a’=>1,’b’=>2,’с’=>3],[‘a’=>4,’b’=>5 ,’c’=>6]].

    наверное, необходимо сделать цикл по массиву входных данных,
    в цикле счетчик по второму массиву (с именами ключей), при достижении
    счетчиком длины второго массива - сбрасывать его и увеличивать счетчик
    ключей первого уровня результирующего массива.
    Нужна помощь.
     
  2. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    @overjoyed, в следующий раз не надо писать в два раздела сразу. Хочешь, чтоб сделали за тебя - так сразу и пиши. Хочешь научиться - тоже так сразу и пиши. Делать за тебя не хочу, может кто ещё сделает, но я бы пользовал операцию взятия по модулю (т.е. получения остатка от деления)
     
  3. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    PHP:
    1. $in = [1, 2, 3, 4, 5, 6, 7];
    2. $keys = ['a', 'b', 'c'];
    3. $keysCnt = sizeof($keys);
    4. $out = [];
    5. foreach($in as $j => $val) {
    6.    $key1 = floor($j / $keysCnt);
    7.    $key2 = $j % $keysCnt;
    8.    $out[$key1][$keys[$key2]] = $val;
    9. }
    10. print_r($out);
     
    Anhk, TeslaFeo и overjoyed нравится это.
  4. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    PHP:
    1. $in = [1, 2, 3, 4, 5, 6, 7];
    2. $keys = ['a', 'b', 'c'];
    3. $out = []; $t = [];
    4. foreach($in as $v){
    5.    $t[] = $v;
    6.    if(count($keys) == count($t)){
    7.       $out[] = array_combine($keys, $t);
    8.       $t = [];
    9.    }
    10. }
    11. print_r($out);
     
    Anhk и overjoyed нравится это.
  5. overjoyed

    overjoyed Новичок

    С нами с:
    25 мар 2019
    Сообщения:
    7
    Симпатии:
    0
    спасибо огромное!

    А как реализовать эту задачу? Если есть возможность, помогите:

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

    Реализовать функцию getSizeForLimit($a, $b). $a – массив результата выполнения функции squareTrapeze(), $b – максимальная площадь. Результат ее выполнение: массив размеров трапеции с максимальной площадью, но меньше или равной $b.

    Реализовать функцию getMin($a). $a – массив чисел. Результат ее выполнения: минимальное числа в массиве (не используя функцию min, ключи массив может быть ассоциативный).

    Реализовать функцию printTrapeze($a). $a – массив результата выполнения функции squareTrapeze(). Результат ее выполнение: вывод таблицы с размерами трапеций, строки с нечетной площадью трапеции отметить любым способом.

    Реализовать абстрактный класс BaseMath содержащий 3 метода: exp1($a, $b, $c) и exp2($a, $b, $c),getValue(). Метода exp1 реализует расчет по формуле a*(b^c). Метода exp2 реализует расчет по формуле (a/b)^c. Метод getValue() возвращает результат расчета класса наследника.

    Реализовать класс F1 наследующий методы BaseMath, содержащий конструктор с параметрами ($a, $b, $c) и метод getValue(). Класс реализует расчет по формуле f=(a*(b^c)+(((a/c)^b)%3)^min(a,b,c)).
     
  6. Babka_Gadalka

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

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    Без функций
    PHP:
    1. <?php
    2.  
    3. $in = [1, 2, 3, 4, 5, 6, 7];
    4. $keys = ['a', 'b', 'c'];
    5.  
    6. $rank = $i = -1;
    7.  
    8. $new = [];
    9.  
    10. foreach ( $in AS $a1 )
    11. {
    12.     if ( $keys[$i] ?? 0 )
    13.     {
    14.         $new[$rank][$keys[$i]] = $a1;
    15.     }
    16.     else
    17.     {
    18.         $new[++$rank][$keys[$i=0]] = $a1;
    19.     }
    20.  
    21.     $i++;
    22. }
    23.  
    24. print_r ( $new );
     
  7. Babka_Gadalka

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

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    @overjoyed Что сдаешь, конец практики ?
     
    overjoyed нравится это.
  8. overjoyed

    overjoyed Новичок

    С нами с:
    25 мар 2019
    Сообщения:
    7
    Симпатии:
    0
    Сел за php, и он как дремучий лес для меня оказался... Можно комменты для "особо одаренного", блин
    --- Добавлено ---
    Может есть видео, где на пальцах рассказывают про циклы в сложных массивах? Как добавить к этой группе a, b, c еще s с площадью..?
     
  9. Babka_Gadalka

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

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    Не люблю видео про php. Интересней самому все пробовать/тестить по каждому байту.
     
  10. overjoyed

    overjoyed Новичок

    С нами с:
    25 мар 2019
    Сообщения:
    7
    Симпатии:
    0
    Может есть видео, где на пальцах рассказывают про
    помогите c дальнейшим решением, пожалуйста:

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

    Реализовать функцию getSizeForLimit($a, $b). $a – массив результата выполнения функции squareTrapeze(), $b – максимальная площадь. Результат ее выполнение: массив размеров трапеции с максимальной площадью, но меньше или равной $b.

    Реализовать функцию getMin($a). $a – массив чисел. Результат ее выполнения: минимальное числа в массиве (не используя функцию min, ключи массив может быть ассоциативный).

    Реализовать функцию printTrapeze($a). $a – массив результата выполнения функции squareTrapeze(). Результат ее выполнение: вывод таблицы с размерами трапеций, строки с нечетной площадью трапеции отметить любым способом.

    Реализовать абстрактный класс BaseMath содержащий 3 метода: exp1($a, $b, $c) и exp2($a, $b, $c),getValue(). Метода exp1 реализует расчет по формуле a*(b^c). Метода exp2 реализует расчет по формуле (a/b)^c. Метод getValue() возвращает результат расчета класса наследника.

    Реализовать класс F1 наследующий методы BaseMath, содержащий конструктор с параметрами ($a, $b, $c) и метод getValue(). Класс реализует расчет по формуле f=(a*(b^c)+(((a/c)^b)%3)^min(a,b,c)).
     
  11. Babka_Gadalka

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

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    Начни с малого
    реализовать свою

    PHP:
    1. $a = 11;
    2. $b = 22;
    3. $c = 33;
    4.  
    5. ...
    Люди увидят твое старание. Подтянутся, да и поисковики не забанены Роскомнадзором
     
    overjoyed нравится это.
  12. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    @keren лишние телодвижения

    зато неприятно пахнет
     
  13. overjoyed

    overjoyed Новичок

    С нами с:
    25 мар 2019
    Сообщения:
    7
    Симпатии:
    0
    Sizeof - тоже самое что и caunt?
     
  14. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    да, только count
     
  15. overjoyed

    overjoyed Новичок

    С нами с:
    25 мар 2019
    Сообщения:
    7
    Симпатии:
    0
    Вы можете написать комментарии к строчкам Вашего решения? Мне очень это важно, для понимания. Спасибо
     
  16. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    PHP:
    1. $in = [1, 2, 3, 4, 5, 6, 7];
    2. $keys = ['a', 'b', 'c'];
    3. $len = sizeof($keys);
    4. $out = []; $c = 0; $l = 0;
    5. foreach($in as $k => $v) {
    6.     if(empty($keys[$c])) { $c = 0; $l++; }
    7.     $out[$l][$keys[$c]] = $v;
    8.     $c++;
    9. }
    10. print_r($out);
    @runcore Откуда интересно твой пример?
     
    overjoyed нравится это.
  17. overjoyed

    overjoyed Новичок

    С нами с:
    25 мар 2019
    Сообщения:
    7
    Симпатии:
    0
    Помогите разобраться, скажу откуда такой пример))
    --- Добавлено ---
    $out[$key1][$keys[$key2]]=$val; - как эта строка читается? если ее разложить для новичка
    --- Добавлено ---
    $out[$l][$keys[$c]]=$v; - в Вашем решении
    --- Добавлено ---
    $out[$key1][$keys[$key2]]=$val; - как эта строка читается? е
    помогите разобраться в вашем решении,пожалуйста
     
  18. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    $out [ $key1 ] [ $keys[$key2] ] = $val;
     
  19. Boothooz

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

    С нами с:
    8 май 2016
    Сообщения:
    63
    Симпатии:
    6
    кто предложит еще короче вариант решения этой задачи?
     
  20. Babka_Gadalka

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

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    чем ?
     
  21. ixal

    ixal Новичок

    С нами с:
    27 мар 2019
    Сообщения:
    4
    Симпатии:
    3
    Так?
    Код (Text):
    1. $a = [1, 2, 3, 4, 5];
    2. $b = ['a', 'b', 'c'];
    3. $c = []; $e = count($b);
    4. foreach ($a as $d => $f) {
    5.     $c[floor($d / $e)][$b[$d % $e]] = $f;
    6. }
    Без цикла? Длиннее, но тоже решение
    Код (Text):
    1. $a = [1, 2, 3, 4, 5];
    2. $b = ['a', 'b', 'c'];
    3. $c = array_map(
    4.     function ($d, $e) {
    5.         return array_combine(array_slice($e, 0, count($d)), $d);
    6.     },
    7.     array_chunk($a, count($b)),
    8.     array_fill(0, ceil(count($a) / count($b)), $b)
    9. );
     
  22. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    говнокодом
     
  23. Babka_Gadalka

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

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    Что такое говнокод ? а что такое низкоуровневый код, который приближен к дочернему программному языку ?
    Либо твои выводы не осознанное выплескивание "личных мнений".
     
  24. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    о каком низкоуровневом коде ты говоришь?
    на форуме php...:)

    естественно это моё личное мнение, осознанное. ты пишешь на определенном языке. он даёт тебе некие готовые возможности, какой смысл от них отказываться? ради чего? чтобы родить треш?

    надеюсь внутри своих реальных проектов ты так не пишешь. а это было так... типа уровень твоего кунфу
     
  25. Boothooz

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

    С нами с:
    8 май 2016
    Сообщения:
    63
    Симпатии:
    6
    очень близко, но всё проще
    молодчик!