LINUX.ORG.RU

python

 


0

1

привет)))))))))))))))))))

хочу написать программу, чтобы она составляла слова заданные мной из всех букв алфавита. ну то есть , перебирает варианты до тех пор , пока не будет составлено слово. что использовать для этого , циклы? я просто еще нуб в этом подскажите


Для этой задачи уже существуют сборники готовых решений. Они называются «словари».

anonymous
()
Ответ на: комментарий от annulen

ну пайтон и линукс это не разделимые вещи))) скажи, вот если бы вам вдруг нужно было такое написать, чтобы вы использовали?

linuxpc
() автор топика
Ответ на: комментарий от Deleted

как говорил товарищ Шарикво: да и так уж читаем и читаем, аж голова кругом))) ну подскажите, так дело быстрее пойдет

linuxpc
() автор топика
Ответ на: комментарий от linuxpc

ну пайтон и линукс это не разделимые вещи)))

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

Deleted
()
Ответ на: комментарий от linuxpc

А что ж так не последовательно? Раз уж сам хочешь написать хеллоу ворлд, то и учись сам.

Deleted
()
Ответ на: комментарий от linuxpc

Ты сначала основы-то закрепи, может тебе и не нужны циклы. Разберись с переменными, операторами, конструкцией кода и там уже начнешь понимать что к чему. Запусти интерпретатор python в консоли и прямо в нем и играйся с примерами из книг.

Deleted
()
Последнее исправление: Deleted (всего исправлений: 1)

Ты сам то понял, что сделать хочешь? Я вот не очень.

Бери листок, бумажку и напиши что у тебя на вход и что на выход ожидается. Потом накидай алгоритм работы внутренностей программы и думай, что тебе нужно для реализации этого алгоритма.

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

Norgat ★★★★★
()
Ответ на: комментарий от Deleted

ок пошел читать)) я просто хотел , чтобы без труда))) да из пруда

linuxpc
() автор топика
Ответ на: комментарий от Norgat

да конечно из всего алфавита, чтобы методом случайного переобора было состалвенно , например слово python и как только оно получилось, перебор бы остановился с числами что-то вроде подобное могла, а вот с слово-нет

linuxpc
() автор топика
Ответ на: комментарий от linuxpc

я хочу написать сам)))
что должно лежать в основе, циклы? while или for?
linuxpc

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

Dron ★★★★★
()
Ответ на: комментарий от annulen

Лисп начинается менее позитивно (((((((((((((

Siado ★★★★★
()
Ответ на: комментарий от linuxpc

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

Подсказать тебе как правильно задавать вопросы? Надо это делать четко, со знаками препинания и чтобы помощь телепатов не требовалась

Siado ★★★★★
()
Ответ на: комментарий от linuxpc

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

Тебя спрашивают не как это сделать, а что это вообще такое ;)

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

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

linuxpc
() автор топика
Ответ на: комментарий от Siado

ну я и так стараюсь пишу вдумчиво, грамотно повозможности

linuxpc
() автор топика

Я что то не понял задачу. Слово, которое должно получиться, уже задано? Тогда печатай это слово на вывод и не еби мозг. Зачем тебе алфавит и циклы?

eternal_sorrow ★★★★★
()
Последнее исправление: eternal_sorrow (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

Да задача у него простая, есть буква 'p' перебирает алфавит пока не будет буква 'p', сохраняет, есть буква 'y', перебирает .... получилось слово «python», выводит его на экран, только вот зачем всё это? Хотя в качестве обучения если он полный NULL задача нормальная.

Dron ★★★★★
()
Последнее исправление: Dron (всего исправлений: 1)

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

Dred ★★★★★
()
Ответ на: комментарий от Dron

Боюсь, у него все совсем плохо. Скорее всего он хочет из кучи букв на входе собирать слова по какому-то словарю. Т.е. есть буквы отк, он получает кот, ток. Но сформулировать такую простую задачку он не в состоянии.

ТС, тебе нужны: словарь, полная перестановка букв на входе (все комбинации), не забудь ограничить количество букв на вводе, т.к. перестановки растут очень быстро. Составляешь комбинацию - ищешь в словаре на совпадение, если такое есть - выводишь и переходишь к составлению следующей. При большом словаре - 50k слов и большом количестве букв (55, вроде столько в самом длинном слове, не являющимся иностранным названием) тормозилова у тебя будет знатная (55! - невероятно большое число и 10^73 степени комбинаций ты будешь перебирать до конца времен, в прямом смысле слова). По этому такой примитивный алгоритм не годится, если нужны настолько длинные слова. Однако, длинных слов мало (да и сам словарь крохотный по сравнению с 55!), так что словарь надо составлять в виде дерева всех возможных слов и из этого происходит другой возможный наивный алгоритм - ты составляешь из своих букв перестановки из скольких-то элементов, например по 3, а дальше смотришь есть ли ветка в дереве, начинающаяся с твоей комбинации и проверяешь буквы по ней. Но тут напрашивается ещё более простая, а возможно и более производительная идея - ты не составляешь никаких комбинаций, а перебирая свои буквы проходишь по всем 33 веткам, соответствующим 33 буквам русского алфавита и оставшимися буквами пытаешься получить слова.

Например:

У тебя в словаре есть дерево

с-л-о-н-/n
 |   \в-о-n/n
 -е-л-о-/n
     \ь-/n
/n - символ конца строки, он тебе очень нужен, т.к. есть слова
т-о-к-/n
     \е-н/n
И набор букв лосово Ты не находишь дерева для л, для о, находишь для с, у тебя остается набор лоово, в дереве есть варианты - л и е, е у тебя нет, переходишь к сл, остается оово, ищешь о в своем наборе, остается ово получается сло, ищешь н - нет, ищешь в, получается слов, остается о, ищешь о, получается слово, видишь символ конца строки, выдаешь слово на печать, букв осталось 0, программа завершена. Осталось рассмотреть другие случаи, когда можно составить несколько слов (там придется ходить не по одной ветке, а по нескольким, соответствующим всем словам, которые можно составить), думаю ты и сам справишься, если немного соображаешь. Если не соображаешь, то бери книжку по комбинаторике и книжку по дискретной математике и ознакомься с ними (деревья, перестановки, сочетания, графы, алгоритм фронта волны и прочие базовые понятия, иначе дойдешь до первого варианта алгоритма, который в худшем случае работает по очень грубым подсчетам 10^54 лет) и будешь бегать по интернету и кричать, почему программа зависла, где я ошибся и т.д., да и то только после того, как на ввод будет подано длинное слово, с короткими то проблем не будет.

peregrine ★★★★★
()
Ответ на: комментарий от linuxpc

я хочу написать сам))) что должно лежать в основе, циклы? while или for?

Однозначно while - до тех пор, пока слово не будет составлено полностью.

Ещё нужен rand для подбора очередной буквы.

Но при таком подборе будут находиться только короткие слова, например, «дом», «сон», «кот» и т.д. До длинных, типа «рефрежиратор» вряд ли дело дойдёт.

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

Novator ★★★★★
()

itertools спасёт отца русской демократии

zolden ★★★★★
()

OCHE TOLSTO BRATAN

Ты хоть книжки по петону читал или так набросил?
hint: while/словари

awesomelackware
()

сделай так:
1) буквы читай из /dev/urandom
2) слова опиши при помощи EBNF
3) для распознавания примени алгоритм CYK
...
рраз, и ты разработчик первого русского опенсорсного компилятора
станешь знаменит

Einstok_Fair ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.