Кенкен как решать примеры
Перейти к содержимому

Кенкен как решать примеры

  • автор:

Математика под другим углом

Математика под другим углом

История первых головоломок началась в Древнем Египте, некоторые задачи на логику можно найти на стенах египетских пирамид и в исторических документах. Сегодня головоломки стали разнообразным и простым в использовании методом для проведения интеллектуальных тренировок. Для любителей задачек со звездочкой проводятся олимпиады по логике и марафоны по решению головоломок. Ежегодно тысячи любителей математических лабиринтов готовы сразиться друг с другом на звание самого умного.

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

Устные — те головоломки, для решения которых не нужны дополнительные средства, и найти верный ответ можно с помощью устных размышлений. К ним относятся загадки и шарады;

Механические — такие головоломки имеют подвижные элементы и специальные крепления. Самый известный пример этого вида — кубик Рубика;

Развивающие — эти головоломки направлены на развитие определенных качеств и способностей. Часто они нацелены на конкретную аудиторию. Например, на детей 5-6 лет;

Графические — полная противоположность устных головоломок. Как правило, они напечатаны или нарисованы. Для решения таких головоломок необходимы дополнительные инструменты: бумага, карандаш или компьютерная мышь, если задача находится на экране компьютера.

Бесконечное разнообразие головоломок тренирует в детях внимательность, стремление добиваться поставленной цели, усиливает любопытство и тренирует нестандартное мышление. Удивительный факт — иногда дети быстрее справляются с решением задачи, чем взрослые. Это объясняется тем, что мозг ребенка еще не настолько сильно подвержен шаблонам и не ищет готовых вариантов, а генерирует ответы сам. Взрослому человеку же требуется намного больше времени на то, чтобы перестроить систему мышления и посмотреть на головоломку с другого ракурса.

Судоку

Кажется, что эта известнейшая головоломка пришла к нам из Японии, но на самом деле, родина Судоку — Северная Америка. А прототип головоломки был создан XVIII веке математиком Леонардом Эйлером, который называл ее просто — «Латинский квадрат». Креативные японцы в 1984 году придумали другое название, которое на сегодняшний день ассоциируется с головоломкой.

Судоку — сокращение от фразы «Suuji wa dokushin ni kagiru», что означает «число должно быть единственным». В Японии головоломка обрела не только новое имя, но и получила значительные усовершенствования, что сделало ее еще более интересной и сложной. Сегодня Судоку появляется в печатных СМИ, в учебниках и задачниках по математике, входит в перечень заданий на логику и частенько мелькает в различных интеллектуальных марафонах.

Головоломка представляет собой квадрат 9×9, разделенный на маленькие квадраты — 3×3. По условию нужно расположить цифры от 1 до 9 так, чтобы каждая строка, столбец или блок содержали все цифры и не повторялись.

Этой игрой можно заинтересовать как детей, так и взрослых. Главное — подобрать нужный уровень. В интернете представлены разные виды Судоку — от простого до сложного. Существует также настолько трудная головоломка, что вместе с ней неотрывно путешествует запись «Самая сложная Судоку в мире».

Кен-кен

KenKen — вид популярнейших головоломок родом из Японии. «Мудрость в квадрате» (именно так переводится KenKen) придумал учитель Тэцуя Миямото в 2004 году. Его головоломки собрали в себе совершенные японские идеи и со временем распространились по всем у миру. Сегодня KenKen — это не просто задачи, а масштабные турниры, международные марафоны и целая система тренировки мозга для любителей логических заданий. ЦРИ «Пифагорка» находится в числе поклонников японских головоломок: в центре проходят турниры KenKen, в которых принимают участие ученики.

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

Создатель этой головоломки уверял, что главная польза KenKen — осознанный подход к математике. Он сетовал на то, что во время обычных уроков дети решают задачи, применяя методы, суть которых не совсем понимают. Банальное заучивание — то, с чем рискнул побороться обычный школьный учитель и придумал головоломки KenKen.

Японская мозайка

Эта графическая головоломка имеет и другое название — Fill-a-Pix. Ее придумал английский математик Тревор Труран, веря, что его изобретение поможет развить людям логическое мышление, творческие способности и эстетическое восприятие. Ведь результат решения головоломки — пиксельная картинка.

Fill-a-Pix представляет собой сетку с числами, которые показывают, сколько клеток должно быть закрашено. На первый взгляд головоломка выглядит очень простой, но позже становится понятно, что игроку нужно приложить массу усилий, чтобы разобраться, какие клетки должны остаться пустыми, а какие необходимо закрасить.

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

Головоломки Мартина Гарднера

Мартин Гарднер — американский математик, писатель и автор множества головоломок. Он написал десятки книг, во многих из которых раскрывал читателям свои мысли по поводу важности математического мышления и пользе логических задач. Его труды совсем не вызывают ассоциаций с простым учебником математики, Мартин Гроднер умело приправляет самые банальные факты юмором и интересными историями, с одинаковой увлеченностью рассказывая о задачах со спичками и о важнейших вопросах физики, математики и астрономии. Для любителей головоломок он написал несколько гениальных книг: «1000 развивающих головоломок, математических загадок и ребусов для детей и взрослых», «А ну-ка, догадайся», «Есть идея».

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

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

Японская головоломка KenKen: разбор задачи и алгоритм автоматической генерации таблиц

Разбор правил головоломки KenKen, её решение, а также пример программной реализации.

Дмитрий Беляев
Perl-разработчик хостинг-провайдера и регистратора доменов REG.RU

Мои критерии интересной задачи:

  • Она, попав в голову, осталась там надолго, даже получив своё решение.
  • К ней интересно мысленно возвращаться в минуты скуки или творческого настроения.
  • Целью задачи не должен быть лишь правильный ответ (поэтому школьные, олимпиадные или задачки с собеседований лично для меня редко становятся любимыми). Мне нравится когда задача — некий процесс творения.
  • Задача должна быть как-то связана с реальностью. Или с тем, чем я мог бы заниматься в реальности, пусть даже играя. Я бы вряд ли крутил в голове задачу из разряда «У Пети есть неубывающий массив натуральных чисел, а вы ему завидуете и с помощью XOR-пушки хотите его разрушить…».
  • У неё не должен быть слишком высокий порог входа, чтобы она помещалась в оперативку в голове и не переполняла стек.

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

Такие задачи часто нас окружают, важно их заметить, что можно сравнить с тем, как идеи должны находить изобретателя. Очередной случай произошёл спонтанно, когда я объяснял одному моему товарищу правила решения головоломки KenKen. Разобраться в них довольно непросто, сам я сделал это только с третьего раза, когда мне объясняли правила мои дети.

На данный момент этот блок не поддерживается, но мы не забыли о нём! Наша команда уже занята его разработкой, он будет доступен в ближайшее время.

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

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

Так, если, например, жирным обведены две ячейки вместе, а в уголке написано «‎6x»‎, это значит, что мы должны получить результат равный шести путем умножения ячеек друг на друга. Варианты заполнения ячеек будут такие: 3 и 2 или 6 и 1. Но если мы еще раньше пришли к выводу, что в одной ячейке должно стоять 6, то во второй ячейке остаётся поставить только 1.

Поначалу товарищ никак не мог ухватить суть правил, тогда я сказал: «Чтобы понять, как они устроены, давай составим собственный KenKen, как если бы его решать потом не нам, а кому-то другому. Следи за руками».

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

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

Потом в углу каждого такого домино поставил цифру, равную сумме цифр в ячейках в обведённой области. Для простоты объяснения я использовал только операцию сложения. Мы оба убедились, что полученный таким образом KenKen выполняет все правила решённого. Потом я стёр цифры в ячейках, чтобы тот кому достанется решать, не знал ответа заранее.

Как только я это объяснил другу, тут же и сам всё понял: это же алгоритм автоматической генерации KenKen! Я мог бы создать сайт, на котором любой желающий может решать бессчётное количество автоматически созданных KenKen. Вот она задачка!

Первое, что интересно в ней — сам алгоритм формирования головоломки, а не веб-программирование, как таковое. Второе — как программа в процессе заполнения ее пользователем будет определять, решён KenKen или нет? Третье — уже совершенно новая задача: может ли другая программа решить такой KenKen, сгенерированный другой программой?

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

Поэтому, решив её однажды, не спешу выбрасывать задачку из головы. Более того, я её запрограммировал, не смог удержаться. Это были две недели удовольствия по вечерам. У этой задачки нет заумных формул и она меня не подвешивает в «‎параличе разработчика»‎. Я знаю как использовать такой алгоритм на практике. И наконец, я знаю, кто и зачем может воспользоваться этим алгоритмом. Важно, что занимаясь этим, можно одновременно и отдыхать, и развлекаться, и развиваться

Решение задачи

Заполняем заготовку KenKen числами с сохранением уникальности в рядах и колонках

Пусть N — это число ячеек в одном ряду/колонке KenKen.

Можно заметить правило: в любом ряду или колонке должны присутствовать по одному разу все числа от 1 до N.

Как это доказать? Разрешено использовать числа от 1 до N. Если в ряду длиной N отсутствует вхождение какого-либо из чисел от 1 до N, то на его место придётся вставить другое число от 1 до N, а это будет повторением одного из уже присутствующих в ряду чисел. К примеру, в ряду 1, 2, 3 если убрать 2, то на его место придется поставить или 1, или 3.

Простейший ряд для KenKen, при N=3 — это: [ 1, 2, 3 ]. (см. рис. ниже).

Второй ряд, чтобы обеспечить уникальность в колонках может быть циклически смещен относительно первого. Простейший случай — смещение на 1 шаг: 2, 3, 1:

Третий ряд — на два шага относительно первого ряда: 3, 1, 2:

Перемешивание первого ряда

Если первый ряд во всех KenKen будет возрастающей последовательностью от 1 до N, то даже ребёнок быстро сообразит, в чём тут система.

Чтобы добавить KenKen непредсказуемости, первый ряд можно перетасовать случайным образом: из [ 1, 2, 3 ] он может превратиться в [ 2, 1, 3 ]:

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

Перемешиваем сдвиг

Постоянный сдвиг рядов тоже даёт картину с явно выраженной закономерностью:

Как варьировать сдвиг очередного ряда?

Ряды можно сдвигать и случайным образом, главное, чтобы ни один ряд не был сдвинут на одинаковое количество шагов относительно какой-то точки отсчёта. Мы могли бы для каждого ряда получать случайное число сдвига в пределах от 0 до N-1, а потом проверять, не было ли уже такого сдвига в предыдущих рядах, но можно сделать проще.

По-математически обобщая, можно сказать, что все ряды так или иначе смещены: третий ряд смещён на два шага относительно первого, второй ряд — на один шаг, а первый ряд — на ноль шагов. То есть смещения рядов от верхнего к нижнему можно описать последовательностью [ 0,1,2 ], или обобщённо: для KenKen размерностью N: [ от 0 до N-1 ] (см. рис. ниже).

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

Теперь количество шагов смещения для каждого последующего ряда относительно предыдущего будет вариабельным. (см. рис. ниже).

Заполняем KenKen правилами

Как мы помним, на KenKen накладываются правила заполнения.

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

1. Общие — это уникальность в рядах и колонках

2. Частные правила, которые меняются от одного KenKen к другому: это, к примеру, ячейки (1,1) и (1,2) должны в сумме давать 4

Любое правило, и общее и частное, распространяется на конкретный список ячеек, применяет к ним некую операцию и сверяет полученный результат с ожидаемым результатом.

Примем за обозначение координат запись (row,col), где row — номер ряда сверху, а col — номер колонки слева. Запись (1,3) будет означать «ряд 1, колонка 3».

Так, например, правило уникальности первого ряда в KenKen размерностью N условно формально можно выразить так:

Аналогично и для остальных рядов и ячеек.

Частное правило можно выразить, например, так:

Вот пример полного списка правил для (уже заполненного по правилам и решённого) KenKen, нарисованного ниже:

Теперь понятно, к чему мы стремимся, но пока список правил мы еще не составили.

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

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

На какое количество ячеек распространять правило?

Минимум = 1, а максимум — сколько? Глядя на разные KenKen, можно увидеть, что обычно частное правило распространяется не более чем на длину одной стороны, а чаще — на ещё меньшее число ячеек. Можно взять максимум равный int( N / 2 ) + 1. Для кенкена N=3 максимум будет равен 2, для N=4 максимум = 3, для N=5 максимум = 3.

Как распространить правило на K ячеек?

Пусть K — количество ячеек, на которое мы хотим распространить правило. Случайная стартовая ячейка уже выбрана. Смотрим на ячейку справа от текущей, если она не занята каким-либо правилом и если она находится в пределах KenKen, то включаем её в текущее правило.

См. рис. ниже, где стартовой ячейкой является ячейка (2,2) (центральная):

Если она занята или вне пределов KenKen, то смотрим на соседнюю снизу ячейку по отношению к текущей ячейке:

Если и тут нет — то на соседа слева и потом на соседа сверху. Так до тех пор, пока не наберётся K ячеек для правила или пока не будет отрицательного ответа по всем четырём направлениям.

Как только распространение правила остановилось — считаем общую сумму значений в ячейках и записываем в ожидаемый результат. В нашем случае мы решили, что максимум количества ячеек для правила будет равен 2, значит остановимся после заполнения двух ячеек. Например, так:

Заполняем остальные частные правила

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

Продолжаем добавлять частные правила, пока в KenKen есть ячейки, не включённые ни в одно частное правило:

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

Что если будут другие операции, кроме суммы?

Хороший KenKen имеет, кроме суммы, ещё операции умножения, вычитания и деления. Рассматривая KenKen, можно обратить внимание, что операции суммы и умножения охватывают разное количество ячеек, а операции деления и вычитания всегда охватывают ровно две ячейки. Этому есть объяснение: применение операции вычитания или деления к трём и более ячейкам создает неоднозначность при решении. Если это так, то придётся каждой операции поставить в соответствие количество ячеек, к которому она может быть применена.

Также можно заметить, что, например, операцию деления нельзя использовать, если значения не делятся нацело. К примеру, нельзя применить деление к ячейкам со значениями 2 и 3. Поэтому, каждой операции можно поставить в соответствие функцию проверки её применимости к списку значений. Например, для операции деления такая функция возвращает истину только если в списке значений два элемента, и если деление большего на меньшее не дает остатка.

Каков алгоритм выбора операции для следующего частного правила?

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

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

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

Как можно ещё улучшить выбор операции?

Если операцию умножения никак не ограничивать, то для KenKen размером 6х6 можно получить правило умножения с ожидаемым результатом, равным 720 (6*5*4*3*2). В KenKen огромных чисел обычно не делают.

Вторая причина ограничить умножение — если эта операция будет нетребовательна, то она будет слишком часто встречаться в KenKen.

Возможно, функцию применимости умножения придётся доработать, добавив в неё некий максимум ожидаемого результата:

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

Существуют ли KenKen, допускающие более одного варианта решения?

Да, если правила недостаточно жестко накладывают ограничения на значения.

Вопрос, на который я еще не нашёл ответа: как убедиться, что сгенерированный KenKen имеет одно решение?

Что должна уметь делать программа, кроме генерации KenKen?

Как программа поймет, когда KenKen решён?

Вот пользователь заполняет ваш KenKen, и если только он не распечатал его на бумаге, то программа в состоянии оповестить его, когда KenKen решён. Как это сделать?

Мы говорили, что есть общие и частные правила. Любое правило может либо выполняться, либо быть нарушенным. Для проверки нарушенности правило применяется к ячейкам, на которые оно распространяет свою операцию и сравнивает результат с ожидаемым результатом. Объединяем правила в один список и выбираем из списка те правила, которые нарушены. Если полученный список пуст — то ни одно правило не нарушено, и значит KenKen решён.

Что потребуется программе, изображающей сгенерированный KenKen?

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

Для того чтобы нарисовать ячейку, программе нужно знать, какие из её сторон рисовать простой линией, а какие — жирной линией. Простые линии разделяют ячейки внутри одного частного правила. Жирные линии — границы между частными правилами, а также границы всего KenKen.

В какой ячейке из охваченных частным правилом печатать собственно само правило? Т.е. где печатать «‎5+»‎ или «6*» ? Ответ: из всех ячеек, охваченных правилом, можно выбрать самую верхнюю, а если верхних несколько, то потом самую левую.

Нужно помнить, что на общих правилах (требующих уникальность в рядах и столбцах) никаких правил не пишется. То есть не нужно в начале каждого ряда писать, что-то вроде «истина, уникальность с (1,1) по (1,3)». И общие правила не обводятся жирными границами.

Откуда программа знает, каким знаком закодировать операции в частных правилах? Например, откуда она знает, что если операция — «сумма», то в правиле нужно напечатать знак «+» ? Можно поставить в соответствие каждой операции — символ, которым она обозначается в правиле.

Закладываем фундамент на будущее

Помните, был вопрос о том, сможет ли программа решить KenKen? Уверен, что да, но как — я пока не знаю. Но понятно, что, как минимум, программа должна уметь получить KenKen в каком-то формате, в виде входных данных и уметь перевести его в своё внутреннее представление. Соответственно, понадобятся функции сериализации KenKen в этот формат (для генерирующей программы) и десериализации его (для решающей). Формат JSON вполне подходит.

Программирование

Важно отметить — задача запрограммирована не на языке Perl. Это связано с тем, что, с точки зрения автора, подобный код удобнее писать на статически-типизированном языке, так что ни Perl, ни Python, ни другой динамический язык не будут удобными для этой задачи.

Как написать свою 2048 на Java за 15 минут

Также хотелось написать универсальную библиотеку, которую потом можно использовать и в консольных, и в десктопе, и в одностраничных веб-приложениях (даже для мобильных). В Dart это всё возможно, поэтому выбор был очевиден.

Программирование задачи можно найти здесь, а пример использования — в этом файле.

Следите за новыми постами по любимым темам

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

Что такое КенКен и почему все об этом говорят?

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

КенКен

Весь мир решает КенКен

«Мудрость в квадрате» — так переводится название КенКен с японского. Этот интеллектуальный тренажер изобрел педагог Тэцуя Миямото из Йокогамы. Японский математик искал способ помочь своим ученикам развить логическое мышление и создал целую систему по тренировке мозга. А вирусный успех игра КенКен получила потому, что она не только полезна для поддержания и развития умственной активности, но еще и очень увлекательна. Стоит лишь один раз освоить принцип игры, как становится ясна ее красота и логика.

Can you KenKen?

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

Правила КенКен

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

Где найти КенКен?

По всему миру книги КенКен выходят огромными тиражами. С недавних пор они появились и в России. Издательство «Эксмо» эксклюзивно выпустило две первые книги КенКен. И они прямо на наших глазах становятся хитами.

Тэцуя Миямото — изобретатель КенКен, японский преподаватель математики, создавший впоследствии собственную школу и прославившийся на весь мир.

Решить головоломку кен-кен

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

В качестве ограничений выступают блоки, на которые разделена таблица. Для каждого блока указана операция — сложение, вычитание, умножение или деление — и её результат. Например, 30x означает, что произведение чисел в блоке равно 30. Числа внутри блока могут повторяться.

Рассмотрим формат представления и решение на простом примере:
https://contest.yandex.ru/test. 81f9d736e7

Формат ввода
Клетки сгруппированы по блокам. Указаны координаты клеток (сначала строка, потом столбец, нумерация начинается с 1). Обратите внимание: если блок состоит из одной клетки, то указывается его значение без операций.

Знаки операций обозначаются +-/*

Формат вывода
Заполненная таблица:
3 1 2
2 3 1
1 2 3

вывод
3 1 2
2 3 1
1 2 3

Все операции выполняются последовательно. Обратите на это внимание при работе с операциями вычитания и деления.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *