За последние 24 часа нас посетил 34181 программист и 1709 роботов. Сейчас ищут 768 программистов ...

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

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

Метки:
  1. ixal

    ixal Новичок

    С нами с:
    27 мар 2019
    Сообщения:
    4
    Симпатии:
    3
    микс
    Код (Text):
    1. $a = [1, 2, 3, 4, 5];
    2. $b = ['a', 'b', 'c'];
    3. $c = [];
    4. foreach (array_chunk($a, count($b)) as $f) {
    5.     $c[] = array_combine(array_slice($b, 0, count($f)), $f);
    6. }
     
    runcore и Boothooz нравится это.
  2. Boothooz

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

    С нами с:
    8 май 2016
    Сообщения:
    63
    Симпатии:
    6
    БИНГО!
     
  3. ixal

    ixal Новичок

    С нами с:
    27 мар 2019
    Сообщения:
    4
    Симпатии:
    3
    а мне не нравится :(
    я вот еще более короткий вариант говнокода сделал
    Код (Text):
    1. $a = [1, 2, 3, 4, 5];
    2. $b = ['a', 'b', 'c'];
    3. $c = [];
    4. while (count($a) && $c[] = array_combine(array_slice($b, 0, count($a)), array_splice($a, 0, count($b))));
     
    Boothooz нравится это.
  4. Boothooz

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

    С нами с:
    8 май 2016
    Сообщения:
    63
    Симпатии:
    6
    решение подобных задач в одну строчку - это частный случай)

    В целом, тоже верное направление. Ничего тормозящего в этом варианте я не заметил.
    Для красоты, можно count($a) вынести из цикла ))
     
  5. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    если уж стебаться, то
    PHP:
    1. $in = [1, 2, 3, 4, 5, 6, 7];
    2. $k = ['a', 'b', 'c'];
    3. $o = [];
    4. $i=$j=0;
    5. foreach($in as $v) {
    6.     $o[$i+=@!$k[$j]][$k[@!$k[$j]?0*($j=1):$j++]] = $v;
    7. }
     
    #30 runcore, 27 мар 2019
    Последнее редактирование: 27 мар 2019
    ixal нравится это.
  6. Boothooz

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

    С нами с:
    8 май 2016
    Сообщения:
    63
    Симпатии:
    6
    :D:D:D

    новички нескоро прочитают такой код
     
  7. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Скобки у тебя джуниорские, надо вот так:
    PHP:
    1. $o{$i+=@!$k{$j}}{$k{@!$k{$j}?0*($j=1):$j++}} = $v;
     
    ixal и runcore нравится это.
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    код должен ХОРОШО ЧИТАТЬСЯ, а не быть напиханым в одну строку
     
    runcore нравится это.
  9. Babka_Gadalka

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

    С нами с:
    16 фев 2019
    Сообщения:
    162
    Симпатии:
    23
    Адрес:
    Москва, Пушкина, Избушкина, 2й этаж душечка.
    Для понимания логики и как оно все работает, не скрывая "обвертками" ход работы над данными. Поэтому в моем посту отсутствует фразы по типу "самое оптимизированное ит.д.", а только лишь аргументированно/досканально показывает ход работы над данными.
    Мимо, другие проекты не относятся к данной ситуации или что - то подобного:
    Ты сумел управиться с помощью некой "обверткой", предоставляемым PHP. Я же и без них показал конкретизированный вариант.

    Вот это должно быть осознанно.
    --- Добавлено ---
    Код машина за вас прочтет, но ей будет больно от присутствия @
     
    runcore нравится это.
  10. Boothooz

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

    С нами с:
    8 май 2016
    Сообщения:
    63
    Симпатии:
    6
    код вполне читаем, если пробелы поставить
    единственный минус, что @ использован
     
  11. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Код отвратителен, @runcore даже отдельно написал что это стёб, хотя и без того, я бы очень удивился, если бы опытный программист вроде него всерьез написал такое.

    Подобные издевательства над глазами и мозгом оправданы лишь в одном случае: миллионы итераций, тогда, хитрыми оптимизациями и опытным путем можно уменьшить время выполнения. В остальных случаях - оно того не стоит, потому что код прежде всего должен быть самодокументируемым.
     
  12. keren

    keren Новичок

    С нами с:
    15 ноя 2017
    Сообщения:
    513
    Симпатии:
    42
    Кому что, мне скорее такие 'профессионалы' регулярок:
    https://php.ru/forum/threads/konvertacija-soderzhimogo-div-v-obychnyj-tekst.75874/#post-595902
    Но профессиональнее наверное обойтись без собачек:
    PHP:
    1. $in = [1, 2, 3, 4, 5, 6, 7];
    2. $k = ['a', 'b', 'c'];
    3. $out = []; $c = $l = 0;
    4. foreach($in as $v){$out[$l][$k[count($k)==$c?0*($c=1)*($l++):$c++]] = $v;}
    5. print_r($out);
     
  13. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Вас штрафуют за каждый лишний байт? )
     
  14. ixal

    ixal Новичок

    С нами с:
    27 мар 2019
    Сообщения:
    4
    Симпатии:
    3
    Да ну брось, какие штрафы? Просто тут звучала фраза "кто предложит еще короче вариант решения этой задачи?". Вот и появились извращенные варианты исполнения детской задачи.

    У кого есть еще стебные варианты решений?
     
  15. Boothooz

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

    С нами с:
    8 май 2016
    Сообщения:
    63
    Симпатии:
    6
    идеально было бы, есть
    решение в 3 строчки для детской задачи, без дополнительных переменных
     
  16. Sokstr

    Sokstr Новичок

    С нами с:
    1 апр 2021
    Сообщения:
    1
    Симпатии:
    0
    PHP:
    1. <?php
    2.  
    3. function createTrapeze($a)
    4. {
    5.  
    6.     $a = [1, 2, 3, 4, 5, 6];
    7.     $b = ['a', 'b', 'c'];
    8.     $e = sizeof($b); //считаем
    9.     foreach ($a as $d => $f) {
    10.         $c[floor($d / $e)][$b[$d % $e]] = $f; // трапеция
    11.     }
    12.     return $c;
    13. }
    14. $k = createTrapeze($a);
    15.  
    16. $result = array_map('squareTrapeze', $k); // для каждого куска применяем функцию
    17.  
    18. function squareTrapeze($chunk)
    19. {
    20.     $chunk = array_combine(['a', 'b', 'c'], $chunk); // устанавливаем ключи
    21.     $chunk['s'] = ($chunk['a'] + $chunk['b']) * $chunk['c'] / 2; // считаем и записываем площадь квадратика
    22.     return $chunk;
    23. };
    24.  
    25. echo '<pre>';
    26. print_r($result);
    27. echo '<pre>';
    Всем привет, вот что у меня получилось по заданию далее требуется
    Реализовать функцию getSizeForLimit($a, $b). $a – массив результата выполнения функции squareTrapeze(), $b – максимальная площадь. Результат ее выполнение: массив размеров трапеции с максимальной площадью, но меньше или равной $b.

    Вообще не пойму что от меня требуется, может кто сможет объяснить?
    Мне просто взять максимальную площадь или нужно написать формулу поиска максимального значения площади?
    Каким образом я должен вывести массив размеров трапеции с максимальной плащадью.
    Может у меня глаз уже замылился... хелп