Слова от слова вывих балда
- 3 Сентября, 2018
- Происхождение
- Ксения Дудка
Этимология слова "балда"
Чтобы разобраться, что означает слово "балда", необходимо сначала проследить историю его появления.
Значение слова "балда"
В русских словарях можно найти однородные толкования слова "балда". В. Даль так определяет данное слово:
- большой, тяжелый набалдашник (утолщение на ручке трости);
- болезненная шишка, нарост;
- ударное оружие: то же, что и дубинка;
- большой молот, кувалда;
- трамбовка;
- бран.: болван, балбес, неуклюжий дурень, сплетник, баламут, дурак, тупица, малоумный;
- балдашка - деревянная чашка, которой черпают и пьют;
- балды́кать, то же что и болтать, калякать.
По мнению Д. Н. Ушакова, балда - это:
- тех. термин: тяжелый молот для раздробления камней и горных пород;
- утолщение в верхней части тросточки;
- бранит.: дурак, болван.
Т. Ф. Ефремова приводит следующие дефиниции слова балда:
- ж. р., устар.: тяжелый молот, применявшийся при горных работах и в кузницах;
- м. р., ж. р., разг.- сниж.: тот, кто бестолков и глуп.
Еще больше значений
Какие же дополнительные значения скрывает в себе "балда"? Ответ на вопрос, что такое балда может оказаться довольно разносортным.
1) Балда или Болда — русское мужское прозвище. 2) Балда — распространенная настольная игра, суть которой состоит в составлении слов с помощью букв, расположенных на игровом поле. Количество игроков должно быть не меньше двух. Существует также компьютерный вариант данной игры. 3) Балды (Бальды, Банды и Боуды) — голые гипсовые скалы, подымающиеся отвесной крутой стеной над долиной в северо-восточной части Украины. 4) Балда - это прост.: башка. 5) Балда — река в Западной Сибири. 6) Балда — название леса в селе Кремницким Нижегородской области. 7) Балда — тип рыболовной снасти. 8) Балда – наркотик из высушенных листьев определенных сортов конопли (воровской жаргон).
Балда в литературе
Такое неоднородное слово как "балда" привлекало и до сих пор привлекает внимание многих писателей.
Как ни странно, джина удовлетворил такой ответ, он даже решил запомнить его, чтобы при случае похвастаться богатым лексиконом. Все читатели, наверно, задавались вопросом, неужели старик не знал значение этого слова.
Правда в том, в его родном языке, иврите, к его же несчастью, балдой называют мудреца, человека с глубокими познаниями. Потому Хоттабыч и не стал спорить с Волькой.
Примеры со словом Балда
Полисемантическое слово балда встречается в различных контекстах.
"Вот балда - это тебе не с молоточком работать. От одного удара камни надвое колет". (Здесь, в значении молот.)
"Украинские Балды состоят из огромных 3-метровых глыб, гипсового камня с гладкими стенками". (Здесь, скалы.)
"Секрет успешной рыбалки заключается в …… балде." (В значении снасть.)
Многие люди вместо ответа на вопрос: "Ты когда-нибудь купался в Балде?", могут задать встречный вопрос:"Что такое балда?". (Здесь, в значении сибирская река.)
"Как же прекрасно осенью побродить по Балде, подышать осенним воздухом, полюбоваться разноцветным листопадом". (Название леса.)
"Балда у тебя лысая!" (Голова.)
"Вошел старичок, держа в одной руке большую трость с золотой балдой." (Утолщение на трости.)
"Постучать бы тебе да по твоей балде."
"Ах ты балда! Забыл, что ли балду с собой взять. Камни сами собой ведь не расколются."
Фразеологизмы со словом Балда
В русских фразеологизмах часто мелькает слово балда. Но какой смысл будет нести данное слово в подобных выражениях?
Всем известен фразеологизм "пинать балду" и его варианты "гонять балду", "валять балду", "бить балду". Значение такого фразеологизм – бездельничать.
Интересно, что данный фразеологизм появился еще в древней Руси, но имел совершенно другой смысл. "Он гоняет балду" – так говорили про человека, раскачивающего молот (балду). Для веревок монтировались кольцевые направляющие, подсказывающие подмастерье траекторию раскачивания молота. Со временем так же стали говорить и про бестолкового несамостоятельного человека.
Распространены и другие фразеологизмы: "до балды" (безразлично), (взять) "от балды" (необдуманно, наобум), "без балды" (без обмана, всерьез), "бить (дать) по балде" (избить).
Что означает балда в выражениях типа "балда Ивановна", "балда осиновая", "балда стоеросовая"? Смысл первой фразы – несообразительная рассеянная женщина, смысл второй и третьей фраз – бестолковый человек.
Правила
Балда — популярная лингвистическая игра, в которой необходимо составлять слова с помощью букв, добавляемых на игровое поле.
В ИГРЕ МОЖНО ИСПОЛЬЗОВАТЬ:
- Нарицательные имена существительные в единственном числе в именительном падеже (БАЛДА, ИГРА);
- Сущестительные, образованные от глаголов (ЛЁЖКА от гл. лежать, ОБЖИГАНИЕ от гл. обжигать);
- Cуществительные, образованные от прилагательных (БАСТУЮЩИЙ, ДЕТСКАЯ);
- Слова, имеющие только множественную форму (ДРОЖЖИ, БУДНИ).
- Слова с уменьшительно-ласкательными и оценочными суффиксами (ДОМИК, ДОМИЩЕ);
- Имена собственные: имена, географические названия, компании и другие (ФЁДОР, ВОЛГА, ТОМСК);
- Редко употребляемые сокращения и составленные с использованием только первых букв слов (ГЛАВСНАБСБЫТ, КГБ);
- Диалектные, просторечные и жаргонные слова, сниженную лексику (БАЛАРУЖИНА, ВЫДА);
- Другие части речи, кроме существительных: глаголы, наречия, прилагательные, числительные и другие (ВАРИТЬ, ЛЕГКО, СИНИЙ, ДЕСЯТЬ, БАСТА).
Игра ведется на поле 3х3, 5х5 или 7х7 клеток, в зависимости от режима. В начале игры в центре поля появляется выбранное случайным образом слово. Каждый из соперников за ход может добавить одну букву так, чтобы получилось новое слово. Последовательность букв в слове может быть в любом направлении, кроме диагоналей.
За составленное слово даётся количество очков равное его длине.
Если составленного вами или соперником слова нет в словаре, об этом будет написано, и слово засчитано не будет. Однако, если вы уверены в том, что такое слово существует и удовлетворяет правилам игры, вы можете запросить подтверждение у соперника (в случае его согласия, слово будет засчитано).
Показать полное описание Скрыть полное описание
Как установить букву:
- перетащить букву с панели на нужную клетку;
- выделить клетку на поле, затем нажать кнопку на клавиатуре или на букву панели;
- нажать на букву, а затем на клетку поля.
Как выделить и добавить составленное слово:
- нажимая на клетки поля, последовательно выделить слово от первой до последней буквы, затем нажать на кнопку под полем. Если дальнейшее выделение невозможно, слово будет принято автоматически;
- нажать на первую букву слова, а затем, удерживая кнопку мыши, выделить слово до последней буквы.
Справа от игрового поля располагается панель истории игры, в которой отображаются имена игроков, общий счет по серии игр и список набранных слов для каждой из игр серии.
После завершения игры, при продолжении серии, она будет свернута и примет вид стартового слова, отмеченного цветом, обозначающим победу (желтый), ничью (синий) или поражение (красный).
При нажатии на слово и удержании кнопки мыши отображается его определение.
В нижней части панели расположено поле "Запомнить слово", предназначенное для заметок, и поле "Проверить слово", с помощью которого вы можете проверить наличие слова в словаре. Если слово присутствует в словаре, Вы также можете посмотреть его определение.
3х3, 5х5, 7х7 — переключает текущий размер игрового поля.
5х5 Блиц — включает режим Блиц, в котором при игре с человеком каждому игроку на всю игру отводится 2 минуты. По истечении времени игроку присуждается поражение.
Другие игры — перейти к другим нашим играм.
Ход назад, Ход вперед — позволяет отменить или повторить свой ход в игре с компьютером. Вы можете повторить отменненый ход, нажав на часть кнопки, обозначенную символом >
Пропустить ход — позволяет передать право хода сопернику.
Начать сначала — начинает текущую игру с компьютером заново.
Новая игра — начинает новую игру с компьютером.
Предложить ничью — предложить сопернику ничью.
Сдаться — сдаться (засчитывается поражение).
Покинуть игру — позволяет немедленно завершить текущую игру (засчитывается поражение).
Параметры — открывает меню настроек игры, в котором вы можете:
- Изменить вид панели алфавита;
- Выбрать режим сложности игры компьютера;
- Включить или отключить подсветку допустимых для установки новой буквы клеток;
- Включить или отключить звук;
- Запретить приглашать вас в совместную игру;
- Открыть черный список игроков.
Описание — открывает описание игры.
Вопросы и отзывы — открывает гостевую книгу, в которой вы можете оставить отзыв или пожелание к игре.
История – история всех ваших игр с указанием даты игры, противника и его места в рейтинге.
Жёлтым цветом отмечены выигранные вами партии, красным – проигранные, синим – завершенные ничьей.
Звёздочкой отмечены игры, занесённые вами в избранное.
Рейтинг игроков - результаты зарегистрированных игроков, упорядоченных по количеству набранных очков.
Очки начисляются только за победы над противниками (за ничьи и победы над компьютером очки не начисляются).
Начисление очков идет по системе Эло.
Система рейтингов Эло, коэффициент Эло — метод расчёта относительной силы игроков в играх, в которых участвуют двое игроков. Эту систему рейтингов разработал американский профессор физики венгерского происхождения Арпад Эло.
Авторизация / Личный кабинет — возможность войти в личный кабинет (ЛК), произвести авторизацию или зарегистрироваться.
В личном кабинете вы можете указать дополнительную информацию о себе, загрузить фото, изменить пароль, а также хранить и осуществлять личную переписку с другими зарегистрированными игроками.
Вы можете играть без регистрации в качестве гостя. После регистрации и/или авторизации вы получите доступ в личный кабинет и сможете отправлять другим игрокам личные сообщения.
Чтобы зарегистрироваться надо просто ввести имя (от 3 символов) и пароль (не менее 5 символов). Если такое имя уже зарегистрировано в игре, вам придется выбрать другое.
Братия! не будьте дети (ЙЛД) умом:
на злое будьте младенцами, а по уму
будьте совершенолетни
1 Кор. 14:20 (на ивр.)
1) Библейский психологический отбор
Тексты Библии определяют разную ответственность перед обществом в связи с достижением человека человеком определенного возраста; например, к военной службе призывались юноши, достигшие 20 лет (Чис. 1:3), с 20 лет взимался налог в 1/2 шекеля в пользу Храма. До 20 лет человек считался МАЛОЛЕТНИМ, к его проступкам относились снисходительно, согласно общим представлениям господствующими в еврейском обществе - он действовал БЕЗ РАЗУМА. Эта идея заложена в стихе Числа 14:29, где сказано, что израильтяне от 20 лет и выше роптавшие на Господа падут в пустыне, лиц МОЛОЖЕ указанного возраста Господь, очевидно, щадил в связи с их неразумием.
Со временем в талмудических произведениях был выработан другой подход к ВОЗРАСТУ, Талмуд отказывается от ТОТАЛЬНОГО определения совершеннолетия по достижению определенного года жизни и делает упор на ИНДИВИДУАЛЬНОЕ РАЗВИТИЕ ЛИЧНОСТИ. Законодатели считали, что физическая и умственная полноценность личности наступает одновременно с половой зрелостью, при нормальных условиях для юношей в возрасте 13 лет, а для девушек в возрасте 12 лет; если совершеннолетие не будет достигнуто в указанном возрасте, то человек остаётся на положение МАЛОЛЕТНЕГО до 35 лет. Полноценность личности определялась не исчислением лет, а наличием видимых признаков взрослости, т.е. способностью лица совершать правильные ЮРИДИЧЕСКИЕ и ОБЩЕСТВЕННЫЕ поступки, соответствующие религиозной доктрине иудаизма.
2) Существующая этимология
а) Словарь Академии Российской 1789 г.
БАЛДА. Татар. Шишка у дубины.
Набалдашник. Оправа трости, на верхней конце оной…
БОЛДА. Тяжелый молот. 1666 г.
БОЛЪДИНА. Больной. XIII в.
б) Словарь Академии Российской 1847 г.
БАЛДА. 1) Шишка у дубины. 2) Большой молот, употребляемый в горных работах и в кузницах.
г) Этимологический словарь Макса Фасмера
Слово: Балдаґ Ближайшая этимология: 1. "шишка; дубина; кувалда; болван, дурак"; 2. "большой топор", чистопольск. (Даль). По моему мнению, заимств. из диал. формы тюрк. balta, тур. balta "топор"; см. Фасмер, RS 4, 166. Другие производят от тур. baldak "кольцо, эфес сабли" (Корш, AfslPh 9, 487). Но, возм., первое знач. вызвано влиянием следующего слова.
г) Веселовский С. Б. Ономастикон. Древнерусские имена, прозвища и фамилии. М., 1974
Балда Кондрат, крестьянин 1564, Олонец. Балда – 1) дубина с комлевым набалдашником, 2) дурак, тупица.
д) В других толковых и этимологических словарях – аналогично.
Вывод
Так как в фундаменте европейской цивилизации заложены программные документы иудаизма (Библия), то целесообразно попытаться установить связи термина БАЛДА с языком (терминологией) еврейской религиозной доктрины; на пространстве Хазарского каганата, которое позже заняла Киевская Русь, иврит был первым письменным и религиозно-торговым языком. Предположительно БАЛДА (молот) и БАЛДА (глупый) - два различных слова, которые образованы из разных корней иврита.
3) Этимология иврита
а) БОЛДА (дубина, шишка, утолщение; кувалда, молот) очевидно, ближе к понятию БУЛАВА (см. ст.).
БОЛ+ДА
Ивр. БУЛ ГЛЫБА, чурбан, колода, плод (нарост на дереве) + ДА это; т.е. это глыба - массивный предмет.
Скорее всего – транслитерация двух еврейских понятий (перевод понятия с одной алфавитной системы в другую, при этом не все знаки передаются точно).
БОЛ+ДА = БУЛ глыба + ЙАД рука, ручка (прочитано наоборот – ДАЙ).
б) БАЛДА - глупый человек, дурак
Этим понятием обозначают человека с неразвитыми умственными способностями или необразованного, не приспособленного к жизни, с умом ребенка; обычное шутливо-ироническое прозвище, применяемое старшим к младшему по возрасту или МАСТЕРА к УЧЕНИКУ (молодой ещё) в качестве назидания, когда младший допускает какие-либо промахи в работе и в поведении.
Б+АЛДА = ивр. Б как, в виде + ЙЭЛЭД, ЙАЛИД ребенок, детеныш, малыш, отрок, дитя (наивность, ребячество); т.е. ты (ведешь себя) как ребёнок.
Таким образом, очевидно, что БАЛДА (молот) и БАЛДА (глупый) - омонимы (одинаковые по написанию, но разные по значению), составлены из различных корней иврита, имеют прочную связь с библейским ОБРАЗНЫМ миром и фонетически совпадают с терминологией Библии – одни согласные (корневые) буквы.
Энциклопедия Брокгауза и Ефрона
Балда
— большой молот, см. Ковка.
Словарь Ефремовой
Балда
- ж. устар. Тяжелый молот, применявшийся при горных работах и в кузницах.
- м. и ж. разг.-сниж. Тот, кто бестолков и глуп.
Словарь Ожегова
БАЛДА, ы, м. и ж. (прост. бран.). Бестолковый человек, дурак.
Словарь Ушакова
Балда
балд а , балды, жен. (тюрк., ср. чагат. baldak - костыль, сабельная рукоять).
1. Тяжелый молот для раздробления камней и горных пород (тех.).
2. Шишка, утолщение на конце палки, дубинки (обл.).
3. Глупый человек, болван (разг. бран.).
Словарь золотого промысла Российской Империи
Балда
ж., горн. Массивный молот весом до 16 кг. для раздробления твердой породы, забивания клиньев, стоек и т. д. — Хороший кузнец и 2 молотобойца в денную смену делают из старых разбитых балд 2 балды весом каждая в один пуд. Ф. 475, о. 1, д. 7, л. 44 об. (1856 г.); Большие валуны разбиваются балдами или порохом. ГЖ, 1885, № 1: 59; Добыча руды производится посредством ручной работы, т. е. кайлой, ломом, клином с балдой, так и динамитом, что зависит от твердости породы. ГЖ, 1888, № 11: 172.
Словарь языческих понятий и богов
Балда
мифологизированный персонаж русских волшебных сказок о батраке и черте. При развитии основной мысли таких сказок, фантазия допускает два главных видоизменения: в одном разряде вариантов герой сказки не отличается особенною крепостью мышц, и если берет верх над чертом, то единственно хитростью; в других же вариантах он наделен сверхъестественной силой. Русское предание дает этому герою имя Балда, что прямо свидельствует за его близкое родство с Перуном и Тором. Слово балда - разить, ударять, рубить; от того же корня происходят болт и булава. Понятна поэтому та великая богатырская мощь, какою наделен Балда в сказках: он может давать такие щелчки, что от них падают мертвыми бык и медведь.
Тюркизмы в русском языке
Балда
1) ж обл. (казан., вят.) большой топор с обухом такой же длины, как и лезвие (СРНГ, 2, 79) || техн. тяжелый молот для раздробления камней и горных пород (Ушаков, 1, 81; СРНГ, 2, 79). ср.-рус. (17 в.) болда; Даль балда, болда большой молот, кувалда (1, 43); Фасмер, 1, 114. Дмитриев причисляет слово балда к тюркизмам в порядке гипотезы, предполагая метафорическое употребление тюрк. балта топор. "У Махмуда Кашгарского baldu и baltu Axt, венг. ba'lta 'ВеП'" (Дмитриев, 1958, 43). Шанский предполагает, что "слово балда является исконно русским" (1, 22), хотя его причисляют к тюркизмам еще начиная со словаря Яновского (1803): от балта топор или балдак рукоятка сабли, костыль. Последняя этимология менее убедительна, однако она приводится в словаре Ушакова (тюрк., ср. чаг. baldak костыль, сабельная рукоять) и в СРНГ (тюрк., baldak сабельный эфес, руоЕшятка сабли, клюка (слепого). ср. Радлов балта (тур., ком., казан., каз., хив., туркм., кирг.), ср. балта (як.) топор (4, 1501); болта (кар. т.) = = балта топор (4, 1673); балта (каз.) молоток (4, 1500); палга (бараб.) молоток (4, 1169); балту (чаг., тар.) = = балта, палту (4, 1503); палта (алт., тел., леб., шор., саг., койб., кач., чул.), ср. балта (як.) = балта топор (4, 1171); палту (уйг.) = палта топор (4, 1171). ср. в совр. каз. языке балга молот, балта топор. ср. балта.
2) ж обл. (тамб., ворон., влад.) толстый конец палки, дубины; большой тяжелый набалдашник (СРНГ, 2, 79); шишка, утолщение на конце палки, дубинки (Даль, 1, 43; Ушаков, 1, 81). ср. Радлов баХдак (чаг.)
1) (тур.) палица с ремнем для прикрепления к руке;
2) (чаг.) сабельный эфес;
Смотрите также:
Словари русского языка
Общий запас лексики (от греч. Lexikos) — это комплекс всех основных смысловых единиц одного языка. Лексическое значение слова раскрывает общепринятое представление о предмете, свойстве, действии, чувстве, абстрактном явлении, воздействии, событии и тому подобное. Иначе говоря, определяет, что обозначает данное понятие в массовом сознании. Как только неизвестное явление обретает ясность, конкретные признаки, либо возникает осознание объекта, люди присваивают ему название (звуко-буквенную оболочку), а точнее, лексическое значение. После этого оно попадает в словарь определений с трактовкой содержания.
Словечек и узкоспециализированных терминов в каждом языке так много, что знать все их интерпретации попросту нереально. В современном мире существует масса тематических справочников, энциклопедий, тезаурусов, глоссариев. Пробежимся по их разновидностям:
Проще изъясняться, конкретно и более ёмко выражать мысли, оживить свою речь, — все это осуществимо с расширенным словарным запасом. С помощью ресурса How to all вы определите значение слов онлайн, подберете родственные синонимы и пополните свою лексику. Последний пункт легко восполнить чтением художественной литературы. Вы станете более эрудированным интересным собеседником и поддержите разговор на разнообразные темы. Литераторам и писателям для разогрева внутреннего генератора идей полезно будет узнать, что означают слова, предположим, эпохи Средневековья или из философского глоссария.
Глобализация берет свое. Это сказывается на письменной речи. Стало модным смешанное написание кириллицей и латиницей, без транслитерации: SPA-салон, fashion-индустрия, GPS-навигатор, Hi-Fi или High End акустика, Hi-Tech электроника. Чтобы корректно интерпретировать содержание слов-гибридов, переключайтесь между языковыми раскладками клавиатуры. Пусть ваша речь ломает стереотипы. Тексты волнуют чувства, проливаются эликсиром на душу и не имеют срока давности. Удачи в творческих экспериментах!
Как-то в одной общественной сети наткнулся на игру балда с нестандартными правилами (крупные поля и узелки). Программы-подбиралки в основном работают по типичным правилам и на полях 5х5. Следственно у меня возник спортивный интерес написать свою подбиралку всецело адаптированную под нетрадиционные правила. Причем не легко написать подбиралку, а реализовать максимально стремительный алгорифм поиска слов.
Для того Дабы ещё огромнее затруднить жизнь алгорифму будет применяться один из самых крупных словарей в сходственных программах. Он насчитывает приблизительно 110000 слов.
Значимую роль в алгорифме играет метод хранения словаря в памяти программы. При загрузке всякое слово записывается в конструкцию в виде дерева. Всякий узел этого дерева обозначает определенную букву слова и ссылается на не больше чем 32 поддерева (по числу букв в алфавите). Узел дерева в программе выглядит так:
В поле str содержится строка со всеми буквами, которые выходят из данного узла, размер массива next[] равен длине этой строки.
Поле str применяется для нахождения определенного узла среди массива узлов next[] для данной буквы. Для этого введена функция ind() , основанная на strchr():
Если k , то данной буквы нет в str , напротив next[k] указывает на узел, соответствующий этой букве. Скажем, если str содержит строку "аоикт" , то из этого узла идут ровно 5 поддеревьев, причем next[2] ссылается на букву 'и' , т.к. str[2]== 'и' , то же самое и с другими буквами.
Для иллюстрации каждого вышеописанного приведу пример дерева на намеренно подготовленном словаре, состоящем из слов:
Если поле str==NULL , то данный узел является листом и в нём содержится словарное слово wrd . Узел, соответствующий букве 'р' , содержит слово "бар" , и при этом он не является листом, потому что в данном словаре есть ещё одно слово, начинающееся на бар- . Поле wrd содержит строку, которая получается, если идти от корня к соответствующему узлу, но если эта строка не является словарным словом, то wrd содержит NULL .
Назовём это дерево словарным, в нём содержатся все слова из словаря. Помимо словарного дерева нужно подготовить ещё одно, в котором содержатся все допустимые инвертированные префиксы слов для всякого слова (назовём это дерево инвертированным). К примеру, для слова "балда" в инвертированное дерево попадут следующие строки: "адлаб", "длаб", "лаб", "аб", "б" . Даже для тестового словаря с пятью словами такое дерево будет массивным, следственно приведу упрощенный вариант:
Слова Префиксы словарных слов в этом дереве расположены задом-наперед. Узел в красном кружочке соответствует последней букве инвертированного префикса словарного слова, т.е. соответствует первой букве этого слова. Дабы прочитать предисловие словарного слова необходимо двигаться от красного узла к корню. Исключительное различие инвертированного дерева от словарного – это то, что wrd исполняет роль флага ( NULL/не NULL ). Т.е. в нем хранится не строка с инвертированным префиксом слова, а:
- 1) Адрес всеобщей строки (содержимое строки не имеет значения), если данный узел соответствует первой букве словарного слова
- 2) NULL , для всех остальных узлов.
Это сделано для экономии места. Для всех красных узлов wrd!=NULL , для остальных wrd==NULL . К примеру:
Оба дерева занимают в памяти 33М, и непринужденно из словаря они строятся приблизительно за 5 секунд на i5, следственно было принято решение сберечь образ деревьев в файл и в последующем грузить именно его. Так скорость загрузки составила каждого 300 миллисекунд.
По правилам балды для хода необходимо предпочесть пустую клетку, и поставить туда всякую букву.
Спрятанный текст
- 1) Перебираем все пустые смежные клетки
- 2) Для всякой клетки перебираем все буквы алфавита (32 буквы)
- 3) Заносим в нынешнюю клетку (пускай её координаты будут [x, y] ) нынешнюю букву s . Так получаем 32*n различных позиций, где n – число смежных клеток в начальной позиции
- 4) Внесенную букву считаем первой буквой для инвертированных префиксов.
Следственно среди root_inv->next[] находим узел t_inv , соответствующий нынешний букве, т.е. t_inv – поддерево, начинающееся с нынешней буквы:
Безусловно позже цикла по буквам очищаем нынешнюю смежную клетку.
Функция поиска в поддереве find принимает игровое поле, узел дерева ( tree ) и координаты клетки (i, j) , с которой нужно начать двигаться по полу, спускаясь по дереву tree :
- 1) Если tree->wrd!=NULL , то обнаружена валидная подстрока
- a. Если данный узел принадлежал словарному дереву, то эта подстрока вообще словарное слово, добавляем tree->wrd в массив обнаруженных слов.
- b. Если узел принадлежал инвертированному дереву, то эта подстрока является инвертированным префиксом слова. В словарном дереве находим узел t , соответствующий этому префиксу, и вызываем функцию find для t и клетки [x, y] (внимание! Не та клетка, которую передали в эту функцию, а клетка, в которую алгорифм сходил на шаге 3):
- 2) Самостоятельно от значения tree->wrd продолжаем
- 3) Перебираем клетки, смежные с [i, j] (от 2-х в углу до 4-х в центре поля)
- 4) Анализируем содержимое нынешней смежной клетки [i1, j1]
- a. Если она пустая, то переходим на шаг (3)
- b. Если буква, находящаяся в этой клетке, не имеется в tree->str , то переходим на шаг (3)
- c. Если count[i1, j1]==0 , то переходим на шаг (3)
- d. Напротив переходим на шаг (5)
- 5) Среди tree->next[] находим узел tnext , соответствующий букве в [i1, j1]
- 6) Сокращаем счетчик применения count[i1, j1] и вызываем find для tnext и клетки [i1, j1]
- 7) Конец цикла по смежным буквам
Разглядим работу алгорифма для центральной клетки на примере дальнейшей позиции:
Заносим в эту клетку всякую букву из строки ”адлбкнрусм” (остальные буквы алфавита легко не существуют в root_inv->str и алгорифм для них стремительно завершится, даже не начавшись). Для всякой буквы вызываем find . Для буквы А функция стремительно завершится, потому что в инвертированном дереве нет веток, начинающихся на АА-, АС- и АКУ- , то же самое и для Д, К, У, С .
Для остальных букв в инвертированном дереве будут обнаружены валидные префиксы:
Л – лаб, Б – б, Н – наб, Р – невольник, М – м . Для всякого префикса находим узел в словарном дереве (как описано в п.1.b) и вызываем для него функцию find .
Префиксу “бал” соответствует узел root->next[0]->next[0]->next[0] :
Дальнейшей смежной буквой может быть С либо К , но в поле str этого узла содержится “д” , следственно сразу завершаем функцию find , т.е. в дереве нет веток, начинающихся на БАЛС- и БАЛК- . Для префикса “б” в словарном дереве нет веток, начинающихся на БК-, БС-, БАБ-, БАЪ- , то же самое и для префиксов “бан” и “м” .
Префиксу “бар” соответствует узел root->next[0]->next[0]->next[2] .
Т.к. поле wrd!=NULL , заносим строку wrd (БАР) в массив обнаруженных слов и продолжаем поиск дальше. Для строк БАРК и БАРСЪ нет веток, завершаем для них функцию find , а вот строка БАРСУК содержится в дереве, помещаем её в массив обнаруженных слов.
Алгорифм тестировался на дальнейшем поле (безусловно теснее не на тестовом словаре, а на словаре из 110000 слов):
Спрятанный текст
Это реально игравшаяся партия.
Тут поле 9х9 , и оно наполовину заполнено (вероятно, это одна из наихудших позиций для всякого алгорифма, потому что присутствует довольно много клеток, куда дозволено сходить, и довольно успешное взаимное расположение букв, из-за чего много длинных слов дозволено составить). В режиме узелки алгорифм находит все слова за следующее время:
- 1) Mac mini i7 – 7 миллисекунд (не нативное приложение, а в эмуляторе iPhone)
- 2) Комп. с i5 – 12 миллисекунд
- 3) iPad 4 – 30 миллисекунд
- 4) Samsung Galaxy Ace (сталь трёхлетней давности) – 50 миллисекунд (с применением NDK)
Для других позиций время поиска еще поменьше.
Данный алгорифм применен в приложениях для iOS (доступно в app store) и Android. Помимо поиска всех слов реализованы ещё два вида поиска:
- 1) Локальный поиск – если пользователю позарез необходимо занять какую-либо определённую пустую клетку (скажем, призовая клетка, либо прикрыть своим ходом клетку, в которой слишком много длинных слов), тогда он делает двойственный тап по этой клетке и программа ищет только те слова, которые дозволено сходить в неё
- 2) Проверка подстав – двойственный тап по букве принудит программу обнаружить все слова, проходящие через эту букву. Использование: сразу позже хода конкурента проверить его букву (внезапно он жестко подставился), перед своим ходом следует проверить полагаемый ход на предмет подстав
Ещё одна специфика: идентичные по длине слова сортируются по редкости добавляемой буквы (скажем, сходить буквой Ч выигрышнее, чем буквой А ).
Читайте также: