1. PHP / Говнокод #19135

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $a=array();
    for($i=0;$i<100;$i++){
     $t=rand(1,100);
     $a[$t]=$t;
    }

    Решение задачи из теста на пригодность в джуны.
    Сама задача была поставлена так:

    "Нужно объявить массив, в цикле от 1 до 100 заполнить его случайными цифрами (тоже от 1го до 100), и в итоге получить массив с уникальными значениями, реализовать минимальным кол-вом строк. "

    Шедевральная наркомания.

    Запостил: Twissel, 04 Декабря 2015

    Комментарии (23) RSS

    • $a[$t]=$t;

      Лол упорядоченный массив случайного размера с дырками в случайных местах
      Ответить
      • > с дырками в случайных местах

        это не дырки. это вакуум энтропии!
        Ответить
    • Жаль не придумал решения в одну строку (Кроме как написать в одну строку)
      $a=array();for($i=0;$i<100;$i++){ $t=rand(1,100); $a[$t]=$t;}
      //СПОЙЛЕР:
      $a = range(1,100);
      shuffle($a);
      //КОНЕЦ СПОЙЛЕРА
      Ответить
      • Я так им и решил, сказали "Сам дурак!"

        Успехов в поиске!
        Ответить
      • Ответить
      • Как бы это дико не выглядело, но я нашёл решение в одну строку:

        $a = (($a = range(1,100)) && shuffle($a)) ? $a : $a;
        Ответить
        • Читабельность страдает, но в общем, пойдёт.
          Ответить
          • Часть кода можно выкинуть, который мешает читабельности)
            И оставить только:
            ($a = range(1,100)) && shuffle($a);
            Ответить
          • И, чтоб увековичить данный говнокод, тред на ЛОРчике:

            https://www.linux.org.ru/forum/development/12157202/
            Ответить
            • > И, чтоб увековичить данный говнокод, тред на ЛОРчике
              А ссылки на ГК и нет. Не увековечилось.

              https://archive.is/x1F2u
              Ответить
            • на лоре какую то поеботину развели. Не люблю я форумы как раз из-за подобной поеботины.
              Ответить
    • на шеле:
      declare -a hohoho=(`seq 1 100 | shuf`)
      Ответить
      • вообщем везде делается в одну строчку где есть (смотря на пыховый пример выше: человеческий) shuffle().
        Ответить
    • // Нужно объявить массив
      $a=array();
      //, в цикле от 1 до 100
      for($i=0;$i<100;$i++){
      // заполнить его случайными цифрами (тоже от 1го до 100)
       $t=rand(1,100);
      //, и в итоге получить массив с уникальными значениями
       $a[$t]=$t;
      //, реализовать минимальным кол-вом строк.
      }

      и что тут не так? где-то указан размер массива в задаче?
      Ответить
      • > и что тут не так?
        >> реализовать минимальным кол-вом строк

        Правильный ответ -
        $a=array(); for($i=0;$i<100;$i++){ $t=rand(1,100); $a[$t]=$t; }
        Ответить
        • Повторяться же будут.
          Ответить
        • > $a[$t]=$t
          Хотя... Не будут повторяться. Всегда будет получаться возрастающая последовательность с дырками.
          Ответить
          • Да, я тоже сначала хотел возразить из-за возможных повторений, но оказалось, что автор кода это предусмотрел.
            И вот только после комментария пользователя depp я осознал всю глубину и мудрость этого кода.
            Ответить
          • Кстати, а дырки - это точно дырки, точно "ничто"? Или они будут неуникальными нечисловыми элементами?

            P.S.
            > и в итоге получить массив с уникальными значениями
            Одну значимую дырку можно
            Ответить
        • ну если уж совсем правильный, то:
          // Нужно объявить массив,
          $a=array();
          // в цикле от 1 до 100 заполнить его случайными цифрами (тоже от 1го до 100), и в итоге получить массив с уникальными значениями, реализовать минимальным кол-вом строк. 
          for($i=0;$t=rand(1,100),$i<100;$a[$t]=$t,$i++);
          Ответить
        • в одну строку:
          for($i=0,$a=array();$t=rand(1,100),$i<100;$a[$t]=$t,$i++);

          но это уже совсем дурной тон.
          Ответить

    Добавить комментарий