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

    +64

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    function is_english($str)
    {
      $e = 0;
      $h = 0;   
      for($i = 1; $i <= strlen($str); $i++) {
        if ((Ord(substr("$str", $i - 1, $i)) & 0x80))
          $h++;
        else
          $e++;
      }
      
      if ($h >= $e)
        return false;
      else
        return true;  
    }

    по названию функции все ясно

    Запостил: Skull, 14 Августа 2012

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

    • It's awesome, блять :)
      Ответить
    • Автор кода извращенец. Небось с C/C++ или Java перешел на похапе. И то, substr - это слишком
      Ответить
      • Был бы он Джавист или сишник, было бы как минимум
        function is_english($str) {
            for ($i = 0; $i < strlen($str); $i++) {
                $r[!!(Ord(substr("$str", $i, $i + 1)) & 0x80)]++;
            }
            return $r[0] >= $r[1];
        }
        Ответить
        • Сишник никогда не напишет for ($i = 0; $i < strlen($str); $i++), потому что в Си это O(n^2).

          P.S. А кто будет инициализировать $r?
          Ответить
          • Так сарказм же. Сишник никогда и substr("$str", $i, $i + 1) не напишет, это ж целый вызов функции, против $str[$i]
            Ответить
            • И сишник, как никто другой, знает, что не все, что меньше 0x80 это инглишанская буква...
              Ответить
          • > А кто будет инициализировать $r?
            Воин Сишник должен знать, пересаживась на похапе, что последний может в динамической типизации.
            Ответить
            • А теперь посмотрите на логи, если передать строку, состоящую, к примеру, из латинских букв или цифр...

              Будет ругаться, что неизвестный индекс 1 в $r.

              P.S. Да на самом деле, скорее всего, отругает уже на $r[...]++, т.к. $r не проинициализирован, а его надо читать, а не писать.

              P.P.S. Или это тоже был сарказм? ;)
              Ответить
              • > А теперь посмотрите на логи
                Плачу вам вашей же монетой
                http://govnokod.ru/11592#comment151086

                >Или это тоже был сарказм?
                Странно слышать это ньюфажество от вас, @bormand.
                Ответить
                • >>Или это тоже был сарказм?
                  >Странно слышать это ньюфажество от вас, @bormand.

                  И на старуху бывает проруха. Забыл, что у всех олдфагов сарказм включен по умолчанию.
                  Ответить
                  • А чего не воспользовались фичей "Цитировать с тегами"?
                    У меня-то ваш ник был жирным.
                    Ответить
      • Судя по substr автор перешел с бейсика.
        Ответить
        • О, сударь. Я только хотел это сказать.

          >>Был бы он Джавист или сишник, было бы как минимум
          Если бы сишник всё могло быть гораздо хуже:
          for($i = 1; $i <= slen;)
              ++$r[!!(Ord(substr("$str", $i, ++$i)) & 0x80)];

          А джавист бы юзал библиотечные функции (в Charactere вроде что-то есть) и непременно породил бы фабрику.
          Ответить
          • > и непременно породил бы фабрику.
            И интерфейс LanguageDetector...
            Ответить
    • Это все еще было оформлено как библиотека с полезными(!) функциями. Датирована 2004 годом.
      Ответить
    • - Завтра экзамен, но к вечеру, надеюсь, я уже приду в себя.
      Ответить

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