ФорумПрограммированиеПыхнуть хотите?Готовые решения → Функция опеределения уровня текста - для пыхоманьяков

Функция опеределения уровня текста - для пыхоманьяков

  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 3 января 2011 г. 16:40

    /**
    * функция определяет уровень сложности текста
    * @param string $text статья
    * @return integer
    */
    function textlevel($text)
    {
    $int = preg_replace('/[^0-9]/', '', $text);
    $total = -100500;
    $fxarray = explode(0, $int);
    if (count($fxarray) < 3) return 5;
    foreach ($fxarray as $number):
    $a = substr($number, 0, 5);
    $b = ($a+1)*3;
    $c = ($a-$b)+(5*$a);
    $x = (-1*$b)/((2*$c)+1);
    $y = (($c*$x)*($c*$x))+($b*$x)+$a;
    $total += $y;
    endforeach; return strlen(ceil($total));
    }


    при помощи этой нехитрой приблудности можно сравнить два текста "какой круче", пишу под градусом, делать нехуй поэтому приходится писать такое, функция основана на простейшей 13-ти битовой параболической экстраполяции
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 3 января 2011 г. 16:42, спустя 2 минуты 20 секунд

    пример бы хоть к этому гавнокоду
    Сапожник без сапог
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 3 января 2011 г. 16:51, спустя 8 минут 48 секунд

    <?php
    require_once 'extra.curl.php';
    $curl = new easy_libcurl;
    $s1 = textlevel($curl->upoint('http://ru.wikipedia.org/wiki/Китайская_комната')->exec());
    $s2 = textlevel($curl->upoint('http://www.ukrstat.gov.ua/')->exec());

    /**
    * функция определяет уровень сложности текста
    * @param string $text статья
    * @return integer
    */
    function textlevel($text)
    {
    $int = preg_replace('/[^0-9]/', '', $text);
    $total = -100500;
    $fxarray = explode(0, $int);
    if (count($fxarray) < 3) return 5;
    foreach ($fxarray as $number):
    $a = substr($number, 0, 5);
    $b = ($a+1)*3;
    $c = ($a-$b)+(5*$a);
    $x = (-1*$b)/((2*$c)+1);
    $y = (($c*$x)*($c*$x))+($b*$x)+$a;
    $total += $y;
    endforeach; return strlen(ceil($total));
    }

    if ($s1 > $s2) echo 's1 круче';
    if ($s1 < $s2) echo 's2 круче';
    if ($s1 == $s2) echo 'оба хороши';
    Спустя 268 сек.
    http://ru.wikipedia.org/wiki/А-32
    http://ru.wikipedia.org/wiki/Т-34
    оба хороши выдаёт

    http://ru.wikipedia.org/wiki/Китайская_комната
    http://www.ukrstat.gov.ua/

    выдаёт s1 круче
    Спустя 65 сек.
    http://ru.wikipedia.org/wiki/СССР
    http://ru.wikipedia.org/wiki/Канада

    выдаёт s1 круче
    Спустя 107 сек.
    http://pyha.ru
    http://google.ru

    выдаёт s2 круче =)
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 3 января 2011 г. 17:02, спустя 10 минут 50 секунд

    вот ещё один вариант функции, точность увеличена

    /**
    * функция определяет уровень сложности текста
    * @param string $text статья
    * @return integer
    */
    function textlevel($text)
    {
    $int = preg_replace('/[^0-9]/', '', $text);
    $total = -100500;
    $fxarray = explode(0, $int);
    if (count($fxarray) < 3) return 11;
    foreach ($fxarray as $number):
    $a = substr($number, 0, 5);
    $b = ($a+1)*3+($a*M_SQRT1_2);
    $c = ($a-$b)+(5*$a);
    $x = (-1*$b)/((2*$c)+1);
    $y = (($c*$x)*($c*$x))+($b*$x)+$a;
    $total += $y;
    endforeach; return (strlen(ceil($total))-10);
    }
    Спустя 80 сек.
    ой ошибся одной циферкой
    вместо if (count($fxarray) < 3) return 11;
    if (count($fxarray) < 3) return 1;
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 3 января 2011 г. 17:10, спустя 7 минут 47 секунд

    /**
    * функция определяет уровень сложности текста
    * @param string $text статья
    * @return integer
    */
    function textlevel($text)
    {
    $int = preg_replace('/[^0-9]/', '', $text);
    $total = -100500;
    $fxarray = explode(0, $int);
    if (count($fxarray) < 3) return 1;
    foreach ($fxarray as $number):
    $a = substr($number, 0, 5);
    $b = ($a+1)*3+($a*M_SQRT1_2);
    $c = ($a-$b)+(5*$a);
    $x = (-1*$b)/((2*$c)+1);
    $y = (($c*$x)*($c*$x))+($b*$x)+$a;
    $total += $y;
    endforeach; return ((strlen(ceil($total))-10)+substr($y,1,1));
    }


    а у этой разброс цифр уже выше
  • master

    Сообщения: 3244 Репутация: N Группа: Джедаи

    Spritz 3 января 2011 г. 21:22, спустя 4 часа 12 минут 55 секунд

    спасибо за юмор
    не всё полезно, что в swap полезло

Пожалуйста, авторизуйтесь, чтобы написать комментарий!