Nonogram Hub
Nonogram Hub

Метод перетину

Якщо ви вивчите лише один прийом нонограм, нехай це буде саме цей. Метод перетину — це те, як ви отримуєте певні заповнені клітинки з підказки ще до того, як дізнаєтесь, де саме розташована її послідовність, і саме він рушій більшості перших ходів. Цей посібник охоплює логіку, однорядкову формулу та те, як це працює, коли підказка має кілька чисел. Він спирається на посібник із перших ходів; якщо «послідовність» і «підказка» ще не знайомі терміни, почніть із правил.

Ідея: зсувайте в обидва боки

Візьміть будь-яку окрему послідовність і уявіть, що зсуваєте її якомога далі до одного кінця рядка, а потім якомога далі до іншого. Це дві крайні позиції, які послідовність могла б зайняти. Будь-яка клітинка, накрита в обох позиціях, має бути заповнена — не існує розташування цієї послідовності, яке залишило б її порожньою. Клітинки, накриті лише в одній із двох крайніх позицій, поки що залишаються невідомими.

Це весь метод. Вам не потрібно знати, куди насправді потрапляє послідовність; вам потрібні лише клітинки, яких вона не може уникнути.

Однорядкова формула

Для однієї послідовності довжиною k у рядку з n клітинок кількість гарантованих клітинок дорівнює 2k − n, і вони розташовані посередині рядка — щоразу, коли це число додатне. Послідовність із 4 у рядку завширшки 5 дає 2×4 − 5 = 3 форсовані клітинки; послідовність із 3 дає лише 2×3 − 5 = 1. Що ближча довжина послідовності до всього рядка, то більше вона визначає.

Та сама ідея масштабується. Послідовність із 7 у рядку завширшки 10 форсує 2×7 − 10 = 4 клітинки посередині. Щойно виробиться звичка, вам рідко доведеться обчислювати це число явно — картина «зсуву в обидва боки» дає ту саму відповідь на око.

Перетин однієї послідовності

4

4 у рядку завширшки 5: 2×4 − 5 = 3 форсовані клітинки посередині.

3

3 у рядку завширшки 5: 2×3 − 5 = 1 форсована клітинка, центр.

7

7 у рядку завширшки 10: 2×7 − 10 = 4 форсовані клітинки.

Перетин із кількома числами підказки

Коли підказка рядка має кілька чисел, метод усе одно працює — ви лише вимірюєте люфт, спільний для всього рядка. Додайте всі послідовності плюс обов'язкові проміжки в одну клітинку між ними; відніміть це від довжини рядка. Результат — «люфт», тобто наскільки все розташування може зсуватися. Кожна окрема послідовність тоді форсує (власна довжина − люфт) клітинок, там де це додатне число.

Візьмімо рядок завширшки 10 з підказкою 4 3. Послідовності плюс один проміжок потребують 4 + 1 + 3 = 8 клітинок, тож люфт становить 10 − 8 = 2. Послідовність із 4 форсує 4 − 2 = 2 клітинки, а послідовність із 3 форсує 3 − 2 = 1 клітинку. Навіть заповнений рядок дає вам три певні клітинки ще до того, як ви щось точно розмістили.

Перетин із кількома числами: 4 3 у рядку завширшки 10

4 3

Люфт = 10 − (4+1+3) = 2. Послідовність із 4 форсує 2 клітинки, послідовність із 3 форсує 1 — три певні клітинки загалом.

Коли перетин нічого не дає

Якщо послідовність коротка відносно свого рядка — мале k, велике n — формула дає нуль або від'ємне число, і перетин там нічого не форсує. Це цілком нормально й не глухий кут. Це просто означає, що початок не в цьому рядку; знайдіть більш обмежений рядок чи стовпець, зробіть там прогрес, і заповнені клітинки зменшать люфт цього рядка, доки перетин не почне діяти. Перетин рідко є всім розв'язанням, але майже завжди є способом почати.