Как стать автором
Обновить

Комментарии 13

Интересно, но бесполезно… Не вижу дальнейшего развития этого алгоритма…
Угу.

Цель работы — просто покалупать, а не думать какие-то наполеоновские планы на развитие:)
Работает медленно. А как развитие — например управление медиацентром с NumPad панели.
хабрапарсер, как всегда, — лох. он сьедает все «пустые теги», в том числе подсвеченные нули:
<font color="#ff0000">0</font>
возможным костылём есть, например, использование мнемонической замены без точки с запятой для нуля:
[<font color="#ff0000">&#48</font>]

[&#48]
$this->wordlist = file($filename);
//array_walk( $this->wordlist, create_function('&$w', '$w=trim($w);')); // замедляет работу пришлось отключить


Отправилось раньше. Может, так сработает получше?
$this->wordlist = array_map('trim', file($filename));
да и метод fetch можно сделать изящнее, если сократить два иф-елса до тернарного оператора:

$strpos_func = $this->mb_support ? 'mb_strpos' : 'strpos';
if( $strpos_func($this->wordlist[$i], $this->enum[$


аналогично и во вторйо части:

$let = $this->mb_support ? mb_strtolower($compare[$k][$i]) : $compare[$k][$i];
эти два фикса спасут от дублирования логики, и приведения вида метода к более удобочитаемому
хотя, я так понимаю, во второй части вы просто забыли strtolower во втором ифе.
угу, спасибо за поправочки)
думаю, значительно увеличить скорость можно держа в кеше готовый индексированный массив $this->wordlist скажем, первые два символа. пока введена одна буква ищем по «нуль»-массиву и всем массивам соответсвущих индексов, а когда введены две буквы — скорость поиска сокращается значительно.
<?php
  $array 
= array (
    
"\0"  => array("а""б""в""у""ы""о""ж""я""с""и"),
    
"a"   => array (
      
"б" => array ("абрикос""абракадабра"/*, ... */),
      
"в" => array ("аватара""авоска"/*, ... */)
    )
  );
  

echo 
$array["\0"][1]; // б
?>
Да это же каноническая задачка для реализации на деревьях!
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории