"PHP" / Говнокод #2798 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 nur, (Updated )

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

  • бля этот гуест валидный акк или акк для гостей?
    Ответить
  • Без бутылки не разобрать. Боюсь, что одной не хватит.
    Ответить
        • Не соответствует требованиям. Нет точек и тире
          Ответить
          • ЭЭ нет, требования -
            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;
                }

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

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8