Архивы: по дате | по разделам | по авторам

Словесный бой

Архив
автор : Константин Кноп   29.06.1998

Не так давно меня познакомили со словесной игрой, о которой я никогда раньше не слыхал. Может, она и в самом деле новая, а может, и наоборот - хорошо забытая старая. Ведь появляются же сейчас на прилавках, как грибы после дождя, книжки типа "Игры на досуге", в которых совершенно безо всяких ссылок на копирайты печатают те игры, о которых писала "Наука и жизнь" 20-30 лет назад, а также игры, взятые из книжек классиков занимательной математики - Г. Дьюдени, С. Лойда, Л. Кэрролла, М. Гарднера…

Так или иначе, а игра эта несложная и интересная - то есть вполне достойна того, чтобы о ней рассказать. Что я и делаю.

Участвуют в "словесном бою" не менее двух человек, но лучше всего играть бОльшим составом - скажем, вчетвером или впятером. Каждый участник рисует на клетчатой бумаге квадрат 6x6. Далее все ходят по очереди. Ход состоит в том, что один из игроков называет какую-нибудь букву, после чего все игроки (и он сам в том числе) записывают эту букву в одну из пустых клеток своего квадрата. При этом желательно не показывать свой квадрат остальным игрокам (как в "морском бое"). Суть игры заключается в том, чтобы составить из называемых букв как можно больше слов, которые должны читаться в квадрате по горизонтали и по вертикали.

Пропускать ход нельзя, то есть каждая названная буква должна быть записана всеми игроками. Всего в игре делается не более 36 ходов, после чего игроки производят подсчет своих результатов. В игре должно быть сделано полное число кругов, поэтому общее число ходов должно делиться на число игроков. Например, если играют пять человек, то можно делать 25, 30 или 35 ходов (в любом случае, о продолжительности игры нужно договориться перед первым ходом).

Результаты подсчитывают так: каждое слово из N букв приносит игроку N-1 очко (иначе говоря, однобуквенные слова не считаются). Слова должны читаться либо по горизонтали (слева направо), либо по вертикали (сверху вниз). Слова, идущие в одном направлении, не должны пересекаться или содержаться одно в другом. Все слова должны быть именами существительными в единственном числе. Обычно, как и в других подобных играх, допускаются только нарицательные существительные. Но при общем согласии игроков можно употреблять и имена собственные - названия городов, книг, имена литературных героев и т. п.

Пример заполненного квадрата:

Б О Й К О Т

А Л Е Р Х С

К О П Е Р А

Ж В Е С А Д

П О Ч Т А Ф

Ы Я Ь Ь С Ю

Подсчет очков в этом примере: вертикаль - бак (2), олово (4), печь (3), охра (3), ас (1), сад (2); горизонталь - бойкот (5, а если рассматривать слоги "бой" и "кот" как два отдельных слова, то они принесли бы всего 4 очка!), опера (4), вес (2), ад (1), почта (4). Итого - 31 очко (15+16). Это неплохой результат, хотя и не предел.

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

Вариация 1 (упрощение): игра ведется не на фиксированном квадрате из 36 полей, а на всей клетчатой плоскости. При этом в идеале получается нечто вроде правильного кроссворда: каждому из игроков выгодно, чтобы записанные им буквы попадали не в одно слово, а сразу в несколько. Такой вариант игры приближает ее к классическому "скрэбблу" (известному у нас в стране также под именами "эрудит" и "крестословица").

Вариация 2 (усложнение): все полученные слова в конце игры читаются вслух, после чего одинаковые слова вычеркиваются и не засчитываются никому из игроков, которые это слово составили. Это правило заставляет тщательно думать над тем, какие слова составить из прозвучавших букв. В конце концов обычно побеждает тот, кому удалось составить много нетривиальных слов.

Вариация 3 (изменение системы подсчета): разрешается читать слова не только сверху вниз и слева направо, но и наоборот, а также вдоль всех диагоналей (и тоже туда и обратно). Иначе говоря, слова могут читаться по восьми различным направлениям, и каждое из них приносит зачетные очки. В приведенном выше примере использование этой вариации добавит как минимум слово "вол", читаемое снизу вверх, а также слова "ток", "фат" и "сев" справа налево.

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

Задача 1

Представьте, что в вашем распоряжении есть файл-словарь. Напишите программу, которая умеет подсчитывать очки в уже сыгранной партии - в заполненном квадратике 6x6.

Задача 2

Теоретически в "словесный бой" можно играть и в одиночку - для этого всего лишь нужно, чтобы кто-то (например, компьютер) выдавал случайным образом очередную букву. Конечно, лучше, если при этом будет учитываться частота появления этой буквы в русских словах.

Если вы решили эти две задачи, то у вас уже есть все необходимое для того, чтобы играть со словами на компьютере, используя его и как генератор букв, и для подсчета суммы. А если в заполненной вами табличке вы нашли какое-то слово, отсутствующее в словаре компьютера, его можно автоматически добавить в словарь, не так ли? Надо только предусмотреть такую возможность.

Задача 3

Самые интересные новые игры обычно получаются в результате скрещивания двух старых. Попробуйте скрестить "словесный бой" и "Color Lines": каждое новое слово приносит очки, после чего все составляющие его буквы исчезают и освобождают место. При этом новые буквы появляются на клетках игрового поля не по одной, а парами или даже по три сразу, после чего одна из букв может быть переставлена в другое место точно так же, как переносятся шарики в "Color Lines".

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

А теперь - самое трудное задание.

Задача 4

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

Можете попробовать реализовать два разных варианта игры:

а) программа сама случайным образом определяет следующую букву (но при этом играет честно, то есть не использует знание того, какая буква будет названа следующим ходом);

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

Я давно хочу устроить среди читателей своеобразный чемпионат, в котором приняли бы участие написанные ими программы. Пока что дело обстоит в точности так же, как в бородатом анекдоте о Рабиновиче: он второй раз хотел поехать в Париж. До этого он никогда не был в Париже, но один раз уже хотел… Может быть, что-то изменится, если объявить, что автор лучшей программы получит бесплатную подписку на "Компьютерру"? Надо будет обсудить такую возможность с Георгием Кузнецовым…

Пишите, я постараюсь ответить на все письма.

© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.