Автор Тема: Сделать из мухи слона  (Прочитано 14828 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн md#

  • Старожил
  • ****
  • Сообщений: 274
  • Карма: 10
  • Пол: Мужской
    • Просмотр профиля
Сделать из мухи слона
« : 10.10.09, 12:03:35 »
Задача

Имеется слово "муха".
Необходимо превратить в слово "слон".
Путем изменения 1 буквы.
Например, муха -> мука -> рука -> ... -> слон
Словарь для подбора слов - http://forum.elsite.ru/Downloads/books/dic.zip

Необходимо написать решение на любом языке программирования, преимущественно C++, C#, Obj-C, Python, Perl, PHP, Java.
Ветка преобразований по данному словарю насчитывает 456 слов.

Первому решившему - ключ для Windows 7 Ultimate из моей MSDN подписки.
Решение должно быть рабочим и оптимальным.
Free software is software that gives the user a lot of problems. Use proprietary software.


Оффлайн LEO

  • Ветеран
  • *****
  • Сообщений: 4417
  • Карма: 310
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #1 : 10.10.09, 21:46:34 »
в словаре не только 4х буквенные слова - добавлять буквы нельзя?
так же там слова с буквами в разных регистрах - А и а - считать одной и той же буквой?
« Последнее редактирование: 10.10.09, 22:11:08 от LEO »
http://is.gd/fpTeSMПродам книжки про Ajax и ASP.NET, http://is.gd/lDL64HПриглашаю в Dropbox

Оффлайн Нервный

  • Ветеран
  • *****
  • Сообщений: 7292
  • Карма: 285
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #2 : 10.10.09, 22:32:49 »
 У меня нет прав на загрузку этого словаря, но задача преобразования из муха->слон является классической и цепочка преобразований не насчитывает более 20 этапов. В зависимости от степени паршивости словаря может быть и меньше. Что за словать такой ?

Оффлайн Нервный

  • Ветеран
  • *****
  • Сообщений: 7292
  • Карма: 285
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #3 : 10.10.09, 22:33:54 »
в словаре не только 4х буквенные слова - добавлять буквы нельзя?
так же там слова с буквами в разных регистрах - А и а - считать одной и той же буквой?

Муха --> Мука --> Сука --> Сук --> Сок --> Сон --> Слон

Оффлайн Snatch

  • Ветеран
  • *****
  • Сообщений: 2722
  • Карма: 433
  • Пол: Мужской
  • Верим в Торпедо!
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #4 : 10.10.09, 22:35:33 »
Муха --> Мука --> Сука --> Сук --> Сок --> Сон --> Слон
Незачет. Букв должно быть всегда четыре.

Оффлайн Нервный

  • Ветеран
  • *****
  • Сообщений: 7292
  • Карма: 285
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #5 : 10.10.09, 22:37:08 »
Незачет. Букв должно быть всегда четыре.

 Ну да.
 А Вы что, не верите, что я знаю решение данной задачи для слов из четырёх букв ?
 Там слова получаются хитрые, не во всяком словаре есть. Поэтому и спрашиваю, что за словарь.
 В любом случае, цепочка из 400 слов - это маразм. 20 - реальная цифра.
« Последнее редактирование: 10.10.09, 22:57:03 от Нервный »

Оффлайн LEO

  • Ветеран
  • *****
  • Сообщений: 4417
  • Карма: 310
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #6 : 10.10.09, 23:02:39 »
Нервный, дайте попробовать тем, кто не очень умеет программировать)

Цитировать
муха -> чуха -> чоха -> доха -> соха -> саха -> саха -> сага -> вага -> гага -> нага -> рага -> чага -> чара -> вара -> жара -> кара -> мара -> пара -> тара -> фара -> хара -> хора -> бора -> гора -> дора -> кора -> мора -> нора -> пора -> тора -> фора -> шора -> шура -> аура -> бура -> дура -> кура -> лура -> мура -> сура -> тура -> фура -> фуга -> дуга -> куга -> нуга -> руга -> шуга -> шуба -> губа -> луба -> туба -> туда -> дуда -> зуда -> иуда -> куда -> луда -> нуда -> руда -> рада -> лада -> лада -> леда -> беда -> деда -> дева -> дева -> дива -> нива -> нива -> шива -> шина -> вина -> дина -> мина -> тина -> хина -> чина -> чинк -> линк -> ринк -> риск -> рыск -> рысь -> высь -> весь -> ведь -> медь -> мель -> бель -> гель -> лель -> сель -> тель -> таль -> даль -> жаль -> паль -> шаль -> шале -> дале -> доле -> поле -> пола -> зола -> кола -> кила -> вила -> жила -> пила -> сила -> фила -> фига -> гига -> жига -> лига -> рига -> риза -> виза -> ваза -> база -> фаза -> фата -> вата -> дата -> ката -> хата -> цата -> цаца -> маца -> мака -> кака -> рака -> река -> дека -> чека -> чека -> щека -> щука -> бука -> лука -> мука -> рука -> сука -> сума -> дума -> дума -> кума -> пума -> чума -> чуфа -> гуфа -> гута -> рута -> тута -> тета -> бета -> кета -> лета -> лета -> мета -> чета -> четь -> деть -> петь -> сеть -> суть -> дуть -> жуть -> муть -> путь -> чуть -> чать -> гать -> дать -> жать -> мать -> рать -> тать -> таты -> гаты -> латы -> лады -> лазы -> тазы -> тази -> гази -> кази -> кави -> кади -> вади -> ради -> рами -> вами -> важи -> вали -> кали -> пали -> поли -> доли -> коли -> кули -> пули -> пуло -> дуло -> дело -> вело -> зело -> село -> тело -> теле -> желе -> реле -> ребе -> бебе -> себе -> тебе -> тебя -> себя -> семя -> темя -> тема -> нема -> рема -> сема -> сима -> сома -> дома -> кома -> лома -> нома -> нога -> гога -> йога -> йота -> нота -> рота -> хота -> хода -> вода -> кода -> мода -> сода -> сова -> сона -> вона -> дона -> зона -> нона -> ноша -> ниша -> миша -> мира -> вира -> лира -> липа -> кипа -> пипа -> папа -> капа -> лапа -> рапа -> сапа -> тапа -> тама -> дама -> лама -> мама -> рама -> рама -> раба -> баба -> даба -> жаба -> жабо -> сабо -> саго -> маго -> мало -> гало -> жало -> зало -> рало -> сало -> соло -> коло -> поло -> подо -> бодо -> водо -> воды -> веды -> кеды -> кеты -> геты -> готы -> боты -> коты -> ноты -> соты -> соры -> боры -> горы -> поры -> хоры -> хары -> дары -> лары -> нары -> нард -> бард -> дард -> дари -> лари -> мари -> пари -> сари -> саки -> баки -> даки -> каки -> лаки -> маки -> паки -> пики -> пити -> сити -> сати -> соти -> сони -> пони -> пани -> рани -> сани -> сени -> пени -> тени -> тент -> мент -> сент -> цент -> цена -> вена -> жена -> иена -> мена -> пена -> пуна -> буна -> куна -> луна -> лана -> кана -> мана -> рана -> хана -> хала -> гала -> зала -> мала -> пала -> пава -> лава -> лажа -> лёжа -> ложа -> кожа -> рожа -> роба -> роза -> доза -> коза -> лоза -> поза -> пока -> дока -> кока -> лока -> локо -> лоно -> моно -> фоно -> форо -> лоро -> моро -> хоро -> хорт -> борт -> корт -> порт -> сорт -> торт -> форт -> фарт -> гарт -> карт -> март -> парт -> пакт -> такт -> факт -> фант -> бант -> кант -> кант -> рант -> раит -> раут -> раус -> ракс -> факс -> фикс -> бикс -> кикс -> кекс -> кокс -> бокс -> фокс -> форс -> ворс -> морс -> торс -> тирс -> тире -> шире -> ширь -> шить -> бить -> вить -> жить -> лить -> нить -> пить -> пять -> зять -> мять -> мыть -> быть -> выть -> ныть -> рыть -> сыть -> сыпь -> сырь -> пырь -> пыль -> быль -> боль -> голь -> золь -> коль -> моль -> ноль -> поль -> роль -> соль -> толь -> топь -> лопь -> ложь -> ломь -> лось -> лоск -> воск -> волк -> полк -> полу -> долу -> долг -> донг -> гонг -> зонг -> сонг -> сонм -> сонь -> вонь -> конь -> корь -> хорь -> хоть -> хошь -> вошь -> вишь -> бишь -> лишь -> тишь -> тушь -> сушь -> чушь -> чудь -> нудь -> нуль -> буль -> куль -> киль -> кило -> било -> жило -> шило -> шизо -> сизо -> сито -> жито -> фито -> фото -> лото -> лето -> вето -> вено -> рено -> сено -> сен- -> сень -> день -> лень -> пень -> тень -> темь -> земь -> семь -> сечь -> жечь -> лечь -> печь -> речь -> сечь -> сеча -> неча -> нега -> бега -> вега -> мега -> межа -> вежа -> вера -> гера -> мера -> сера -> серп -> верп -> шерп -> шерл -> перл -> пери -> перо -> пежо -> пезо -> безо -> безе -> бозе -> боже -> ложе -> тоже -> туже -> туше -> суше -> суша -> душа -> туша -> туча -> буча -> куча -> муча -> муза -> буза -> луза -> лужа -> лупа -> жупа -> жопа -> копа -> коса -> роса -> раса -> ласа -> леса -> лиса -> киса -> кика -> вика -> ника -> пика -> пита -> бита -> кита -> фита -> фифа -> фифи -> фифо -> лифо -> либо -> любо -> люба -> люфа -> люфт -> лифт -> лист -> аист -> вист -> вест -> бест -> гест -> жест -> пест -> тест -> шест -> шуст -> дуст -> куст -> руст -> фуст -> фунт -> бунт -> бинт -> винт -> финт -> фиат -> флат -> блат -> плат -> плот -> глот -> слот -> слон
http://is.gd/fpTeSMПродам книжки про Ajax и ASP.NET, http://is.gd/lDL64HПриглашаю в Dropbox

Оффлайн LEO

  • Ветеран
  • *****
  • Сообщений: 4417
  • Карма: 310
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #7 : 10.10.09, 23:04:44 »
в словаре 2360 слов из 4х букв, включая слона и муху

длина цепочки = муха + 624 слова + слон = 626 слов
http://is.gd/fpTeSMПродам книжки про Ajax и ASP.NET, http://is.gd/lDL64HПриглашаю в Dropbox

Оффлайн Нервный

  • Ветеран
  • *****
  • Сообщений: 7292
  • Карма: 285
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #8 : 10.10.09, 23:13:13 »
в словаре 2360 слов из 4х букв, включая слона и муху

длина цепочки = муха + 624 слова + слон = 626 слов

 Херня. Словарь в студию.
 Единственное сомнение у меня было в слове "мура". 15 слов в цепочке.

Оффлайн LEO

  • Ветеран
  • *****
  • Сообщений: 4417
  • Карма: 310
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #9 : 10.10.09, 23:15:12 »
длина цепочки с условием не сошлась...

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

vb.net 2008

в папке debug скомпиленная прога и словарь, выложенный автором.
http://is.gd/fpTeSMПродам книжки про Ajax и ASP.NET, http://is.gd/lDL64HПриглашаю в Dropbox

Оффлайн md#

  • Старожил
  • ****
  • Сообщений: 274
  • Карма: 10
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #10 : 11.10.09, 07:49:54 »
На самом деле 626 слов это наверно даже лучше=)

Я решал эту задачу на PHP на собеседовании, с использованием этого же словаря.
Моя цепочка была муха + 455 слов + слон. Ну или 456 не считая мухи.
Решение назвали единственно верным, после чего я решил, что больше 456 быть не может.
Free software is software that gives the user a lot of problems. Use proprietary software.

bear

  • Гость
Re: Сделать из мухи слона
« Ответ #11 : 11.10.09, 08:06:26 »
усложним, из слова ЖОПА нада сделать слово СЧАСТЬЕ  :ag:

Оффлайн md#

  • Старожил
  • ****
  • Сообщений: 274
  • Карма: 10
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #12 : 11.10.09, 08:11:12 »
Орфографический словарь п/р проф. Лопатина (2000 год)
Последняя редакция (163294 статьи) 31.01.03

http://dict.buktopuha.net/lop2v2.zip
Free software is software that gives the user a lot of problems. Use proprietary software.

Оффлайн LEO

  • Ветеран
  • *****
  • Сообщений: 4417
  • Карма: 310
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #13 : 11.10.09, 08:35:50 »
На самом деле 626 слов это наверно даже лучше=)

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

а у меня не ищется самая короткая цепочка... вот, например, франгмент:
"река -> дека -> чека -> чека -> щека"

почему-то чека два раза, да и вообще всю цепочку можно заменить на "река -> щека"
Update: проверил исходный словарь. 2360 4х-буквенных слов, из которых только 2332 неповторяющихся :)

у меня алгоритм перебирает все варианты по порядку, и останавливается на первом подходящем...

можно попробовать удалить из результата такие вот лишние преобразования, есть вероятность, что тогда результаты сойдутся. Надо?
« Последнее редактирование: 11.10.09, 09:06:14 от LEO »
http://is.gd/fpTeSMПродам книжки про Ajax и ASP.NET, http://is.gd/lDL64HПриглашаю в Dropbox

Оффлайн Tonechka

  • Постоялец
  • ***
  • Сообщений: 169
  • Карма: 95
  • Пол: Женский
  • Нас мало... Но мы есть...
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #14 : 11.10.09, 09:10:47 »
усложним, из слова ЖОПА нада сделать слово СЧАСТЬЕ  :ag:
:ap: :ag:
Чем только люди не заморачиваются... :ag:

Оффлайн Нервный

  • Ветеран
  • *****
  • Сообщений: 7292
  • Карма: 285
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #15 : 11.10.09, 10:10:02 »
 Я не знаю, как у вас получаются такие цифры.
 Мой алгоритм уже нашёл цепочку из 52 слов. Надо ещё подождать, найдет короче. Вообще, правильный ответ, как я уже говорил, лежит в районе 15 слов.

Оффлайн Нервный

  • Ветеран
  • *****
  • Сообщений: 7292
  • Карма: 285
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #16 : 11.10.09, 10:33:03 »
 Вот, цепочку из 22 слов нашёл.

муза
мука
муки
маки
саки
каки
хаки
таки
маки
баки
каки
кади
кадр
каюр
каюк
каик
клик
клык
клок
клон
слон

 как-то так. Core i7 считает медленно.
« Последнее редактирование: 11.10.09, 10:47:42 от Нервный »

Оффлайн md#

  • Старожил
  • ****
  • Сообщений: 274
  • Карма: 10
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #17 : 11.10.09, 10:44:00 »
ну я не искал самую короткую цепочку.
мой алгоритм прекращал работу когда находил первую ветку, которая кончается слоном.

Цитировать
муза => буза => база => баба => даба => дабы => дыбы => дыба => дыра => дора => бора => борт => болт => боль => бель => бели => беби => бебе => безе => безо => мезо => пезо => пежо => перо => зеро => зело => вело => вено => вена => вежа => вера => вара => вага => ваза => вата => дата => дама => дача => чача => чага => гага => гала => гало => газо => гази => кази => кави => кади => вади => важи => вали => вами => нами => рами => ради => рада => лада => лава => лавр => ливр => литр => лить => бить => бит- => бита => бета => бега => беда => деда => дева => дежа => деза => дека => дока => доза => дома => дона => вона => вина => виза => вика => вила => вилт => винт => бинт => бант => байт => бейт => бест => вест => весы => весь => ведь => веди => леди => педи => пени => пани => паки => баки => буки => бука => букс => бикс => бокс => босс => косс => кокс => кекс => кейс => кейф => сейф => сейв => рейв => рейд => рейс => пейс => пенс => пена => жена => иена => мена => мана => кана => кака => каки => даки => дари => дард => бард => барк => банк => панк => паёк => парк => пара => жара => жаба => жабо => жако => жало => жаль => даль => дале => доле => долг => доли => долу => доля => воля => волк => воск => лоск => лось => ложь => ложа => кожа => кода => вода => водо => Бодо => додо => подо => поди => поли => коли => кали => кули => куль => буль => буле => фуле => филе => фила => жила => жига => гига => гога => гора => горб => герб => герр => герц => Герц => Гера => мера => мара => кара => капа => ката => кафа => кафе => каре => карп => карт => гарт => гарь => гать => дать => дань => день => деть => дуть => дурь => дура => аура => бура => буна => бунт => бурт => бург => бурш => буры => боры => боны => бонд => зонд => зона => зола => зала => зало => мало => маго => мано => манс => маис => марс => барс => барн => баро => таро => тара => тама => лама => лажа => лана => ланч => лань => ларь => лари => лаки => маки => мака => мала => мама => маца => цаца => цата => фата => фаза => фара => фарм => фарс => факс => ракс => рака => раба => рага => нага => нега => Вега => мега => межа => меса => леса => ласа => лапа => лафа => люфа => люба => луба => губа => гута => гуфа => гуща => гуще => пуще => пуща => куща => куга => дуга => дуда => дума => Дума => кума => кома => коза => кока => кика => кикс => фикс => фокс => форс => ворс => морс => мора => кора => кола => кила => кило => било => жило => живо => диво => дива => дина => мина => мини => вини => виги => виши => вишь => бишь => лишь => линь => лень => лечь => жечь => печь => пень => пеня => меня => мент => Сент => тент => тени => сени => сани => рани => рана => рама => рамс => рапс => рапа => папа => пава => пала => пали => палм => паль => падь => кадь => кадр => каюр => каюк => каик => каяк => кряк => бряк => брак => арак => арап => арат => агат => агар => авар => увар => увал => овал => опал => опад => опак => шпак => шлак => злак => знак => зрак => мрак => трак => трал => трап => драп => драм => драч => врач => грач => граб => град => глад => глаз => плаз => план => клан => клав => клад => слад => слаг => слог => глог => глот => глёт => влёт => слёт => слот => плот => плат => блат => брат => брас => брус => прус => пруд => пред => бред => брег => брек => дрек => дрок => дром => бром => брод => Ирод => урод => увод => ввод => ввоз => своз => свод => овод => обод => обед => обер => опер => опор => спор => сбор => сбой => свой => своп => скоп => окоп => окот => скот => скат => сват => свал => свая => стая => став => стаж => стаз => сказ => скак => скок => сков => скол => скос => икос => укос => укол => угол => угон => огон => сгон => сион => слон

Free software is software that gives the user a lot of problems. Use proprietary software.

Оффлайн Snatch

  • Ветеран
  • *****
  • Сообщений: 2722
  • Карма: 433
  • Пол: Мужской
  • Верим в Торпедо!
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #18 : 11.10.09, 10:54:39 »
Вот, цепочку из 22 слов нашёл.

муза
мука
муки
маки
саки
каки
хаки
таки
маки
баки
каки
кади
кадр
каюр
каюк
каик
клик
клык
клок
клон
слон

 как-то так. Core i7 считает медленно.
Используя НЕСУЩЕСТВУЮЩИЕ слова можно что хочешь насочинять.
каки, таки, хаки, саки - это чего такое есть на самом деле?
и слово маки два раза...

Оффлайн Нервный

  • Ветеран
  • *****
  • Сообщений: 7292
  • Карма: 285
  • Пол: Мужской
    • Просмотр профиля
Re: Сделать из мухи слона
« Ответ #19 : 11.10.09, 11:02:57 »
Используя НЕСУЩЕСТВУЮЩИЕ слова можно что хочешь насочинять.
каки, таки, хаки, саки - это чего такое есть на самом деле?
и слово маки два раза...

 Эти слова из данного словаря.
 Они там есть, проверьте сами.
 Вот ещё короче и без этих слов.

муча
буча
бура
бурт
бунт
фунт
финт
фиат
флат
флот
глот
слот
слон
« Последнее редактирование: 11.10.09, 11:48:52 от Нервный »