[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Составление слов из букв
Страницы: 1, 2
razoramus
Всем привет! smile.gif

Созрела необходимость составить всевозможные варианты слов из предложенных букв.

Задача: Есть несколько букв английской раскладки (К примеру "a,f,t,d,e.s.o"), из них нужно составить все возможные комбинации слов, состоящих из 3х букв (к примеру "aso", "fta" и т.д.).

Как это можно организовать?
waldicom
Существущих слов или просто все возможные комбинации трех букв?

_____________
Свои мозги еще никто не отменял.
Телепатов нету.
Игорь_Vasinsky
рандомо хватать буквы и склеивать пока длина слова не будет равна 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
Цитата (waldicom @ 18.11.2013 - 13:22)
Существущих слов или просто все возможные комбинации трех букв?

Всевозможных комбинаций 3х букв из предложенных букв. Масло масленное получается. laugh.gif
razoramus
Игорь, можешь пример набросать? Давно в коде не копался, щас буду мануал читать.

rand(); вроде как с числами работает.
razoramus
А вот тут какой-то сервис отрыл. Как раз подошёл. Клик
Invis1ble
3 цикла вложенных друг в друга с перебором допустимых символов и занесением в результирующий массив полученных комбинаций.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Игорь_Vasinsky
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
Цитата (Игорь_Vasinsky @ 18.11.2013 - 16:57)
rund()

все буквы в массив

такой функции нет в ядре
а если имелась в виду rand(), то предлагаю подумать над оптимальностью такого подхода. Есть мнение, что с помощью нее ты будешь генерировать все возможные комбинации over 9000 часов, а потом еще и удалять дубли/либо сразу прийдется проверку делать на каждой итерации.

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Игорь_Vasinsky
да, опичатался с разбегу.

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
Цитата (Игорь_Vasinsky @ 18.11.2013 - 17:06)
да, опичатался с разбегу.

28 букв в латинском алфавите

все возожные комбинации в длину 3 буквы - это как бэ много вариантов - так что стоит задуматься над ограничением кол-ва

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

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

Игорь_Vasinsky
я ваще сам по себе оригинальный.

_____________
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
курите перестановки и сочетания. теме 100 лет в обед.
dr.nomore
В арифметике я полный нуль. Но есть, кажется, такое решение


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
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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.