Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ассоциация номера телефона со словами 
:(
    Опции темы
Gold Dragon
Дата 19.1.2012, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



В одной из тем про "как обрабатывать телефонный номер" возникла идея сделать ассоциацию со словами, т.е. чтобы лучше запомнить телефон.

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

далее есть
2 - а,б,в,г
3 - д,е,ё,ж,з
4 - и,й,к,л
5 - м,н,о,п
6 - р,с,т,у
7 - ф,х,ц,ч
8 - ш,щ,ь,ы,ъ
9 - э,ю,я

а также есть таблицы с русскими словами (у меня получилось около 99 тысяч) где есть само слово и сколько в нём букв.  Хотя нужно будет выкинуть слова больше 10 букв 

а вот теперь сижу ине могу понять как осуществить перебор словаря и выдать все возможные варианты

Жду идей ;)





--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 20.1.2012, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



сотовые номера начинаются с 8 или 7 (у нас), то есть слова будут начинаться на ф,х,ц,ч,ш,щ,ь,ы,ъ
как много таких слов?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 20.1.2012, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



телефонные номера у нас начинаются с кода оператора или кода региона smile а 8 или +7 это всего-лишь код для выхода в междугороднюю или международную сеть.. 

Цитата(MoLeX @  20.1.2012,  07:23 Найти цитируемый пост)
как много таких слов? 

в том словаре который у меня
ф - 1512
х - 1045
ц - 509 
ч - 952
ш - 1231
щ - 179
ы, ь,ъ - понятное дело нет

так что можно выбрать  smile Конечно не все номера будут иметь "красивые слова", но суть вопроса другая..

Сейчас пытаюсь всё это дело реализовать через прогон массивов. Но видимо это не самый оптимальный вариант.. Зато будет от чего отталкиваться.. 


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 20.1.2012, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



1. надо бы составить правила формирования слов (три ффф подряд не могут быть и т.д.)
2. проверка по словарю

Добавлено через 48 секунд
как я пока вижу решение: формируем все возможные комбинации, с учетом правил (п. 1), и делаем проверку. в итоге мы можем получить несколько вариантов


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Gold Dragon
Дата 20.1.2012, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



так, значит условия должны быть следующими

- слово не должно содержать три повторяющиеся буквы
- наверное нет смысла когда 1 или 0 тоже три идут подряд
- разбить телефон на слова, т.е. по 1 или 0
- не начинать слова с Ь,Ъ,Ы

вот простой перебор в который нужно вставить эти условия...

Код

$telephon = '8356746472';
$assn = array();
$assn[0] = array('+');
$assn[1] = array('-');
$assn[2] = array('а', 'б', 'в', 'г');
$assn[3] = array('д', 'е', 'ё', 'ж', 'з');
$assn[4] = array('и', 'й', 'к', 'л');
$assn[5] = array('м', 'н', 'о', 'п');
$assn[6] = array('р', 'с', 'т', 'у');
$assn[7] = array('ф', 'х', 'ц', 'ч');
$assn[8] = array('ш', 'щ', 'ъ', 'ы', 'ь');
$assn[9] = array('э', 'ю', 'я');
foreach ($assn[$telephon[0]] as $letter0) {
    foreach ($assn[$telephon[1]] as $letter1) {
        foreach ($assn[$telephon[2]] as $letter2) {
            foreach ($assn[$telephon[3]] as $letter3) {
                foreach ($assn[$telephon[4]] as $letter4) {
                    foreach ($assn[$telephon[5]] as $letter5) {
                        foreach ($assn[$telephon[6]] as $letter6) {
                            foreach ($assn[$telephon[7]] as $letter7) {
                                foreach ($assn[$telephon[8]] as $letter8) {
                                    foreach ($assn[$telephon[9]] as $letter9) {
                                        //echo $letter0.$letter1.$letter2.$letter3.$letter4.$letter5.$letter6.$letter7.$letter8.$letter9.'<br>';
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

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



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 20.1.2012, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



38попугаев ( [8]385 556 223 )- это хороший номер?

Зачем игнорировать цифры? 
Цитата(Gold Dragon @  20.1.2012,  08:49 Найти цитируемый пост)
сам перебор без вывод при карсимальновозможной комбинации составляет меньше секунды

Осталось вставить туда условие и ужаснуться  smile 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Gold Dragon
Дата 20.1.2012, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(ksnk @  20.1.2012,  10:02 Найти цитируемый пост)
38попугаев ( [8]385 556 223 )- это хороший номер?
а что ты предлагаешь? Как такое обработать?




--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 20.1.2012, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Gold Dragon @  20.1.2012,  09:14 Найти цитируемый пост)
а что ты предлагаешь?

добавить в assn[X] еще и соответствующую цифру. Резать на слова по 0,1 и цифрам




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
krundetz
Дата 20.1.2012, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(Gold Dragon @  19.1.2012,  18:27 Найти цитируемый пост)
а вот теперь сижу ине могу понять как осуществить перебор словаря и выдать все возможные варианты

Я бы поместил словарь в бд, после чего делал бы выборку по таблице, и в PHP скрипте обрабатывал бы только уже ответ БД.

Это сообщение отредактировал(а) krundetz - 20.1.2012, 09:33


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Gold Dragon
Дата 20.1.2012, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(ksnk @  20.1.2012,  10:26 Найти цитируемый пост)
добавить в assn[X] еще и соответствующую цифру
так тогда в словари это нужно занести

Цитата(krundetz @  20.1.2012,  10:32 Найти цитируемый пост)
Я бы поместил словарь в бд, после чего делал бы выборку по таблице, и в PHP скрипте обрабатывал бы только уже ответ БД.
так я так и сделал.. Вопрос в другом, как сделать саму выборку?

если одно слово, т.е. нет ни 1 ни 0 то это самый простой перебор (уже показал код).. Но ведь нужноделить по словам ещё и искать каждое слово.. Вот как тут с этими вложенными циклами быть?



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 20.1.2012, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(Gold Dragon @  20.1.2012,  09:52 Найти цитируемый пост)
так тогда в словари это нужно занести

Зачем? слова в словаре состоят из букв. Просто некоторые слова могут соединяться цифрами


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Gold Dragon
Дата 20.1.2012, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(ksnk @  20.1.2012,  11:10 Найти цитируемый пост)
Просто некоторые слова могут соединяться цифрами 
это не реально автоматом делать..

Добавлено через 4 минуты и 1 секунду
кстати, есть слова с тире.. тогда нужно сначала делить по "0", и если слова не найдуться, то потом ещё и по "1"


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
krundetz
Дата 20.1.2012, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

Репутация: 20
Всего: 69



Цитата(Gold Dragon @  20.1.2012,  09:52 Найти цитируемый пост)
Вопрос в другом, как сделать саму выборку?

ну я предлагаю делать саму выборку единым запросом к таблице, то есть все сведется к составление запроса

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

Это сообщение отредактировал(а) krundetz - 20.1.2012, 11:09


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
Gold Dragon
Дата 20.1.2012, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Цитата(krundetz @  20.1.2012,  12:07 Найти цитируемый пост)
думаю здесь возможно использование побитового сдвига 
пример?



--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
ksnk
Дата 20.1.2012, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Цитата(krundetz @  20.1.2012,  11:07 Найти цитируемый пост)
ну я предлагаю делать саму выборку единым запросом к таблице, то есть все сведется к составление запроса

На генерацию исходных данных для запроса УЖЕ уходит примерно секунда. Сколько будет выполняться сам запрос отдельная и не простая песня.
Вероятно, нужно применять более навороченную математику и, возможно, более быстрый инструмент.
Хотя прикинуть сложность и реализуемость алгоритма можно, наверное, и на php


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0907 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.