razoramus
18.11.2013 - 17:16
Всем привет!
Созрела необходимость составить всевозможные варианты слов из предложенных букв.
Задача: Есть несколько букв английской раскладки (К примеру "a,f,t,d,e.s.o"), из них нужно составить все возможные комбинации слов, состоящих из 3х букв (к примеру "aso", "fta" и т.д.).
Как это можно организовать?
waldicom
18.11.2013 - 17:22
Существущих слов или просто все возможные комбинации трех букв?
_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Игорь_Vasinsky
18.11.2013 - 17:23
рандомо хватать буквы и склеивать пока длина слова не будет равна 3
при каждой склейки складывать в массив, предварительно проверяя - нет ли такого элемента уже
ну соответственно по ходу проверять кол-во эл-ов в массиве, например при 2 буквах и длине 2 буквы - варианта только 2 (если с повторами - 4)
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
razoramus
18.11.2013 - 17:33
Цитата (waldicom @ 18.11.2013 - 13:22) |
Существущих слов или просто все возможные комбинации трех букв? |
Всевозможных комбинаций 3х букв из предложенных букв. Масло масленное получается.
razoramus
18.11.2013 - 17:39
Игорь, можешь пример набросать? Давно в коде не копался, щас буду мануал читать.
rand(); вроде как с числами работает.
razoramus
18.11.2013 - 17:45
А вот тут какой-то сервис отрыл. Как раз подошёл.
Клик
Invis1ble
18.11.2013 - 18:05
3 цикла вложенных друг в друга с перебором допустимых символов и занесением в результирующий массив полученных комбинаций.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Игорь_Vasinsky
18.11.2013 - 18:57
rund()
все буквы в массив
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Invis1ble
18.11.2013 - 19:03
Цитата (Игорь_Vasinsky @ 18.11.2013 - 16:57) |
rund()
все буквы в массив |
такой функции нет в ядре
а если имелась в виду rand(), то предлагаю подумать над оптимальностью такого подхода. Есть мнение, что с помощью нее ты будешь генерировать все возможные комбинации over 9000 часов, а потом еще и удалять дубли/либо сразу прийдется проверку делать на каждой итерации.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Игорь_Vasinsky
18.11.2013 - 19:06
да, опичатался с разбегу.
28 букв в латинском алфавите
все возожные комбинации в длину 3 буквы - это как бэ много вариантов - так что стоит задуматься над ограничением кол-ва
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Invis1ble
18.11.2013 - 19:08
Цитата (Игорь_Vasinsky @ 18.11.2013 - 17:06) |
да, опичатался с разбегу.
28 букв в латинском алфавите
все возожные комбинации в длину 3 буквы - это как бэ много вариантов - так что стоит задуматься над ограничением кол-ва |
вместо того, чтобы задуматься над алгоритмом ты предлагаешь задуматься над изменением задачи. Оригинально. Особенно, учитывая то, что сам алгоритм простой и словами я уже его описал в первом комменте.
_____________
Профессиональная разработка на заказЯ на GitHub |
второй профиль
Игорь_Vasinsky
18.11.2013 - 19:09
я ваще сам по себе оригинальный.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
redreem
18.11.2013 - 19:50
курите перестановки и сочетания. теме 100 лет в обед.
dr.nomore
19.11.2013 - 15:54
В арифметике я полный нуль. Но есть, кажется, такое решение
create table test (
letter varchar(1) not null
);
insert into test (letter) values ('a'),('f'),('t'),('d'),('e'),('s'),('o');
SELECT *
FROM `test` t1
STRAIGHT_JOIN test t2
STRAIGHT_JOIN test t3
Showing rows 0 - 29 ( 343 total, Query took 0.0017 sec)
STRAIGHT_JOIN соединяет всех со всеми. Если всего 2 буквы, скажем а и б, то соединение через алиас даст
а а
а б
б а
б б
Идея понятна?
Короче, проверяйте, вроде работает. Длину последовательности регулируйте количеством джойнов. Используйте возможности SQL.
dr.nomore
19.11.2013 - 15:56
3 джойна на 2 буквы. Удалил все кроме a, d
+ Options
letter letter letter
a a a
d a a
a d a
d d a
a a d
d a d
a d d
d d d
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.