THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама


Учимся разгадывать японские кроссворды . Как обычно на примерах, т.к. по моему – это более наглядно. Так же будут комментарии к рисункам – почему именно так.

Правила разгадывания: цифра - это количество закрашенных клеток в строке или столбце.
Если в строке только одна цифра 8, то значит в этой строке - где-то надо закрасить 8 клеток последовательно без пробелов.
Если в строке несколько цифр, например: 3, 2, 1, то в этом порядке они и будут в строке, однако между соседними цифрами должен быть минимум 1-н пробел (может быть 2 и больше).
Мы имеем право закрашивать клетку только в том, случае, если это однозначное решение, т.е. иначе просто не влезет.

А теперь ближе к примерам, чтобы это все лучше понималось.

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

А теперь сделаем тоже самое, только с противоположного края – отсчитываем 9 клеток:

А теперь о том, зачем это делаем. Т.к. у нас больше нет никаких цифр в строке с 9, то в ней может быть закрашено только 9 клеток, причем последовательно без перерывов. (напротив строки одна цифра 9).

Наша строка имеет длину 14 клеток. Поэтому мы отмеряем нашу девятку – по минимуму, т.е. с самого начала и по максимуму – с самого конца. Все для того, чтобы найти пересечение. Я закрасил пересечение черным цветом, потому что как бы вы не закрасили 9 клеток последовательно, 4 из них всегда будут закрашены (напомню – всего клеток 14).

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

Что означает запись 1 1 2 1 1 в строке или столбце? Это означает, что в данном столбце/ строке будет 1 закрашенная клетка, потом промежуток не закрашенный (буду обозначать его “х ”) потом снова 1 закрашенная клетка, потом снова не закрашенный промежуток, потом 2 клетки подряд закрашены и т.д.
Пример возможного (но не факт!!) заполнения столбца №6:

Из этого важно понять – мы можем закрашивать только то, что закрашивается однозначно (как 4 клетки выше). Но так же мы помним, что хотя бы 1-н пробел должен быть между разными закрашиваемыми цифрами . Т.е. после выделенных нами единиц в столбцах будет минимум 1-н пробел – отметим эти пробелы:

Теперь чуточку ускоримся – берем вторую девятку, отмечаем её минимум и максимум, закрашиваем черным пересечение и т.к. в строках у нас единицы – ставим для них минимум один пробел (x).

Как видно пересечение по 8-е дает нам только одну закрашенную клетку.

Но если взглянуть на строку 1 1 (8-я строка)– там всего 2 клетки должны быть закрашены черным.

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


Рассмотрим пятерки в столбцах – напомню, что в столбцах цифры закрашиваются сверху вниз по порядку, а в строках слева на право. Как видим, минимум 1-н пробел сохраняется между единицей и пятеркой столбца.

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

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

Вы заметили, что в последнее время многие вокруг вас стали разгадывать не обычные, а японские кроссворды? И этому есть объяснение. Обычные кроссворды и их облегченная версия - сканворды уже давно не заставляют напрягать интеллект. Из газеты в газету кочуют одни и те же формулировки типа «попугай из 3 букв» или «одежда для стен». Скучно…

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

Правила решения таких кроссвордов не сложные. Давайте учиться? Итак…

Японский кроссворд представляет собой картинку, зашифрованную с помощью цифр. Цифры напротив каждой строки (столбца) обозначают количество закрашенных клеток в этой строке (столбце). Если подряд записано более одного числа, то это означает, что в этой строке (столбце) располагаются несколько групп закрашенных клеток, между которыми находится как минимум одна незакрашенная клетка. Порядок цифр совпадает с порядком расположения закрашенных групп. Ваша цель - определить место всех групп цифр на поле и в результате получить рисунок. Решение у кроссворда может быть только одно, поэтому, если что-то не сходится - возвращаемся на шаг назад и внимательно проверяем все свои шаги. Вот и все правила.

Вроде бы все просто. Но на практике возникает много вопросов. В журналах и газетах, публикующих японские кроссворды, в качестве примера приводятся очень примитивные картинки. И часто так случается, что самостоятельно не выходит разгадать ни один из предложенных вариантов. Поэтому я предлагаю начать учиться на примере более сложной картинки, например, размером 15×15 клеток.

1. Начинаем с поиска самой большой цифры, или группы цифр. Это строка с цифрой 14.
Отсчитываем слева направо 14 клеток и ставим точку. Повторяем отсчет справа налево и тоже ставим точку. Соединяем их и закрашиваем всю группу. У нас получилось 13 закрашенных клеток. Где будет находиться 14-я клетка - справа или слева - мы пока не знаем.

2. Повторяем отсчет для строки с цифрой 9 , так же слева направо и наоборот. Закрашиваем 3 клетки:

3. Теперь давайте рассмотрим самую нижнюю строку с цифрами 8 и 4. Эта запись означает, что в этой строке расположена группа в 8 клеток, затем промежуток минимум в одну клетку, и группа из 4 клеток. Попробуем их вычислить.

Слева направо отсчитываем 8 клеток, ставим точку, пропускаем одну клетку и продолжаем отсчитывать 4 клетки. Ставим точку. Теперь справа налево: отсчитываем 4 клетки (точка), пропускаем одну и отсчитываем 8 клеток (точка). Соединяем попарно точки, относящиеся к восьмерке и четверке, и получаем группы в 6 и 2 клетки. Закрашиваем их. В какую сторону продолжится каждая из групп, пока неизвестно.
Обратите внимание, что когда мы просчитываем по несколько групп в строке или столбце, то мы пропускаем всегда 1 промежуточную клетку, хотя по завершении разгадывания вы увидите, что их иногда становится больше. Но вот такой механизм подсчета мы будем применять всегда, если хотим, чтобы все получилось. Поехали дальше.

4. Такой же алгоритм подсчета применяем к строке «4 — 7». У вас должны получиться группы из одной и четырех клеток - это кусочки от 4 и 7 соответственно.

5. Теперь посмотрим общую картинку:

Обратите внимание на столбцы. Многие из них заканчиваются цифрой 1. Это значит, что самая нижняя группа клеток в этих столбцах равна единице. Поэтому в строке «8 — 4» смело можно отметить те «единицы», которые автоматически у нас вырисовались, и «двойки», которые можно смело дорисовать. При этом мы вспоминаем, что между группами цифр должна быть как минимум 1 незакрашенная клетка и договариваемся, что такие клетки мы будем помечать крестиками. Такие клетки ни при каких условиях закрашиваться не будут

6. Дальше давайте самостоятельно:
— столбец»2-1-6-2» — после нижней «двойки» идет «шестерка». Отсчитываем 6 клеток и закрашиваем ее полностью. Тут все сложилось само собой. В конце группы не забываем ставить крестик;
— столбец «1-3-5-2» — то же самое проделываем с «пятеркой»;
— строка «9» — у нас есть две закрашенные клетки ближе к правому краю. Оттуда и считаем 9 клеток, ставим точку и соединяем ее с группой из 2 клеток. Закрасим и увидим, что у нас есть 7 из 9 закрашенных клеток. Поскольку в этой строке у нас только одна группа, то от ее предполагаемого левого края оставляем свободными 2 клетки, а остальные помечаем крестиками. Там в любом случае ничего не будет;
— проверяем вертикаль и замечаем появившиеся «тройки» (столбцы «1-1-3-1», «1-3-1-3-1» и «2-1-2-3-1»), закрашиваем их и не забываем отделять их крестиками;
— в строке «1-6» пересчитываем «шестерку»: справа налево отсчитаем шесть клеток (точка) и от крестика слева направо также 6 клеток и ставим точку. Соединям, 5 из 6 клеток закрашиваем. На «единицу» в этой строке пока внимания не обращаем;
— так же пересчитываем строку «7-1», в итоге 6 из 7 клеток закрашиваем;
— проделайте те же действия со строками «1-5» и «7»;
— затем проверьте вертикали и дорисуйте группы, которые начинаются сразу после крестиков. После каждого хода проверяйте, как изменяется картинка, дорисовывайте появившиеся позиции.У вас должна получиться вот такая промежуточная картинка:

В процессе разгадывания рассуждайте логически. Если в строке «1-6» для единицы остается одна-единственная позиция, то она же является и частью «двойки» из первого столбца. Поэтому оставьте место для завершения «двойки», а остальной столбец отметьте крестиками. Теперь можно закончить строку «14» и еще раз пересчитать строки и столбцы, отмечая крестиками те позиции, где ну никак не могут быть закрашенные клетки. Дорисуйте строку «4-1-1», пересчитайте столбцы «1-3-5-2» и «1-3-1-3-1», а дальше рассуждайте логически и будьте внимательны, все клетки будут вырисовываться с каждым следующим шагом. В результате у нас получился рисунок мышонка в ботинке.


Я поздравляю вас с первым успехом!
Надеюсь, что вам понравилось и вы пополните наши ряды любителей японских кроссвордов!

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

Например, набор чисел 4, 1, и 3 в сетке японского кроссворда означает, что в этом ряду есть три группы: первая — из четырех, вторая — из одной, третья — из трех черных клеток. Группы разделены как минимум одной пустой клеткой. Пустые клетки могут быть и по краям рядов. При решении японского кроссворда необходимо определить размещение этих групп клеток.

А теперь на простом примере рассмотрим, как решать японские кроссворды.

Алгоритм решения японского кроссворда таков. Легче всего начинать разгадывать японский кроссворд с тех строчек, которые окажутся закрашенными полностью. В нашем примере только три таких строчки по 9 клеточек (рис. 1).

Теперь обратим внимание на вторую строчку, состоящую из двух групп по 4 клеточки. В данном случае пробел между группами окажется в 5 столбце. После этого в 1 и 9 столбике японского кроссворда у нас оказываются закрашенными по 4 клеточки, что и нужно по условиям.

Все остальные клеточки в данных столбцах японского кроссворда точно оказываются не закрашенными. Их мы отмечаем крестиками (рис. 2). Далее в строчке с числом 7 мы закрашиваем все семь оставшихся клеточек. В среднем столбике образовалось начало группы — 4 из 7 требуемых по условию. Завершаем и эту группу.

Продолжая решение японского кроссворда, заметим, что в строчке с числом 1 клеточка уже есть; все остальные отмечаем крестиком. В нашем японском кроссворде в строчке с числом 3 обязательно остаются свободными вторая и восьмая клеточка, а в строчке с группами 2-2 точно будут закрашены третья и седьмая клеточки (рис. 3).

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

Желаем удачи в решении японских кроссвордов!

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

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

Чем отличается японский кроссворд от обычного?

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

Рис №1.

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

Что нужно знать?

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

Инструкция разгадывания японского кроссворда

Приступаем, собственно, к самой технике того, как разгадывать японские кроссворды. Сначала найдите самые большие цифры. В нашем случае это 9 в первой строке. Теперь нужно определить, где же зачеркнуть эти 9 клеток в первой строчке? Нам нужно узнать, какие клетки стопроцентно будут зачёркнуты. Для этого мы отсчитываем 9 клеток слева вот так:

Рис №2.

А теперь девять клеток справа:

Рис №3.

Те клетки, которые оказались на пересечении, и будут зачёркнуты:

Рис №4.

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

Рис №5.

То же самое проделываем со следующими по убыванию цифрами. У нас это 9 в последнем столбце, 8 в первом и 7 в последней строке:

Рис №6.

Обратите внимание, что последняя строка у нас состоит из 14 клеток, а потому семь слева и семь справа дают ровно половину, значит, пересечения не будет.

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

Рис №7.

Восьмая строка. Две единицы - две закрашенные клеточки. Помечаем зазоры и вычёркиваем их. Поздравляем, восьмая строка разгадана! А это значит, что всё пространство между ними мы можем зачеркнуть.

Рис №8.

Смотрим, что это нам даёт. В седьмом и девятом столбце видим цифру пять. Пять клеток должны быть закрашены после единицы, которую мы уже зачеркнули. Смотрим расстояние между крестами в этих столбцах… Ровно пять клеток! Возникает вопрос, почему они не могут быть в нижней части поля, после крестов. Ещё раз вернёмся к правилам: цифры указаны по порядку. То есть, если с самого верха мы закрасили одну клетку, то потом обязательно должны быть пять, а только потом 4 клетки по одной. Значит, смело закрашиваем эти клетки:

Рис №9.

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

Рис №10.

А вот в пятой строке мы можем поставить целых три креста и вычеркнуть две единицы. В данном случае всё равно какие, так как вся строка состоит из единиц, и рисунок не собьётся:

Рис №11.

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

Рис №12.

Дальше, увы, пока мы ничего не можем вычеркнуть по горизонтали. Вернёмся снова по вертикали. Проверка первых шести столбцов не даёт нам ничего. На первый взгляд, седьмой тоже, но если хорошо присмотреться… У нас осталось 4 единицы. А пустых клеток в столбце - шесть. То есть, ровно столько места, чтобы разместить четыре закрашенные клетки и зазоры между ними. Такая же ситуация и с девятым столбцом:

Рис №13.

Искусство того, как разгадывать японские кроссворды, состоит в постоянной перепроверке самого себя. Теперь снова вернёмся к горизонтали и посмотрим, что нам дают зачёркнутые клетки в нижнем поле. В девятой строке мы получаем крест. В десятой пока ничего. В одиннадцатой - тоже никакой достоверной информации, как и в двенадцатой. А вот в тринадцатой мы можем зарисовать клетку между двумя уже зарисованными, потому что у нас есть цифра 5. Она не может быть где-то сбоку, потому что по бокам стоят единицы. И даже если мы поставим по бокам единицы, отступим зазор - и пять клеток не влезет.

Рис №14.


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

Рис №15.

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

Рис №16.

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

Также предлагаем вашему вниманию, посмотреть очень интересное видео «Как разгадывать японские кроссворды» .

Удачи вам и интересного досуга!

Факультет компьютерных наук и технологий
Кафедра программной инженерии
Специальность Программная инженерия

Японские кроссворды. Алгоритм решения

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

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

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

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


Рисунок 1 - Диаграмма классов

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

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

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

Исходный код программы можно получить в .

Метод Пересечение крайних границ

Анализируется каждая числовая группа в линии и находятся крайняя правая и крайняя левая границы числовой группы. Если разница между правой и левой границами больше или равна нулю , то можно заполнить клетки, находящиеся между ними (включительно). Стоит отметить, что, как видно из рисунка, в итоговой линии закрашиваются группы, которые пересекаются только сами с собой, поэтому клетка №6 не закрашена, так как в разных позициях (левой и правой) она принадлежит разным числовым группам.


Рисунок 2 - Пример анализа линии, используя пересечения крайних границ

Метод Отталкивание от стен

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

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


Рисунок 3 - Пример анализа линии, используя отталкивания от стен

Метод Недосягаемость

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

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



THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама