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

    +162.2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    $l = array('q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b', 'n', 'm', '-', '.');
    $len = 9;
    for ($i = 0; $i < 100; $i++) //цикл для проверки=)
    {
        $login = '';
        while (strlen($login) < $len) {
            $current = $l[mt_rand(0, (((strlen($login) + 1 == $len) || (strlen($login) == 0)) ? count($l) - 3 : count($l) - 1))]; //мама ради миня абратна
            $login. = ((substr($login, strlen($login) - 1, 1)) == $current) ? '' : $current;
        }
    
        echo $login."<br>";
    }

    наверно самый извращенный код для генереции случайних строк который я когда либо писал=)
    примерно такие требования
    в начале и в конце как точки, так и тире быть тоже не должно
    Т.е другими словами, должен начинаться буквой и заканчиваться буквой
    не иметь двух тире и двухточие подряд

    Запостил: nur, 15 Марта 2010

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

    • показать все, что скрытоГде здесь С++?
      Ответить
    • бля этот гуест валидный акк или акк для гостей?
      Ответить
    • Без бутылки не разобрать. Боюсь, что одной не хватит.
      Ответить
    • md5(time())?
      Ответить
      • В md5 есть символы "q", "w", "r", ".", "-" и т.д.?
        Ответить
        • substr(base64_encode(md5(time())), 0, 9) ?
          Ответить
          • Не соответствует требованиям. Нет точек и тире
            Ответить
            • ЭЭ нет, требования -
              1) должен начинаться буквой и заканчиваться буквой
              2) не иметь двух тире и двухточие подряд
              Формально нормально, только он генерит какашку, слишком много символов совпадает. Можно заюзать
              base_convert( sha1(microtime()), 16, 36)
              и потом оторвать нужное количество символов..
              Ответить
              • Но в Ваших вариантах никогда не будет точек и тире. Затем, в исходном массиве нет цифр. Ваши варианты отличаются от результатов исходного кода.
                Ответить
                • function fuckingString($len)
                  {
                    $out = $last = $cur = '';
                    
                    for ($i = 0; $i < $len; ++$i)
                    {
                      do
                      {
                        $cur = chr(($x = mt_rand(97, 124)) > 122 ? $x - 52 : $x);
                      }
                      while ((($i == 0 || $i == $len - 1) && $x > 122) || ($cur == $last));
                      
                      $out .= $cur;
                      $last = $cur;
                    }
                    
                    return $out;
                  }

                  Немного отличается от условия задания в том, что здесь никогда не будет двух одинаковых символов подряд. Но не думаю, что это очень существенно.
                  Ответить
                  • это не говнокод, и не извращенно) я писал придерживаясь требований и извращался для поломки мозга моему одногрупнику который просил это написать)
                    Ответить
                    • Я и не стремился ни к говнокоду, ни к извращению. Просто написал, как бы сделал я =)
                      Ответить
    • М-дя... ппц...
      но больше всего порадовал коммент в конце строки )
      Ответить

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