Проблема алгоритма отсеивания в Codeigniter - PullRequest
0 голосов
/ 07 мая 2020
• 1000 Мой ручной расчет: budipekerti word

Результат по коду: code calculation

в результате ручное изображение, которое вы можете реализовать между прокаткой га sh с «udi» и «dip» (пример) - это 6538 и 5740, но в результате код 5852 и 35927, что не одно и то же. В ha sh с "bud" тот же результат, что и мой код, который работает для вычисления ha sh

rollha sh code:

        $text = $text;
        $hash_value = 0;
        $prev_hash = 0;
        $basis = 7;
        $ascii = 0;
        $kgram = 3;
        $c_awal;
        $c_akhir;
        $prime = 100007;

        for($j=0; $j <= (strlen($text)-$kgram); $j++){
            $charArray[$j] = substr($text, $j, $kgram);
        }
        // hashing
        for($i = 0; $i < $kgram; $i++){
            $ascii = ord($charArray[$i] );
            $hash_value = $hash_value + $ascii * pow($basis, $kgram - ($i+1));               
        }
        // rolling hash
        $hash_value = $hash_value % $prime;
        $hash[0] = $hash_value;
        $prev_hash = $hash_value;

       for($k = 1; $k < count($charArray);$k++){ //count array data

            $c_awal = substr($charArray[$k+1], 0.1);

            $c_awal = ord($c_awal);

            $c_akhir = substr($charArray[$k], -1); //i


            $hash_value = (($prev_hash + $prime) - $c_awal * pow($basis, $kgram - $k)
            % $prime) % $prime;   

            $hash_value = ($hash_value * $basis + ord($c_akhir)) % $prime;

            $prev_hash = $hash_value;           

            $hash[$k] = $hash_value;
        }  
        return $hash;

в rollha sh code Я пытаюсь реализовать алгоритм веяния (из рисунка ручного расчета вы можете видеть), но почему мой результат отличается от результата, который я рассчитал вручную? в чем тут проблема и как это исправить? Заранее спасибо

...