Настольная игра падающая башня с фантами бам-бум. Деловая игра «Башня из бумаги»

Падающая башня стала еще более азартной и «безбашенной». Мы добавили веселья, написав на каждом третьем бруске нашей новой башни веселое задание!

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

В состав игры входит специальный уголок. С его помощью надо собрать башню. В башне будет 18 рядов по три брусочка. В соседних рядах брусочки при этом должны лежать перпендикулярно друг другу. Затем надо перевернуть башню и поставить ее на стол. Уголок не даст башне рассыпаться или изменить форму. Можно убирать уголок и приступать к игре.

Правила игроки могут устанавливать самостоятельно, но традиционно вытаскивают брусочки по очереди, причем одной рукой. Эти бруски выкладываются сверху теми, кто их вытащил параллельно друг другу в ряду и перпендикулярно нижнему ряду. В ряду может быть не три, а два или даже один брусок.

Проигрывает тот, кто разрушит башню. Веселья прибавит наличие заданий на брусочках. Тут многим придется выбирать - либо стать на две минуты голодным муравьедом, либо вытаскивать другой, более «трудный» брусок.

Комплектация:

  • 54 бруска, из них 18 с заданиями;
  • уголок;
  • правила игры.
  • Отзывы к настольной игрe Падающая башня с фантами Бам-бум

    Александр

    Покупали эту игру к семейному празднику. Когда вскрыли упаковку, то вначале посыпались мелкие опилки, а когда выставили башню, то настроение окончательно испортилось. Из всей башни можно было без усилий извлечь только 3-4 бруска. Остальные сидели как влитые, так как поверхности были шершавые с заусенцами. Очень были расстроены, хотя заказывали конкретно эту игру в которую играли у знакомых (там качество было великолепное, бруски скользили от лёгкого прикосновения).

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

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

    Деловая игра «Башня из бумаги»

    Цель: Отработать навыки работы в команде и схемы команд­ного взаимодействия. Выявить роли участников команды . Способствовать сплочению команды. Помочь снять напряжение. Мотивировать участников к совместной деятельности.

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

    Инструментарий: Ручки или карандаши для участников, секундомер или часы с секундной стрелкой, раздаточные материалы для участников, несколько пачек бумаги по 500 листов формата А4, рулетка. Дополнительно: флипчарт, видеокамера.

    1. Участники делятся на несколько команд. Каждой команде выда­ется раздаточный материал с инструкциями и 100 ли­стов бумаги формата А4. Тренер дает участникам следующую инструкцию: «Вам необ­ходимо построить башню из бумаги с максимальной эффектив­ностью, следуя полученным инструкциям. На обсуждение и подготовку к работе вам дается 30 минут. Во время обсуждения и для экспериментов можно использовать каждый лист бумаги только один раз, то есть если лист бумаги каким-то образом согнут для пробы, то для следующих экспериментов и непосредственно для построения башни вы должны брать новые листы. В вашем рас­поряжении только полученные командой 100 листов бумаги. Если вам нужны дополнительные листы, вы можете их купить у тре­нера, цена каждых дополнительных 20 листов указана в роздан­ных вам инструкциях. Построенная башня должна простоять не меньше 1 минуты ».

      Засекается время начала обсуждения. Через 45 минут обсуждение прекращается. Все команды сдают полученные инструкции и листы бумаги, использованные для моделирования вариантов строительства.

    2. Команды начинают по очереди строить башню из бумаги. По­рядок выступления команд определяется жеребьевкой. Коман­дам дается на построение башни максимум 15 минут. Перед на­чалом выполнения задания команда откладывает в сторону какие бы то ни было записи и инструкции, бумага складыва­ется в одну пачку в обычных листах (не в заготовках) в центре комнаты (но не распределяется между участниками команды). Команда начинает строить башню по команде тренера, кото­рый засекает время и следит за выполнением задания. Во вре­мя работы команды участникам других команд запрещается продолжать обсуждение предстоящего строительства. После построения башни члены команды должны четко рапортовать тренеру об окончании строительства. Тренер отмечает время окончания строительства и засекает 1 минуту, которую долж­на простоять башня, чтобы задание считалось выполненным. После окончания данной контрольной минуты тренер произ­водит замер высоты башни. Затем башню строит следующая команда, и процедура полно­стью повторяется и т.д.
    3. После окончания выступления последней команды проводит­ся разбор видеозаписи выступления каждой команды по очереди, а также структурированное групповое обсуждение по приведенным ниже вопросам.
    • Как проходило обсуждение выполнения задания?
    • Как распределились роли в команде?
    • На что обратили внимание при просмотре видеозаписи?
    • Совпадает ли цель, поставленная себе командой, с целью данного задания, поставленной тренером?
    • Все ли параметры учли участники команды: время, высота, материалы?
    • Что помогало при выполнении задания?
    • Что мешало?
    • Как бы вы действовали сейчас?
    • Что понравилось в выступлении команды? Что не понравилось?
    • Кто из участников разбираемой команды был наиболее полезен?

    Инструкция (раздаточный материал)

    Задача

    Построить башню с максимальной эффективностью.

    Параметры эффективности

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

    Время

    45 минут для обдумывания и 15 минут для строи­тельства башни.

    Ресурсы

    100 листов бумаги. Дополнительные листы бло­ками по 20 шт. (всего не более 500 листов) могут быть полу­чены у тренера по требованию представителя команды.

    Ограничения

    1. Никакой другой материал, кроме того, который распространяется тренером, не может быть использован. Стоимость всех взятых листов зачисляется на счет команды независимо от того, были они использованы или нет.
    2. Материал можно использовать только один раз. Если во время подготовительной стадии какие-либо листы были исполь­зованы (для моделирования вариантов строительства), они не могут быть использованы ни для строительства, ни для других пробных попыток.
    3. Изготовление заготовок не допускается. В момент начала строительства никаких сгибов на листах бумаги быть не должно.
    4. Тренер отвечает за замер времени, затраченного на пост­ройку башни и определение результатов. Строительство начи­нается по команде тренера независимо от того, готова коман­да или нет. По завершении строительства необходимо громко и четко проинформировать об этом тренера.
    5. Высота башни измеряется от поверхности, на которой она установлена.
    6. Башня должна быть построена без дополнительной опо­ры и способна простоять хотя бы 1 минуту после окончания строительства.

    Параметры эффективности

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

    В статье будет много картинок. Объяснение как решать задачу рекурсивно и как она решается бинарным поиском.
    В общем статья посвящается тем смелым, кто пока еще боится Ханойской башни, но хочет перестать её бояться.

    Правила игры

    Они очень просты. Есть 1 пирамидка с дисками разного размера, и еще 2 пустые пирамидки. Надо переместить диски с одной пирамидки на другую. Перекладывать можно только по одному диску за ход. Складывать диски можно только меньший на больший.
    Итак у нас есть вот такая пирамидка:


    И нам надо переложить её скажем на среднюю ось.
    Если начать решать задачу не с начала, а с конца - она оказывается очень простой. Давайте подумаем. Чтобы переложить пирамидку на вторую ось - нам надо переложить самый нижний диск, а сделать это можно только когда 4 верхних диска будут на третьей оси:


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


    Чувствуете рекурсию?
    Перекладывание стека из 5 дисков - это:
    1. Перекладывание стека из 4х дисков на независимую ось
    2. Перекладывание 5-го диска на нужную нам ось
    3. Перекладывание стека из 4х дисков на нужную нам ось

    В свою очередь перекладывание стека из 4 дисков - это:
    1. Перекладывание стека из 3х дисков на независимую ось
    2. Перекладывание 4-го диска на нужную нам ось
    3. Перекладывание стека из 3х дисков на нужную нам ось

    Вот и все.

    Рекурсивная реализация

    После такого подробного описания не составит сложности реализовать это алгоритмически.

    Реализация на Delphi

    Итак я описал модуль с типами башенок:
    unit untHTypes; interface const MaxRingCount = 5; type TTower = record RingCount: Integer; Rings: array of Integer; procedure MoveRing(var AtTower: TTower); end; TTowers = array of TTower; procedure InitTowers(var towers: TTowers); implementation procedure InitTowers(var towers: TTowers); var i: Integer; begin towers.RingCount:= MaxRingCount; towers.RingCount:= 0; towers.RingCount:= 0; for i:= 0 to MaxRingCount - 1 do begin towers.Rings[i] := MaxRingCount - i; towers.Rings[i] := 0; towers.Rings[i] := 0; end; end; { TTower } procedure TTower.MoveRing(var AtTower: TTower); begin Assert(RingCount > 0); Assert(AtTower.RingCount - 1 < MaxRingCount); if AtTower.RingCount > 0 then Assert(Rings < AtTower.Rings); Dec(RingCount); AtTower.Rings := Rings; Rings := 0; Inc(AtTower.RingCount); end; end.
    TTower - структура описывающая башню. В ней в RingCount хранится количество фактически одетых колец на башне. Размер колец хранится в массиве Rings от 1 и до MaxRingCount. Поскольку у нас 3 башни - то был объявлен тип TTowers = array of TTower;
    Так же с башни можно переложить верхее кольцо на другую с помощью функции MoveRing. Функция проверяет корректность операции через Assert-ы.
    Само же решение башни находится в файле проекта:
    program Hanoy; {$APPTYPE CONSOLE} uses SysUtils, untHTypes in "untHTypes.pas"; {$R *.res} procedure SolveHanoy; var towers: TTowers; function GetThirdIndex(index1, index2: Integer): Integer; //по двум имеющимся осям возвращает третью независимую ось begin //на которую временно можно переложить стек Assert(index1 <> index2); case index1 of 0: if index2 = 1 then Result:= 2 else Result:= 1; 1: if index2 = 2 then Result:= 0 else Result:= 2; 2: if index2 = 0 then Result:= 1 else Result:= 0; else Assert(False,"wrong indeces"); end; end; procedure MoveStack(stacksize: Integer; fromindex, atindex: Integer); //перемещает стек из пирамидок с одной оси на другую var thirdindex: Integer; begin if stacksize = 0 then Exit; thirdindex:= GetThirdIndex(fromindex, atindex); //подбираем независимую ось MoveStack(stacksize - 1, fromindex, thirdindex); //перемещаем подстек (на 1 меньший) на независимую ось towers.MoveRing(towers); //перемещаем последнее кольцо на нужную нам ось WriteLn(fromindex,"-",atindex); // записываем в консоль наше действие MoveStack(stacksize - 1, thirdindex, atindex); //вовзращаем подстек с независимой на нужную нам ось end; begin InitTowers(towers); MoveStack(MaxRingCount, 0, 1); end; begin SolveHanoy; end.

    Алгоритмическая сложность

    Мы легко можем подсчитать, сколько действий нам понадобится, чтобы переместить пирамидку.
    Если мы перемещаем стек из одного диска - то нам нужно 1 действие.
    Если стек из двух - то 1 * 2 (переместить дважды стек из одного диска) + 1 (перемещаем последний диск)
    Если из трех ((1 * 2) + 1) * 2 + 1
    Из пяти: (((((1 * 2) + 1) * 2 + 1) * 2 + 1) * 2 + 1)
    Итак каждая операция увеличивает в 2 раза + 1 кол-во перемещений. Раскрыв скобки для n операций - получаем:

    От суммы можно избавиться, ибо она равна:

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

    То есть если нам захочется странного, например записать решение ханойской башни для 64 дисков, то никаких современных носителей информации нам не хватит. В действительности - нам вообще не надо ничего никуда записывать. Это все равно, что записывать все числа от 0 до +бесконечности, чтобы потом их использовать, потому что решение ханойской башни - это фрактал.

    Фрактальная природа

    Да да. Решение ханойской башни имеет фрактальную природу. Давайте посмотрим. Допустим у нас каждое действие записывается в строку. Тогда для башни из 6 дисков можно записать это как-то так:


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

    Бинарный алгоритм

    Итак, мы знаем точное количество операций, а так же знаем индекс операции, для которой мы хотим восстановить состояние.
    Допустим у нас башня из 6 дисков (перемещаем как обычно, с 1-ой на среднюю ось), а значит операций у нас 2^6-1 = 63. Допустим нам требуется восстановить состояние для 49-ой операции.
    Делим целочисленно 63 на 2. Получается 31. Это индекс операции, на которой будет перемещен 6-ой диск:

    У нас 49-ый индекс операции. Это значит что 6-ой диск уже лежит на средней оси. Кроме того, поскольку мы находимся в правой части, то пятый диск у нас лежит либо на 3-ей оси, либо на 2-ой. Для того чтобы мы могли работать с башней по тому же алгоритму - отнимаем от 49-ой операции 32, находим индекс подоперации. Это 17. Для перемещения стека из 5 дисков нужна 31 операция, при этом 5-ый диск перемещается на 16-ю операцию и с 3-ей оси на 2-ую.
    Итак число 17 лежит правее:

    А это значит что диск 5 уже перемещен на вторую ось.
    По аналогии восстанавливаем положение остальных дисков.

    Реализация (бинарный способ)

    Я добавил красивую отрисовку башенок. Согласитесь, скучно смотреть в консольный лог. Поэтому реализация разрослась, и я прикреплю полный проект (исходник + бинарник) в конце статьи. Здесь же приведу

    код рекурсивной функции на Delphi

    procedure TfrmView.RestoreDisk(size, actionIndex, actionCount, fromAxe, atAxe: Integer); var pivot: Integer; i: Integer; thirdAxe: Integer; begin pivot:= actionCount div 2; thirdAxe:= GetThirdIndex(fromAxe, atAxe); if actionIndex = pivot then //попали в центр, значит знаем какой диск сейчас перекладывается begin //и можем восстановить весь стек дисков меньшего размера. Конец рекурсии FTowers.PutRing(size); for i:= size - 1 downto 1 do FTowers.PutRing(i); FAction.FromIndex:= fromAxe; FAction.AtIndex:= atAxe; end else if actionIndex < pivot then begin //значит выполняется стадия перекладывания подстека на независимую ось FTowers.PutRing(size); //и нижний диск еще не переложен RestoreDisk(size - 1, actionIndex, actionCount - pivot - 1, fromAxe, thirdAxe); end else begin //значит выполняется стадия перекладывания подстека с независимой на нужную ось FTowers.PutRing(size); //и нижний диск уже переложен RestoreDisk(size - 1, actionIndex - pivot - 1, actionCount - pivot - 1, thirdAxe, atAxe); end; end; procedure TfrmView.RestoreTowers; var index: Integer; begin ClearTowers(FTowers); index:= tbOperation.Position; RestoreDisk(MaxRingCount, index, 2 shl (MaxRingCount - 1) - 1, 0, 1); Invalidate; end;

    Треугольник Серпинского

    Я хотел бы еще вскользь упомянуть интересную особенность. Если все возможные перемещения колец собрать в граф, то для каждого узла будет чаще всего по 3 связи. Все узлы и связи можно красиво расположить в форме треугольника. Треугольника Серпинского:


    Подробнее об этом сказано на википедии
    Статьи по теме: