PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
vasya89
Отправлено: 17 Мая, 2019 - 20:09:31
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2019  


Помог: 0 раз(а)




Строитель пишет:
vasya89 пишет:
Как-то не получается у меня объяснить вам.
Так-то мне понятно, какой на выходе должен быть массив. Но мне не понятно, почему именно с помощью регулярок вам необходимо решать эту задачу. Ведь регулярки дают не много не такой результат. Может быть и есть какая-то возможность повлиять на это в регулярках, но я о ней не знаю.


Ну, может зря я упомянул регулярные, я привел это как один из вариантов, но оно явно сбило с толку. Я нигде не утверждал, что решение должно быть только на них.

Если все обсуждающие здесь сошлись на том, что регулярные в данном случае не могут до конца решить задачу, то я за тот вариант, о котором упоминал LIME (про массив с буквами как ключами). Но это явно сложнее, и не уверен что бесплатно за это кто-то возьмется. Там я так думаю требуется предварительно создать в памяти три массива, а потом хитрым образом рекурсией как-то.

(Отредактировано автором: 17 Мая, 2019 - 20:11:08)

 
 Top
LIME
Отправлено: 18 Мая, 2019 - 14:29:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 10263
Дата рег-ции: Нояб. 2010  


Помог: 306 раз(а)




vasya89 пишет:
Там я так думаю требуется предварительно создать в памяти три массива
не важно как представлены данные
сделать из них деревья это как раз очень простая часть
vasya89 пишет:
бесплатно за это кто-то возьмется
точно не я
к сожалению для новичков это сложно а для дядек это неохота
хороший тест для приема на работу получился))
vasya89 не иди на эту работу
тебе сильно рано
даже если кто напишет ты не сможешь защитить решение
удачи
(Добавление)
никакой рекурсии
объяснил бы понятнее но... для меня это время а для вас это сложно(хотя это просто)
жаль


-----
DDD
 
 Top
vasya89
Отправлено: 18 Мая, 2019 - 16:38:53
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2019  


Помог: 0 раз(а)




LIME пишет:
vasya89 пишет:
Там я так думаю требуется предварительно создать в памяти три массива
не важно как представлены данные
сделать из них деревья это как раз очень простая часть
vasya89 пишет:
бесплатно за это кто-то возьмется
точно не я
к сожалению для новичков это сложно а для дядек это неохота
хороший тест для приема на работу получился))
vasya89 не иди на эту работу
тебе сильно рано
даже если кто напишет ты не сможешь защитить решение
удачи
(Добавление)
никакой рекурсии
объяснил бы понятнее но... для меня это время а для вас это сложно(хотя это просто)
жаль


LIME вы озвучиваете какие-то ваши личные домысли. Я не собираюсь быть программистом, не иду на эту работу, не решаю тестовое задание. Мне нужны некоторые скрипты для исследования русского языка для личного интереса и общественного пользования.

Могли бы попробовать объяснить на пальцах принцип работы (без рекурсии). Может я сам пойму, а может кто подключится написать по вашим объяснениям.

Кое-что навоял по созданию дерева (без многомерного массива):
PHP:
скопировать код в буфер обмена
  1.  
  2. function indexing($parts, $reverse=false) {
  3.         foreach($parts as $k => $v) {
  4.                 $len = strlen($v);
  5.                 if ($reverse)
  6.                         $v = strrev($v);
  7.                 if ($len == 0) {
  8.                         $index[''] = true;
  9.                 } else {
  10.                         $s = '';
  11.                         for($i=0; $i<$len; $i++) {
  12.                                 $s .= $v[$i];
  13.                                 if ($i+1 == $len)
  14.                                         $index[$s] = true;
  15.                                 else
  16.                                         $index[$s] = false;
  17.                         }
  18.                 }
  19.         }      
  20.         return $index;
  21. }
  22.  
  23. $word = 'валить';
  24. $part1 = array('','в','на','от','по');
  25. $part2 = array('бел','вал','ал');
  26. $part3 = array('','ить','ю','ил','ила');
  27.  
  28. $p1 = indexing($part1);
  29. $r1 = indexing($part1, true);
  30. print_r($p1);
  31. print_r($r1);
  32.  
  33. /*
  34. Array
  35. (
  36.     [] => 1
  37.     [в] => 1
  38.     [н] =>
  39.     [на] => 1
  40.     [о] =>
  41.     [от] => 1
  42.     [п] =>
  43.     [по] => 1
  44. )
  45. Array
  46. (
  47.     [] => 1
  48.     [в] => 1
  49.     [а] =>
  50.     [ан] => 1
  51.     [т] =>
  52.     [то] => 1
  53.     [о] =>
  54.     [оп] => 1
  55. )
  56. */
  57.  
  58.  
 
 Top
LIME
Отправлено: 18 Мая, 2019 - 17:17:00
Post Id



Активный участник


Покинул форум
Сообщений всего: 10263
Дата рег-ции: Нояб. 2010  


Помог: 306 раз(а)




понял
задача не такая простая как может показаться
это по сути конечный автомат построение индекса
если время решения не сильно важно пиши мне в личку
если решу что стоит то займусь
(Добавление)
боюсь никто не поймет и не подключится
тут очень мало действительно знающих людей
алгоритм прост
но тут никто(почти) вообще не понимает что такое алгоритм в принципе
к сожалению
(Добавление)

вау
когда я пришел на этот форум я даже толком html не знал
первые мои посты были просьбой помочь наладить локальный апач...сейчас самому смешно))
а теперь я... в нагруженной соцсети работаю...вау


-----
DDD
 
 Top
vasya89
Отправлено: 18 Мая, 2019 - 20:18:20
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Май 2019  


Помог: 0 раз(а)




LIME пишет:
понял
задача не такая простая как может показаться
это по сути конечный автомат построение индекса
если время решения не сильно важно пиши мне в личку
если решу что стоит то займусь
(Добавление)
боюсь никто не поймет и не подключится
тут очень мало действительно знающих людей
алгоритм прост
но тут никто(почти) вообще не понимает что такое алгоритм в принципе
к сожалению
(Добавление)

вау
когда я пришел на этот форум я даже толком html не знал
первые мои посты были просьбой помочь наладить локальный апач...сейчас самому смешно))
а теперь я... в нагруженной соцсети работаю...вау


Время на решение есть, дедлайн не установлен. А где эти знающие люди водятся в интернете? Я не совсем новичок, но глубоко никогда не мог заниматься программированием, не мое это призвание, тут нужен склад и способности ума особые и вариться в этом надо постоянно. Я бы хотел найти программистов которые по минимальному числу вопросов ко мне поймут, что надо сделать, а не до такой степени, что сам начинаю код писать. Тут нужны не просто кодеры, а с инженерной жилкой.

Напрягся как мог, написал вариант на рекурсии (другие варианты не знаю как реализовать), далось мне это тяжелыми усилиями и до конца нет гарантии что без алгоритмических ошибок. Вот выкладываю. Напишите, в чем отличие от вашей идеи.

PHP:
скопировать код в буфер обмена
  1.  
  2. function indexing($parts, $reverse=false) {
  3.         foreach($parts as $k => $v) {
  4.                 $len = strlen($v);
  5.                 if ($reverse)
  6.                         $v = strrev($v);
  7.                 if ($len == 0) {
  8.                         $index[''] = true;
  9.                 } else {
  10.                         $s = '';
  11.                         for($i=0; $i<$len; $i++) {
  12.                                 $s .= $v[$i];
  13.                                 if ($i+1 == $len)
  14.                                         $index[$s] = 1;
  15.                                 else
  16.                                         $index[$s] = -1;
  17.                         }
  18.                 }
  19.         }      
  20.         return $index;
  21. }
  22.  
  23. function analise($start=true, $partsid=1, $pos=0) {
  24.         if ($start) {
  25.                 $start = false;
  26.                 $GLOBALS['vars']['sostav'] = array();
  27.         }
  28.         $max = 3; // три части слова
  29.         if ($GLOBALS['vars']['p'.$partsid][''] == 1) {
  30.                 $GLOBALS['vars']['tmp'][$partsid-1] = '';
  31.                 if ($partsid+1 <= $max) {
  32.                         analise($start, $partsid+1, $pos);
  33.                 } else if ($pos+1 == strlen($GLOBALS['vars']['word'])) {
  34.                         $GLOBALS['vars']['sostav'][] = $GLOBALS['vars']['tmp'];
  35.                 }
  36.         }
  37.         $s = '';
  38.         for($i=$pos; $i<strlen($GLOBALS['vars']['word']); $i++) {
  39.                 $s .= $GLOBALS['vars']['word'][$i];
  40.                 if ($GLOBALS['vars']['p'.$partsid][$s] == 1) {
  41.                         $GLOBALS['vars']['tmp'][$partsid-1] = $s;
  42.                         if ($partsid+1 <= $max && $i+1 < strlen($GLOBALS['vars']['word'])) {
  43.                                 analise($start, $partsid+1, $i+1);
  44.                         } else if ($partsid+1 > $max) {
  45.                                 $GLOBALS['vars']['sostav'][] = $GLOBALS['vars']['tmp'];
  46.                         }
  47.                 } else if ($GLOBALS['vars']['p'.$partsid][$s] == -1) {
  48.                         // continue
  49.                 } else {
  50.                         break;
  51.                 }
  52.         }
  53. }
  54.  
  55. $part1 = array('','в','на','от','по');
  56. $part2 = array('бел','вал','ал');
  57. $part3 = array('','ить','ю','ил','ила');
  58. $GLOBALS['vars']['p1'] = indexing($part1);
  59. $GLOBALS['vars']['p2'] = indexing($part2);
  60. $GLOBALS['vars']['p3'] = indexing($part3);
  61. $GLOBALS['vars']['word'] = 'валить';
  62. analise();
  63. print_r($GLOBALS['vars']['sostav']);
  64.  
  65. /*
  66. Array
  67. (
  68.     [0] => Array
  69.         (
  70.             [0] =>
  71.             [1] => вал
  72.             [2] => ить
  73.         )
  74.  
  75.     [1] => Array
  76.         (
  77.             [0] => в
  78.             [1] => ал
  79.             [2] => ить
  80.         )
  81.  
  82. )
  83. */
  84.  
 
 Top
LIME
Отправлено: 18 Мая, 2019 - 20:39:26
Post Id



Активный участник


Покинул форум
Сообщений всего: 10263
Дата рег-ции: Нояб. 2010  


Помог: 306 раз(а)




ой жесть
я такой код даже не хочу начинать читать
прям ужас
понятно что ты не кодер и хочешь найти помощи
мне лениво...другие не потянут явно
потому хорошим прогерам и платят хорошую зп
рассмотри вариант заплатить
мне деньги не нужны я в порядке
но это задачка для талантливого новичка
строитель сможет если захочет
уговори его а я подскажу алгоритм
(Добавление)
vasya89 хотя вру
принцип ты правильно понял
видна работа мысли
не так код и ужасен для не программиста


-----
DDD
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB