Pattern Overlay Method

Advanced methods and approaches for solving Sudoku puzzles

Re: Pattern Overlay Method

Postby coloin » Thu Nov 27, 2025 1:51 am

hi P.O.
please could you explain what went on in this thread templates as patterns
It wasnt at all clear what the difference of opinion was ...ie 6 vv 3 in Tungsten Rod !! between the various schools... :D :?:
coloin
 
Posts: 2664
Joined: 05 May 2005
Location: Devon

Re: Pattern Overlay Method

Postby P.O. » Thu Nov 27, 2025 9:44 am

hi Coloin
in any resolution state the possible templates are recovered and the combinations made, this operation alone allows to eliminate templates, those that no longer appear in any combination, and it is powerful enough, increasing the size of the combinations from 2 to 3, from 3 to 4 etc. to solve all the puzzles
Denis's implementation doesn't just do that, an excerpt from a comment of the code posted on his github page
- "When a template[2] is deleted, all the templates[3] that extend it must be deleted."
- "When a template[3] is deleted, all the templates[4] that extend it must be deleted."
i've done an analysis of what i understand about his implementation here
P.O.
 
Posts: 2112
Joined: 07 June 2021

Re: Pattern Overlay Method

Postby StrmCkr » Fri Nov 28, 2025 6:16 am

Java code for working template 46656 list generator.

Template Generator: Show
Code: Select all
 
import java.util.ArrayList;
import java.util.BitSet;
import java.util.List;

public class SudokuTemplateGenerator {

    // Peers for each cell (row, col, box)
    static BitSet[] peer = new BitSet[81];

    public static List<BitSet> templates = new ArrayList<>();
    static BitSet setStuff = new BitSet();
    static BitSet[] cellSetStuff = new BitSet[81];

    public static void main(String[] args) {
        System.out.println("Initializing peer sets...");
        initPeers();

        System.out.println("Generating templates...");
        Templates();

        System.out.println("Done. Total templates = " + templates.size());
        printTemplates(templates);
    }

    /** Build peer list (row, column, box peers). */
    static void initPeers() {
        for (int i = 0; i < 81; i++) {
            peer[i] = new BitSet(81);

            int r = i / 9;
            int c = i % 9;

            // Row peers
            for (int cc = 0; cc < 9; cc++) {
                if (cc != c)
                    peer[i].set(r * 9 + cc);
            }

            // Column peers
            for (int rr = 0; rr < 9; rr++) {
                if (rr != r)
                    peer[i].set(rr * 9 + c);
            }

            // Box peers
            int br = (r / 3) * 3;
            int bc = (c / 3) * 3;
            for (int rr = br; rr < br + 3; rr++) {
                for (int cc = bc; cc < bc + 3; cc++) {
                    int cell = rr * 9 + cc;
                    if (cell != i)
                        peer[i].set(cell);
                }
            }
        }
    }

    /** Generate all templates. */
    public static void Templates() {
        templates.clear();

        setStuff = new BitSet();
        for (int c = 0; c < 81; c++) {
            cellSetStuff[c] = new BitSet();
        }
        generateTemplates(new int[9], 0, new BitSet());
    }

    /** Recursive template builder. */
    static void generateTemplates(int[] chosen, int row, BitSet used) {
        if (row == 9) {
            BitSet template = new BitSet(81);
            for (int r = 0; r < 9; r++)
                template.set(chosen[r]);

            int templateId = templates.size();
            templates.add(template);

            setStuff.set(templateId);
            for (int cell = template.nextSetBit(0); cell >= 0; cell = template.nextSetBit(cell + 1)) {
                cellSetStuff[cell].set(templateId);
            }
            return;
        }

        int rowStart = row * 9;
        for (int col = 0; col < 9; col++) {
            int cell = rowStart + col;
            if (!used.get(cell)) {
                BitSet nextUsed = union(include(cell, used), peer[cell]);
                chosen[row] = cell;
                generateTemplates(chosen, row + 1, nextUsed);
            }
        }
    }

    /** Utility: include a bit. */
    static BitSet include(int bit, BitSet bs) {
        BitSet copy = (BitSet) bs.clone();
        copy.set(bit);
        return copy;
    }

    /** Utility: union two bitsets. */
    static BitSet union(BitSet a, BitSet b) {
        BitSet c = (BitSet) a.clone();
        c.or(b);
        return c;
    }

    /** Print all templates. */
    public static void printTemplates(List<BitSet> templates) {
        System.out.println("templates: " + templates.size());
        for (int id = 0; id < templates.size(); id++) {
            BitSet t = templates.get(id);
            System.out.print("Template " + id + ": ");
            for (int cell = t.nextSetBit(0); cell >= 0; cell = t.nextSetBit(cell + 1)) {
                System.out.print(cell + " ");
            }
            System.out.println();
        }
    }
}

Some do, some teach, the rest look it up.
stormdoku
User avatar
StrmCkr
 
Posts: 1492
Joined: 05 September 2006

Re: Pattern Overlay Code:

Postby StrmCkr » Wed Dec 24, 2025 9:55 am

POM CODE: Show
Code: Select all
package sudoku.testingItems;

import java.util.ArrayList;
import java.util.BitSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.stream.IntStream;

import sudoku.DataStorage.SBRCGrid;
import sudoku.HelpingTools.SetOps;
import sudoku.HelpingTools.SudokuTemplateGenerator;
import sudoku.HelpingTools.ToStringUtils;
import sudoku.HelpingTools.Tools;
import sudoku.Solvingtech.SolvingTechnique;
import sudoku.gui.TemplateGridViewer;
import sudoku.match.TechniqueMatch;
import sudoku.solvingtechClassifier.Technique;

public enum Templating implements SolvingTechnique {

    TECHNIQUE;

    private static final BitSet DUPLICATES_A = SetOps.fromInts(9, 10, 17, 30, 31, 35, 42, 43, 44);
    private static final BitSet DUPLICATES_B = SetOps.fromInts(45, 109, 128);
    private static final BitSet DUPLICATES_C = SetOps.fromInts(0, 1, 2, 3, 4, 5, 6, 7, 8);

    @SuppressWarnings("unchecked")
    public static List<SudokuTemplateGenerator.Template>[] templatesByDigit = new ArrayList[9];

    public static BitSet[][] DigitTemplates = new BitSet[9][81];

    private static int maxSubsetSize = 4;
    private static final int MIN_HS = 1, MAX_HS = 4;
    private static final int MIN_NS = 1, MAX_NS = 4;
    private static final int TKMin = 2, TKMax = 6;

    @Override
    public Map<Technique, List<TechniqueMatch>> search(SBRCGrid sbrc) {

        ConcurrentHashMap<Integer, List<SudokuTemplateGenerator.Template>> resultMap = computeDigitTemplatesParallel(sbrc);
        storeDigitResults(resultMap);

        buildDigitTemplateIndex(sbrc);
        printDigitTemplates(DigitTemplates);

        TemplateGridViewer.showMultiDigitTemplateGrid(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }, DigitTemplates, templatesByDigit);

        // computeOmissions(sbrc, true); computeInclusionsHidden(sbrc, true);
        // computeExclusionsNaked(sbrc, true);

        // findHiddenSubsetsTemplateSpace(sbrc, true);

        // findNakedSubsetsTemplateSpace(sbrc, true);

        // FindNCellsWithNDigits(sbrc, true);
        // computeMultiDigitTemplateElimination(sbrc, maxSubsetSize, true);

        // findTKDelete(sbrc, true)

        POMexe(sbrc);

        TemplateGridViewer.showMultiDigitTemplateGrid(new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }, DigitTemplates, templatesByDigit);

        return Map.of(Technique.PATTERN_OVERLAY_METHOD, List.of());
    }

    // -------------------------------------------------------------------------
    // TEMPLATE COLLECTION //
    // -------------------------------------------------------------------------
    // -------------------------------------------------------------------------
    private ConcurrentHashMap<Integer, List<SudokuTemplateGenerator.Template>> computeDigitTemplatesParallel(SBRCGrid sbrc) {
        ConcurrentHashMap<Integer, List<SudokuTemplateGenerator.Template>> map = new ConcurrentHashMap<>();
        IntStream.range(0, 9).parallel().forEach(digit -> {
            try {
                BitSet digitMask = SetOps.union(sbrc.digitcell[digit], sbrc.SolvedCellByDigit[digit]);
                List<SudokuTemplateGenerator.Template> validTemplates = SudokuTemplateGenerator.templates.parallelStream()
                        .filter(t -> SetOps.isSubsetOf(t.cells, digitMask))
                        .toList();
                map.put(digit, validTemplates);
            } catch (Throwable t) {
                t.printStackTrace();
                map.put(digit, List.of());
            }
        });
        return map;
    }

    private void storeDigitResults(ConcurrentHashMap<Integer, List<SudokuTemplateGenerator.Template>> map) {
        for (int d = 0; d < 9; d++) {
            templatesByDigit[d] = new ArrayList<>(map.getOrDefault(d, List.of()));
        }
    }

    public static void buildDigitTemplateIndex(SBRCGrid sbrc) {
        for (int d = 0; d < 9; d++) {
            List<SudokuTemplateGenerator.Template> tlist = templatesByDigit[d];
            if (tlist == null || tlist.isEmpty()) {
                for (int c = 0; c < 81; c++)
                    DigitTemplates[d][c] = new BitSet();
                continue;
            }
            for (int c = 0; c < 81; c++)
                DigitTemplates[d][c] = new BitSet();
            for (SudokuTemplateGenerator.Template tpl : tlist) {
                BitSet templateCells = SetOps.intersection(sbrc.digitcell[d], tpl.cells);
                for (int cell = templateCells.nextSetBit(0); cell >= 0; cell = templateCells.nextSetBit(cell + 1)) {
                    DigitTemplates[d][cell].set(tpl.id);
                }
            }
        }
    }

    // ------------------------------------------------------------------------- //
    // OMISSIONS : cells not used by any template for digit n
    //
    // -------------------------------------------------------------------------
    private static boolean computeOmissions(SBRCGrid sbrc, boolean applyIfFound) {
        boolean anyRemoved = false;
        Map<Integer, BitSet> eliminations = new ConcurrentHashMap<>();
        for (int d = 0; d < 9; d++) {
            BitSet digitCells = sbrc.digitcell[d];
            List<SudokuTemplateGenerator.Template> tlist = templatesByDigit[d];
            if (tlist == null || tlist.isEmpty())
                continue;
            BitSet omissions = new BitSet(81);
            for (int cell = digitCells.nextSetBit(0); cell >= 0; cell = digitCells.nextSetBit(cell + 1)) {
                if (DigitTemplates[d][cell].isEmpty())
                    omissions.set(cell);
            }
            if (!omissions.isEmpty()) {
                // System.out.println("POM omissions for digit " + (d + 1) + " => " +
                // ToStringUtils.cellGroupToString(omissions));
                for (SudokuTemplateGenerator.Template tpl : tlist) {
                    BitSet overlap = (BitSet) tpl.cells.clone();
                    overlap.and(omissions);
                    if (!overlap.isEmpty()) {
                        eliminations.merge(d, new BitSet() {
                            {
                                set(tpl.id);
                            }
                        }, (oldBs, newBs) -> {
                            oldBs.or(newBs);
                            return oldBs;
                        });

                        // System.out.println(" → delete template " + tpl.id + " from digit " + (d +
                        // 1));
                    }
                }
            }

            if (!eliminations.isEmpty()) { // <-- print only if something will be removed
                System.out.println("POM omissions for digit " + (d + 1) + " => " + ToStringUtils.cellGroupToString(omissions));
                BitSet toDelete = eliminations.get(d);
                for (int id = toDelete.nextSetBit(0); id >= 0; id = toDelete.nextSetBit(id + 1)) {
                    System.out.println("    → delete template " + id + " from digit " + (d + 1));
                }
            }
        }
        if (!eliminations.isEmpty() && applyIfFound)
            anyRemoved = applyTemplateEliminations(eliminations, sbrc);

        return anyRemoved;
    }

    // ------------------------------------------------------------------------- //
    // INCLUSIONS + CROSS-DIGIT EXCLUSIONS cell appears in all templates for digit n
    // hidden single //
    //   depreciated incorperated into hidden subsets
    // -------------------------------------------------------------------------
    private static boolean computeInclusionsHidden(SBRCGrid sbrc, boolean applyIfFound) {
        boolean anyRemoved = false;
        Map<Integer, BitSet> eliminations = new ConcurrentHashMap<>();

        for (int d = 0; d < 9; d++) {
            List<SudokuTemplateGenerator.Template> tlist = templatesByDigit[d];
            if (tlist == null || tlist.isEmpty())
                continue;

            int templateCount = tlist.size();
            BitSet inclusion = new BitSet();
            for (int cell = sbrc.digitcell[d].nextSetBit(0); cell >= 0; cell = sbrc.digitcell[d].nextSetBit(cell + 1)) {
                if (DigitTemplates[d][cell].cardinality() == templateCount)
                    inclusion.set(cell);
            }

            if (inclusion.isEmpty())
                continue;

            // System.out.println("POM inclusions for digit " + (d + 1) + ": " +
            // ToStringUtils.cellGroupToString(inclusion));

            for (int cell = inclusion.nextSetBit(0); cell >= 0; cell = inclusion.nextSetBit(cell + 1)) {
                BitSet otherDigits = SetOps.exclude(d, sbrc.pm[cell]);
                for (int d2 = otherDigits.nextSetBit(0); d2 >= 0; d2 = otherDigits.nextSetBit(d2 + 1)) {
                    BitSet toDelete = new BitSet();
                    for (SudokuTemplateGenerator.Template tpl : templatesByDigit[d2]) {
                        if (tpl.cells.get(cell))
                            toDelete.set(tpl.id);
                    }

                    // Only merge and print if there’s actually something to delete
                    if (!toDelete.isEmpty()) {
                        eliminations.merge(d2, toDelete, (oldBs, newBs) -> {
                            oldBs.or(newBs);
                            return oldBs;
                        });
                        // System.out.println(" → delete templates " + toDelete + " from digit " + (d2 +
                        // 1));
                    }
                }
            }
            // Only print if eliminations exist
            if (!eliminations.isEmpty()) {
                System.out.println("POM inclusions for digit " + (d + 1) + " (hidden single(s)): " + ToStringUtils.cellGroupToString(inclusion));
                for (Map.Entry<Integer, BitSet> e : eliminations.entrySet()) {
                    int d2 = e.getKey();
                    BitSet toDelete = e.getValue();
                    System.out.println("    → delete templates " + toDelete + " from digit " + (d2 + 1));
                }
            }
        }

        if (!eliminations.isEmpty() && applyIfFound)
            anyRemoved = applyTemplateEliminations(eliminations, sbrc);

        return anyRemoved;
    }

    // ------------------------------------------------------------------------- //
    // exclusion
    // naked single - digit x appears in one cell with activce templates
    // depreciated incorperated into naked subsets
    // -------------------------------------------------------------------------

    private static boolean computeExclusionsNaked(SBRCGrid sbrc, boolean applyIfFound) {
        boolean anyRemoved = false;
        Map<Integer, BitSet> eliminations = new ConcurrentHashMap<>();

        for (int cell = 0; cell < 81; cell++) {
            int activeDigit = -1;
            boolean validCell = true;
            for (int d = 0; d < 9; d++) {
                BitSet dt = DigitTemplates[d][cell];
                if (dt != null && !dt.isEmpty()) {
                    if (activeDigit == -1)
                        activeDigit = d;
                    else {
                        validCell = false;
                        break;
                    }
                }
            }
            if (!validCell || activeDigit < 0)
                continue;

            BitSet activeTemplates = (BitSet) DigitTemplates[activeDigit][cell].clone();
            List<SudokuTemplateGenerator.Template> tlist = templatesByDigit[activeDigit];

            BitSet toDelete = new BitSet();
            for (SudokuTemplateGenerator.Template tpl : tlist) {
                if (!activeTemplates.get(tpl.id))
                    toDelete.set(tpl.id);
            }

            if (!toDelete.isEmpty())
                eliminations.put(activeDigit, toDelete);
        }

        if (!eliminations.isEmpty()) {
            for (Map.Entry<Integer, BitSet> e : eliminations.entrySet()) {
                int d = e.getKey();
                BitSet toDelete = e.getValue();

                System.out.println("POM exclusions for digit " + (d + 1) + " (naked single) -> delete templates:");
                for (int id = toDelete.nextSetBit(0); id >= 0; id = toDelete.nextSetBit(id + 1)) {
                    System.out.println("    → delete template " + id + " from digit " + (d + 1));
                }
            }
        }

        if (!eliminations.isEmpty() && applyIfFound) {
            anyRemoved = applyTemplateEliminations(eliminations, sbrc);
        }

        return anyRemoved;
    }

    // -------------------------------------------------------------------------
    // Hidden Subset support (sizes 2..4)
    // -------------------------------------------------------------------------

    private static boolean findHiddenSubsetsTemplateSpace(SBRCGrid sbrc, boolean applyIfFound) {
        boolean active = false;
        for (int n = MIN_HS; n <= MAX_HS; n++) {
            active = findHiddenSubsets_TemplateSpace(sbrc, n, applyIfFound);
            if (active) {
                return active;
            }
        }
        return active;
    }

    private static boolean findHiddenSubsets_TemplateSpace(SBRCGrid sbrc, int n, boolean applyIfFound) {
        boolean active = false;
        int[] digitCombo = new int[n];
        for (int i = 0; i < n; i++)
            digitCombo[i] = i;

        do {
            boolean anyMissingTemplates = false;
            for (int di : digitCombo) {
                List<SudokuTemplateGenerator.Template> tlist = templatesByDigit[di];
                if (tlist == null || tlist.isEmpty()) {
                    anyMissingTemplates = true;
                    break;
                }
            }
            if (anyMissingTemplates)
                continue;

            BitSet subsetDigitMask = new BitSet();
            for (int d : digitCombo)
                subsetDigitMask.set(d);

            for (int sec = 0; sec < 27; sec++) {
                int start = Tools.Slist[n - 1], end = Tools.Flist[n - 1];
                for (int k = start; k <= end; k++) {
                    if (boxEnforcer(sec, n - 1, k))
                        continue;
                    BitSet cells = Tools.combosetS[sec][k];
                    if (cells == null || cells.isEmpty())
                        continue;

                    boolean subsetCoversAll = true;
                    for (int di : digitCombo) {
                        BitSet union = new BitSet();
                        for (int c = cells.nextSetBit(0); c >= 0; c = cells.nextSetBit(c + 1)) {
                            BitSet dt = DigitTemplates[di][c];
                            if (dt != null)
                                union.or(dt);
                        }
                        int fullCount = templatesByDigit[di].size();
                        if (union.cardinality() != fullCount) {
                            subsetCoversAll = false;
                            break;
                        }
                    }
                    if (!subsetCoversAll)
                        continue;

                    // Collect eliminations for digits not in subset
                    Map<Integer, BitSet> eliminations = new HashMap<>();
                    for (int c = cells.nextSetBit(0); c >= 0; c = cells.nextSetBit(c + 1)) {
                        for (int d = 0; d < 9; d++) {
                            if (subsetDigitMask.get(d))
                                continue;
                            for (SudokuTemplateGenerator.Template tpl : templatesByDigit[d]) {
                                if (tpl.cells.get(c)) {
                                    eliminations.computeIfAbsent(d, x -> new BitSet()).set(tpl.id);
                                }
                            }
                        }
                    }

                    if (!eliminations.isEmpty()) {
                        System.out.println("FOUND HIDDEN-SUBSET: digits=" + ToStringUtils.getDigits(subsetDigitMask) +
                                " cells=" + ToStringUtils.cellGroupToString(cells) + " sector=" + sec + " size=" + n);
                        for (Map.Entry<Integer, BitSet> e : eliminations.entrySet()) {
                            System.out.println("  -> eliminate digit " + (e.getKey() + 1) + " templates=" + e.getValue());
                        }
                        if (applyIfFound)
                            active = applyTemplateEliminations(eliminations, sbrc);

                    }
                }
            }
        } while (Tools.next_combination(digitCombo, 9, n));

        return active;
    }

    // //-------------------------------------------------------------------------
    // Naked Subset support (sizes 2..4)
    // -------------------------------------------------------------------------
    private static boolean findNakedSubsetsTemplateSpace(SBRCGrid sbrc, boolean applyIfFound) {
        boolean active = false;
        for (int n = MIN_NS; n <= MAX_NS; n++) {
            active = findNakedSubsets_TemplateSpace(sbrc, n, applyIfFound);
            if (active)
                return active;
        }
        return active;
    }

    private static boolean findNakedSubsets_TemplateSpace(SBRCGrid sbrc, int n, boolean applyIfFound) {
        boolean active = false;
        int[] digitCombo = new int[n];
        for (int i = 0; i < n; i++)
            digitCombo[i] = i;

        do {
            boolean skip = false;
            for (int d : digitCombo) {
                List<SudokuTemplateGenerator.Template> tlist = templatesByDigit[d];
                if (tlist == null || tlist.isEmpty()) {
                    skip = true;
                    break;
                }
            }
            if (skip)
                continue;

            BitSet subsetDigitMask = new BitSet();
            for (int d : digitCombo)
                subsetDigitMask.set(d);

            for (int sec = 0; sec < 27; sec++) {
                int start = Tools.Slist[n - 1], end = Tools.Flist[n - 1];
                for (int k = start; k <= end; k++) {
                    if (boxEnforcer(sec, n - 1, k))
                        continue;
                    BitSet cells = Tools.combosetS[sec][k];
                    if (cells == null || cells.isEmpty())
                        continue;

                    boolean validCells = true;
                    Map<Integer, BitSet> usedInCells = new HashMap<>();

                    for (int c = cells.nextSetBit(0); c >= 0; c = cells.nextSetBit(c + 1)) {
                        BitSet activeDigits = new BitSet();
                        for (int d = 0; d < 9; d++) {
                            if (DigitTemplates[d][c] != null && !DigitTemplates[d][c].isEmpty())
                                activeDigits.set(d);
                        }

                        BitSet subsetInCell = (BitSet) activeDigits.clone();
                        subsetInCell.and(subsetDigitMask);
                        if (subsetInCell.isEmpty()) {
                            validCells = false;
                            break;
                        }

                        BitSet otherDigits = (BitSet) activeDigits.clone();
                        otherDigits.andNot(subsetDigitMask);
                        if (!otherDigits.isEmpty()) {
                            validCells = false;
                            break;
                        }
                    }

                    if (!validCells)
                        continue;

                    for (int d : digitCombo) {
                        BitSet union = new BitSet();
                        for (int c = cells.nextSetBit(0); c >= 0; c = cells.nextSetBit(c + 1)) {
                            for (SudokuTemplateGenerator.Template tpl : templatesByDigit[d]) {
                                if (tpl.cells.get(c))
                                    union.set(tpl.id);
                            }
                        }
                        usedInCells.put(d, union);
                    }

                    Map<Integer, BitSet> eliminations = new HashMap<>();
                    for (int d : digitCombo) {
                        List<SudokuTemplateGenerator.Template> tlist = templatesByDigit[d];
                        if (tlist == null || tlist.isEmpty())
                            continue;

                        BitSet full = new BitSet();
                        for (SudokuTemplateGenerator.Template tpl : tlist)
                            full.set(tpl.id);

                        BitSet outside = (BitSet) full.clone();
                        outside.andNot(usedInCells.get(d));
                        if (!outside.isEmpty())
                            eliminations.put(d, outside);
                    }

                    if (!eliminations.isEmpty()) {
                        System.out.println("FOUND NAKED-SUBSET: digits=" + ToStringUtils.getDigits(subsetDigitMask) +
                                " cells=" + ToStringUtils.cellGroupToString(cells) + " sector=" + sec + " size=" + n);
                        for (Map.Entry<Integer, BitSet> e : eliminations.entrySet()) {
                            System.out.println("  -> eliminate digit " + (e.getKey() + 1) + " templates=" + e.getValue());
                        }
                        if (applyIfFound)
                            active = applyTemplateEliminations(eliminations, sbrc);
                    }
                }
            }

        } while (Tools.next_combination(digitCombo, 9, n));

        return active;
    }

    // -------------------------------------------------------------------------
    // MULTI-DIGIT TEMPLATE INTERACTIONS
    // -------------------------------------------------------------------------
    /*
     * * For each digit d1, for subset sizes 1..maxSubsetSize: - Build subsets of *
     * * candidate cells from sbrc.digitcell[d1 - Union DigitTemplates[d1][cell] * *
     * (these are template-index bitsets) - If union.cardinality == * *
     * templatesByDigit[d1].size() -> subset covers all d1 templates - For every * *
     * other digit d2, any template of d2 that contains ALL cells in subset should *
     * * be considered for deletion * * This function only reports deletions
     * (prints). * Actual removal of templates * can be done later.
     */

    private static boolean computeMultiDigitTemplateElimination(SBRCGrid sbrc, int maxSubsetSize, boolean applyIfFound) {
        boolean anyRemoved = false;
        Map<Integer, BitSet> eliminations = new ConcurrentHashMap<>();

        for (int d1 = 0; d1 < 9; d1++) {

            List<SudokuTemplateGenerator.Template> tlist = templatesByDigit[d1];
            if (tlist == null || tlist.isEmpty())
                continue;

            final int templateCount = tlist.size();
            int[] cellList = sbrc.digitcell[d1].stream().toArray();
            if (cellList.length == 0)
                continue;

            int maxK = Math.min(maxSubsetSize, cellList.length);

            for (int k = 1; k <= maxK; k++) {

                int[] idx = new int[k];
                for (int i = 0; i < k; i++)
                    idx[i] = i;

                boolean first = true;

                while (first || Tools.next_combination(idx, cellList.length, k)) {
                    first = false;

                    int[] subsetCells = new int[k];
                    for (int j = 0; j < k; j++)
                        subsetCells[j] = cellList[idx[j]];

                    BitSet unionIdx = new BitSet(templateCount);
                    for (int c : subsetCells) {
                        BitSet dt = DigitTemplates[d1][c];
                        if (dt != null)
                            unionIdx.or(dt);
                    }

                    if (unionIdx.cardinality() != templateCount)
                        continue;

                    BitSet subsetMask = SetOps.fromInts(subsetCells);

                    // Examine other digits
                    for (int d2 = 0; d2 < 9; d2++) {
                        if (d2 == d1)
                            continue;

                        List<SudokuTemplateGenerator.Template> otherTemplates = templatesByDigit[d2];
                        if (otherTemplates == null || otherTemplates.isEmpty())
                            continue;

                        BitSet toDelete = new BitSet();

                        for (SudokuTemplateGenerator.Template tpl : otherTemplates) {
                            boolean containsAll = true;
                            for (int c : subsetCells) {
                                if (!tpl.cells.get(c)) {
                                    containsAll = false;
                                    break;
                                }
                            }
                            if (containsAll)
                                toDelete.set(tpl.id);
                        }

                        if (!toDelete.isEmpty()) {
                            eliminations.merge(d2, toDelete, (oldBs, newBs) -> {
                                oldBs.or(newBs);
                                return oldBs;
                            });

                            System.out.println(
                                    "MD-POM: Digit " + (d1 + 1) +
                                            " subset " + ToStringUtils.cellGroupToString(subsetMask) +
                                            " covers ALL templates of digit " + (d1 + 1) +
                                            " => deleting templates " + toDelete +
                                            " from digit " + (d2 + 1));
                        }
                    }
                }
            }
        }

        if (!eliminations.isEmpty() && applyIfFound) {
            anyRemoved = applyTemplateEliminations(eliminations, sbrc);
        }

        return anyRemoved;
    }

    // ============================================================================
    // TRUE TEMPLATE[2] (T k delete)
    // ============================================================================

    private static final class TemplateInstantiation {

        final BitSet occupied = new BitSet(81);

        TemplateInstantiation(SudokuTemplateGenerator.Template tpl) {
            occupied.or(tpl.cells);
        }

        boolean isCompatible(SudokuTemplateGenerator.Template tpl) {
            return !occupied.intersects(tpl.cells);
        }
    }

    // ============================================================================
    // TRUE TEMPLATE[2] (T 2 - 8 delete)
    // ============================================================================
    private static boolean findTKDelete(SBRCGrid sbrc, boolean applyIfFound) {
        boolean active = false;
        for (int n = TKMin; n <= TKMax; n++) {
            active = applyTkDelete(sbrc, n, applyIfFound);
            if (active)
                return active;
        }
        return active;
    }

    private static boolean applyTkDelete(SBRCGrid sbrc, int k, boolean applyIfFound) {

        boolean anyRemoved = false;
        Map<Integer, BitSet> eliminations = new HashMap<>();

        for (int dA = 0; dA < 9; dA++) {

            List<SudokuTemplateGenerator.Template> baseList = templatesByDigit[dA];
            if (baseList == null || baseList.isEmpty())
                continue;

            // build digit universe excluding dA
            int[] otherDigits = new int[8];
            int idx = 0;
            for (int d = 0; d < 9; d++)
                if (d != dA)
                    otherDigits[idx++] = d;

            List<int[]> digitCombos = new ArrayList<>();
            combinations(otherDigits, 0, 0, k - 1,
                    new int[k - 1], digitCombos);

            for (SudokuTemplateGenerator.Template tA : baseList) {

                TemplateInstantiation instA = new TemplateInstantiation(tA);

                boolean survives = true;
                int[] failingCombo = null;

                for (int[] combo : digitCombos) {

                    List<List<SudokuTemplateGenerator.Template>> lists = new ArrayList<>();

                    for (int d : combo) {
                        List<SudokuTemplateGenerator.Template> lst = templatesByDigit[d];
                        if (lst == null || lst.isEmpty()) {
                            lists = null;
                            break;
                        }
                        lists.add(lst);
                    }

                    if (lists == null)
                        continue;

                    List<TemplateInstantiation> chosen = new ArrayList<>();
                    chosen.add(instA);

                    if (!existsCompatibleSet(lists, chosen, 0)) {
                        survives = false;
                        failingCombo = combo;
                        break;
                    }
                }

                if (!survives) {
                    eliminations
                            .computeIfAbsent(dA, x -> new BitSet())
                            .set(tA.id);

                    System.out.print(
                            "T" + k + "-delete: digit " + (dA + 1) +
                                    " template " + tA.id +
                                    " cannot form Template[" + k + "] with digits {");

                    System.out.print(dA + 1);
                    for (int d : failingCombo)
                        System.out.print("," + (d + 1));
                    System.out.println("}");
                }
            }
        }

        if (!eliminations.isEmpty() && applyIfFound)
            anyRemoved = applyTemplateEliminations(eliminations, sbrc);

        return anyRemoved;
    }

    // ============================================================================
    // pom cyclical incremental applications
    // ============================================================================

    private static void POMexe(SBRCGrid sbrc) {
        boolean changed;
        do {
            changed = false;
            if (computeOmissions(sbrc, true)) {
                changed = true;
                continue;
            }
            /*
             * if (computeInclusionsHidden(sbrc, true)) { changed = true; continue; } if
             * (computeExclusionsNaked(sbrc, true)) { changed = true; continue; }
             */

            if (findHiddenSubsetsTemplateSpace(sbrc, true)) {
                changed = true;
                continue;
            }
            if (findNakedSubsetsTemplateSpace(sbrc, true)) {
                changed = true;
                continue;
            }

            if (computeMultiDigitTemplateElimination(sbrc, maxSubsetSize, true)) {
                changed = true;
                continue;
            }

            if (findTKDelete(sbrc, true)) {
                changed = true;
                continue;

            }

        } while (changed);
    }

    // ------------------------------
    // helper tools
    // ---------------------
    private static void combinations(
            int[] src, int start, int depth, int k,
            int[] buffer, List<int[]> out) {

        if (depth == k) {
            out.add(buffer.clone());
            return;
        }

        for (int i = start; i <= src.length - (k - depth); i++) {
            buffer[depth] = src[i];
            combinations(src, i + 1, depth + 1, k, buffer, out);
        }
    }

    private static boolean existsCompatibleSet(
            List<List<SudokuTemplateGenerator.Template>> lists,
            List<TemplateInstantiation> chosen,
            int idx) {

        if (idx == lists.size())
            return true;

        for (SudokuTemplateGenerator.Template tpl : lists.get(idx)) {

            boolean ok = true;
            for (TemplateInstantiation prev : chosen) {
                if (!prev.isCompatible(tpl)) {
                    ok = false;
                    break;
                }
            }

            if (!ok)
                continue;

            TemplateInstantiation inst = new TemplateInstantiation(tpl);
            chosen.add(inst);

            if (existsCompatibleSet(lists, chosen, idx + 1))
                return true;

            chosen.remove(chosen.size() - 1);
        }
        return false;
    }

    // -------------------------------------------------------------------------
    // elimiantion application tool
    // -------------------------------------------------------------------------
    private static Boolean applyTemplateEliminations(Map<Integer, BitSet> eliminations, SBRCGrid sbrc) {
        boolean anyRemoved = false;
        for (Map.Entry<Integer, BitSet> e : eliminations.entrySet()) {
            int d = e.getKey();
            BitSet toRemoveIdx = e.getValue();
            List<SudokuTemplateGenerator.Template> tlist = templatesByDigit[d];
            if (tlist == null || tlist.isEmpty())
                continue;
            List<SudokuTemplateGenerator.Template> newList = new ArrayList<>();
            for (SudokuTemplateGenerator.Template tpl : tlist) {
                if (!toRemoveIdx.get(tpl.id))
                    newList.add(tpl);
                else {
                    System.out.println("  (applied) removed template " + tpl.id + " for digit " + (d + 1));
                    anyRemoved = true;
                }
            }
            templatesByDigit[d] = newList;

            // rebuild DigitTemplates
            for (int c = 0; c < 81; c++)
                DigitTemplates[d][c] = new BitSet();
            for (SudokuTemplateGenerator.Template tpl : newList) {
                BitSet cells = SetOps.intersection(sbrc.digitcell[d], tpl.cells);
                for (int cell = cells.nextSetBit(0); cell >= 0; cell = cells.nextSetBit(cell + 1))
                    DigitTemplates[d][cell].set(tpl.id);
            }
        }
        return anyRemoved;
    }

    private static boolean boxEnforcer(int sector, int positionSize, int PowerSetIndex) {
        if (sector >= 18)
            return false;
        if (positionSize == 0 && DUPLICATES_C.get(PowerSetIndex))
            return true;
        if (positionSize == 1 && DUPLICATES_A.get(PowerSetIndex))
            return true;
        if (positionSize == 2 && DUPLICATES_B.get(PowerSetIndex))
            return true;
        return false;
    }

    private static void printTemplates(List<SudokuTemplateGenerator.Template> templates) {
        System.out.println("templates: " + templates.size());
        for (SudokuTemplateGenerator.Template t : templates) {
            System.out.print("Template " + t.id + ": ");
            System.out.println(ToStringUtils.cellGroupToString(t.cells));
        }
    }

    private static void printDigitTemplates(BitSet[][] digitTemplates) {
        for (int d = 0; d < 9; d++) {
            int totalTemplates = templatesByDigit[d] != null ? templatesByDigit[d].size() : 0;
            System.out.println("Digit " + (d + 1) + ": total templates = " + totalTemplates);

            for (int c = 0; c < 81; c++) {
                BitSet dt = digitTemplates[d][c];
                if (dt != null && !dt.isEmpty()) {
                    System.out.print("  Cell r" + (c / 9 + 1) + "c" + (c % 9 + 1) + " -> Templates: ");
                    List<Integer> tplIds = new ArrayList<>();
                    for (int id = dt.nextSetBit(0); id >= 0; id = dt.nextSetBit(id + 1))
                        tplIds.add(id);
                    System.out.println(tplIds);
                }
            }
            System.out.println();
        }
    }
}
my code has :
Naked / Hidden subsets size (1 - 4)
ommission - any cells not used by any of the Grids allowable templates is exluded
N cells holding all templates of digit a then any other [digit b] template[y] in full occuping all n cells is excluded.

T(K) delete: digit search where K = 2->8
Some do, some teach, the rest look it up.
stormdoku
User avatar
StrmCkr
 
Posts: 1492
Joined: 05 September 2006

Re: Pattern Overlay Method

Postby StrmCkr » Wed Dec 24, 2025 9:56 am

my results for Tungsten Rod
Code: Select all
000000007020400060100000500090002040000800600600900000005003000030080020700004001

with a max depth of "T6" reached currently. run time: POM: (18489.4348ms): {higher time with all the write to screen functions to paste in here}

Code: Select all
Digit 1: total templates = 42
  Cell r1c4 -> Templates: [18192, 18216, 18252, 18270]
  Cell r1c5 -> Templates: [23388, 23406, 23436, 23454]
  Cell r1c6 -> Templates: [28572, 28590, 28610, 28634, 28658, 28668, 28682, 28686]
  Cell r1c7 -> Templates: [34620, 34638, 34668, 34686, 35484, 35502, 35522, 35546, 35570, 35580, 35594, 35598]
  Cell r1c8 -> Templates: [39804, 39852, 39944, 39954, 39974, 39978, 40668, 40706, 40754, 40764, 40808, 40818, 40838, 40842]
  Cell r2c5 -> Templates: [34620, 34638, 34668, 34686, 39804, 39852, 39944, 39954, 39974, 39978]
  Cell r2c6 -> Templates: [35484, 35502, 35522, 35546, 35570, 35580, 35594, 35598, 40668, 40706, 40754, 40764, 40808, 40818, 40838, 40842]
  Cell r2c7 -> Templates: [18192, 18216, 18252, 18270, 23388, 23406, 23436, 23454, 28572, 28590, 28610, 28634, 28658, 28668, 28682, 28686]
  Cell r4c3 -> Templates: [18192, 18216, 23388, 23406, 28572, 28590, 34620, 34638, 35484, 35502, 39804, 40668]
  Cell r4c4 -> Templates: [23436, 23454, 28610, 28634, 34668, 34686, 35522, 35546, 39852, 40706]
  Cell r4c5 -> Templates: [18252, 18270, 28658, 28668, 28682, 28686, 35570, 35580, 35594, 35598, 40754, 40764]
  Cell r4c7 -> Templates: [39944, 39954, 39974, 39978, 40808, 40818, 40838, 40842]
  Cell r5c2 -> Templates: [28610, 28658, 35522, 35570, 39944, 40706, 40754, 40808]
  Cell r5c3 -> Templates: [18252, 23436, 28668, 34668, 35580, 39852, 39954, 40764, 40818]
  Cell r5c5 -> Templates: [18192, 28572, 35484, 40668, 40838, 40842]
  Cell r5c6 -> Templates: [23388, 34620, 39804, 39974, 39978]
  Cell r5c8 -> Templates: [18216, 18270, 23406, 23454, 28590, 28634, 28682, 28686, 34638, 34686, 35502, 35546, 35594, 35598]
  Cell r6c2 -> Templates: [28634, 28682, 35546, 35594, 39974, 40838]
  Cell r6c3 -> Templates: [18270, 23454, 28686, 34686, 35598, 39978, 40842]
  Cell r6c5 -> Templates: [18216, 28590, 35502, 40808, 40818]
  Cell r6c6 -> Templates: [23406, 34638, 39944, 39954]
  Cell r6c7 -> Templates: [39804, 39852, 40668, 40706, 40754, 40764]
  Cell r6c8 -> Templates: [18192, 18252, 23388, 23436, 28572, 28610, 28658, 28668, 34620, 34668, 35484, 35522, 35570, 35580]
  Cell r7c2 -> Templates: [18192, 18216, 18252, 18270, 23388, 23406, 23436, 23454, 28572, 28590, 28668, 28686, 34620, 34638, 34668, 34686, 35484, 35502, 35580, 35598, 39804, 39852, 39954, 39978, 40668, 40764, 40818, 40842]
  Cell r7c4 -> Templates: [28658, 28682, 35570, 35594, 39944, 39974, 40754, 40808, 40838]
  Cell r7c5 -> Templates: [28610, 28634, 35522, 35546, 40706]
  Cell r8c3 -> Templates: [28610, 28634, 28658, 28682, 35522, 35546, 35570, 35594, 39944, 39974, 40706, 40754, 40808, 40838]
  Cell r8c4 -> Templates: [23388, 23406, 28572, 28590, 28668, 28686, 34620, 34638, 35484, 35502, 35580, 35598, 39804, 39954, 39978, 40668, 40764, 40818, 40842]
  Cell r8c6 -> Templates: [18192, 18216, 18252, 18270, 23436, 23454, 34668, 34686, 39852]

Digit 2: total templates = 10
  Cell r1c4 -> Templates: [17139, 17149]
  Cell r1c5 -> Templates: [22323, 22333]
  Cell r1c7 -> Templates: [32121, 32131, 32155, 32409, 32419, 32443]
  Cell r3c4 -> Templates: [32121, 32131, 32155]
  Cell r3c5 -> Templates: [32409, 32419, 32443]
  Cell r3c9 -> Templates: [17139, 17149, 22323, 22333]
  Cell r5c1 -> Templates: [17139, 22323, 32121, 32409]
  Cell r5c3 -> Templates: [17149, 22333, 32131, 32419]
  Cell r5c9 -> Templates: [32155, 32443]
  Cell r6c3 -> Templates: [32155, 32443]
  Cell r6c7 -> Templates: [17139, 17149, 22323, 22333]
  Cell r6c9 -> Templates: [32121, 32131, 32409, 32419]
  Cell r7c1 -> Templates: [17149, 22333, 32131, 32155, 32419, 32443]
  Cell r7c4 -> Templates: [22323, 32409]
  Cell r7c5 -> Templates: [17139, 32121]
  Cell r9c3 -> Templates: [17139, 22323, 32121, 32409]
  Cell r9c4 -> Templates: [22333, 32419, 32443]
  Cell r9c5 -> Templates: [17149, 32131, 32155]

Digit 3: total templates = 113
  Cell r1c1 -> Templates: [1268, 1292, 1550, 1556, 1580, 2648, 2678, 2708, 2732, 2846, 2864, 2996, 3020, 4370, 4376, 4406, 4430, 4436, 4460, 4526, 4544, 4718, 4724, 4748]
  Cell r1c3 -> Templates: [11624, 11906, 11912, 12968, 12998, 13064, 13202, 13352, 14690, 14696, 14726, 14786, 14792, 14882, 15074, 15080]
  Cell r1c4 -> Templates: [15896, 15926, 15956, 15980, 16094, 16112, 16178, 16184, 16214, 16238, 16244, 16268, 16334, 16352, 17576, 17606, 17672, 17810, 17858, 17864, 17894, 17954, 17960, 18050, 18728, 18758, 18824, 18962, 20450, 20456, 20486, 20546, 20552, 20642]
  Cell r1c5 -> Templates: [21140, 21164, 21422, 21428, 21452, 22856, 23138, 23144, 24008, 25730, 25736]
  Cell r1c7 -> Templates: [31160, 31190, 31220, 31244, 31358, 31376, 31508, 31532, 32840, 32870, 32936, 33074, 33224, 35240]
  Cell r1c8 -> Templates: [36344, 36374, 36404, 36428, 36542, 36560, 36692, 36716, 38024, 38054, 38120, 38258, 38408, 40424]
  Cell r2c1 -> Templates: [15896, 15926, 15956, 15980, 16094, 16112, 16178, 16184, 16214, 16238, 16244, 16268, 16334, 16352, 21140, 21164, 21422, 21428, 21452, 31160, 31190, 31220, 31244, 31358, 31376, 31508, 31532, 36344, 36374, 36404, 36428, 36542, 36560, 36692, 36716]
  Cell r2c3 -> Templates: [17576, 17606, 17672, 17810, 17858, 17864, 17894, 17954, 17960, 18050, 22856, 23138, 23144, 32840, 32870, 32936, 33074, 33224, 38024, 38054, 38120, 38258, 38408]
  Cell r2c5 -> Templates: [1268, 1292, 1550, 1556, 1580, 11624, 11906, 11912, 35240, 40424]
  Cell r2c7 -> Templates: [2648, 2678, 2708, 2732, 2846, 2864, 2996, 3020, 12968, 12998, 13064, 13202, 13352, 18728, 18758, 18824, 18962, 24008]
  Cell r2c9 -> Templates: [4370, 4376, 4406, 4430, 4436, 4460, 4526, 4544, 4718, 4724, 4748, 14690, 14696, 14726, 14786, 14792, 14882, 15074, 15080, 20450, 20456, 20486, 20546, 20552, 20642, 25730, 25736]
  Cell r3c3 -> Templates: [18728, 18758, 18824, 18962, 20450, 20456, 20486, 20546, 20552, 20642, 24008, 25730, 25736, 35240, 40424]
  Cell r3c4 -> Templates: [2648, 2678, 2708, 2732, 2846, 2864, 4370, 4376, 4406, 4430, 4436, 4460, 4526, 4544, 12968, 12998, 13064, 13202, 14690, 14696, 14726, 14786, 14792, 14882, 31160, 31190, 31220, 31244, 31358, 31376, 32840, 32870, 32936, 33074, 36344, 36374, 36404, 36428, 36542, 36560, 38024, 38054, 38120, 38258]
  Cell r3c5 -> Templates: [2996, 3020, 4718, 4724, 4748, 13352, 15074, 15080, 31508, 31532, 33224, 36692, 36716, 38408]
  Cell r3c8 -> Templates: [1268, 1292, 11624, 15896, 15926, 15956, 15980, 16094, 16112, 17576, 17606, 17672, 17810, 21140, 21164, 22856]
  Cell r3c9 -> Templates: [1550, 1556, 1580, 11906, 11912, 16178, 16184, 16214, 16238, 16244, 16268, 16334, 16352, 17858, 17864, 17894, 17954, 17960, 18050, 21422, 21428, 21452, 23138, 23144]
  Cell r4c1 -> Templates: [12968, 12998, 14690, 14696, 14726, 17576, 17606, 17858, 17864, 17894, 18728, 18758, 20450, 20456, 20486, 32840, 32870, 38024, 38054]
  Cell r4c3 -> Templates: [2648, 2678, 4370, 4376, 4406, 15896, 15926, 16178, 16184, 16214, 31160, 31190, 36344, 36374]
  Cell r4c4 -> Templates: [1268, 1292, 1550, 1556, 1580, 2996, 3020, 4718, 4724, 4748, 11624, 11906, 11912, 13352, 15074, 15080, 21140, 21164, 21422, 21428, 21452, 22856, 23138, 23144, 24008, 25730, 25736, 31508, 31532, 33224, 35240, 36692, 36716, 38408, 40424]
  Cell r4c5 -> Templates: [2708, 2732, 4430, 4436, 4460, 13064, 14786, 14792, 15956, 15980, 16238, 16244, 16268, 17672, 17954, 17960, 18824, 20546, 20552, 31220, 31244, 32936, 36404, 36428, 38120]
  Cell r4c7 -> Templates: [4526, 4544, 14882, 16334, 16352, 18050, 20642]
  Cell r4c9 -> Templates: [2846, 2864, 13202, 16094, 16112, 17810, 18962, 31358, 31376, 33074, 36542, 36560, 38258]
  Cell r5c1 -> Templates: [11624, 11906, 11912, 13064, 13202, 13352, 14786, 14792, 14882, 15074, 15080, 17672, 17810, 17954, 17960, 18050, 18824, 18962, 20546, 20552, 20642, 22856, 23138, 23144, 24008, 25730, 25736, 32936, 33074, 33224, 35240, 38120, 38258, 38408, 40424]
  Cell r5c3 -> Templates: [1268, 1550, 1556, 2708, 2846, 2996, 4430, 4436, 4526, 4718, 4724, 15956, 16094, 16238, 16244, 16334, 21140, 21422, 21428, 31220, 31358, 31508, 36404, 36542, 36692]
  Cell r5c5 -> Templates: [2648, 2864, 4370, 4376, 4544, 12968, 14690, 14696, 15896, 16112, 16178, 16184, 16352, 17576, 17858, 17864, 18728, 20450, 20456, 31160, 31376, 32840, 36344, 36560, 38024]
  Cell r5c8 -> Templates: [1580, 4406, 4460, 4748, 14726, 16214, 16268, 17894, 20486, 21452]
  Cell r5c9 -> Templates: [1292, 2678, 2732, 3020, 12998, 15926, 15980, 17606, 18758, 21164, 31190, 31244, 31532, 32870, 36374, 36428, 36716, 38054]
  Cell r6c3 -> Templates: [1292, 1580, 2732, 2864, 3020, 4460, 4544, 4748, 15980, 16112, 16268, 16352, 21164, 21452, 31244, 31376, 31532, 36428, 36560, 36716]
  Cell r6c5 -> Templates: [2678, 2846, 4406, 4526, 12998, 13202, 14726, 14882, 15926, 16094, 16214, 16334, 17606, 17810, 17894, 18050, 18758, 18962, 20486, 20642, 31190, 31358, 32870, 33074, 36374, 36542, 38054, 38258]
  Cell r6c7 -> Templates: [1550, 4370, 4430, 4718, 11906, 14690, 14786, 15074, 16178, 16238, 17858, 17954, 20450, 20546, 21422, 23138, 25730]
  Cell r6c8 -> Templates: [1556, 4376, 4436, 4724, 11912, 14696, 14792, 15080, 16184, 16244, 17864, 17960, 20456, 20552, 21428, 23144, 25736]
  Cell r6c9 -> Templates: [1268, 2648, 2708, 2996, 11624, 12968, 13064, 13352, 15896, 15956, 17576, 17672, 18728, 18824, 21140, 22856, 24008, 31160, 31220, 31508, 32840, 32936, 33224, 35240, 36344, 36404, 36692, 38024, 38120, 38408, 40424]
  Cell r9c7 -> Templates: [1268, 1292, 1556, 1580, 4376, 4406, 4436, 4460, 4724, 4748, 11624, 11912, 14696, 14726, 14792, 15080, 15896, 15926, 15956, 15980, 16094, 16112, 16184, 16214, 16244, 16268, 17576, 17606, 17672, 17810, 17864, 17894, 17960, 20456, 20486, 20552, 21140, 21164, 21428, 21452, 22856, 23144, 25736, 36344, 36374, 36404, 36428, 36542, 36560, 36692, 36716, 38024, 38054, 38120, 38258, 38408, 40424]
  Cell r9c8 -> Templates: [1550, 2648, 2678, 2708, 2732, 2846, 2864, 2996, 3020, 4370, 4430, 4526, 4544, 4718, 11906, 12968, 12998, 13064, 13202, 13352, 14690, 14786, 14882, 15074, 16178, 16238, 16334, 16352, 17858, 17954, 18050, 18728, 18758, 18824, 18962, 20450, 20546, 20642, 21422, 23138, 24008, 25730, 31160, 31190, 31220, 31244, 31358, 31376, 31508, 31532, 32840, 32870, 32936, 33074, 33224, 35240]

Digit 4: total templates = 24
  Cell r1c1 -> Templates: [820, 829, 844, 847]
  Cell r1c2 -> Templates: [6004, 6013, 6016, 6031, 6034]
  Cell r1c3 -> Templates: [11185, 11197, 11200, 11215, 11218]
  Cell r1c7 -> Templates: [34180, 34189, 34192, 34207, 34210, 34465, 34477, 34480, 34495, 34498]
  Cell r3c2 -> Templates: [34180, 34189, 34192, 34207, 34210]
  Cell r3c3 -> Templates: [34465, 34477, 34480, 34495, 34498]
  Cell r3c9 -> Templates: [820, 829, 844, 847, 6004, 6013, 6016, 6031, 6034, 11185, 11197, 11200, 11215, 11218]
  Cell r5c1 -> Templates: [6004, 11185, 34180, 34465]
  Cell r5c2 -> Templates: [820, 11197, 11200, 34477, 34480]
  Cell r5c3 -> Templates: [829, 6013, 6016, 34189, 34192]
  Cell r5c5 -> Templates: [844, 847, 6031, 6034, 11215, 11218, 34207, 34210, 34495, 34498]
  Cell r6c2 -> Templates: [844, 11215, 11218, 34495, 34498]
  Cell r6c3 -> Templates: [847, 6031, 6034, 34207, 34210]
  Cell r6c5 -> Templates: [820, 829, 6004, 6013, 6016, 11185, 11197, 11200, 34180, 34189, 34192, 34465, 34477, 34480]
  Cell r7c1 -> Templates: [6013, 6031, 11197, 11215, 34189, 34207, 34477, 34495]
  Cell r7c2 -> Templates: [829, 847, 11185, 34465]
  Cell r7c7 -> Templates: [820, 844, 6004, 6016, 6034, 11200, 11218]
  Cell r7c9 -> Templates: [34180, 34192, 34210, 34480, 34498]
  Cell r8c1 -> Templates: [6016, 6034, 11200, 11218, 34192, 34210, 34480, 34498]
  Cell r8c3 -> Templates: [820, 844, 6004, 34180]
  Cell r8c7 -> Templates: [829, 847, 6013, 6031, 11185, 11197, 11215]
  Cell r8c9 -> Templates: [34189, 34207, 34465, 34477, 34495]

Digit 5: total templates = 42
  Cell r1c1 -> Templates: [966, 996, 1110, 1140, 1825, 1849, 1873, 1878, 1897, 1908, 1974, 2004]
  Cell r1c2 -> Templates: [6061, 6066, 6079, 6090, 6150, 6294, 6925, 6930, 6943, 6954, 7009, 7057, 7062, 7158]
  Cell r1c4 -> Templates: [15654, 15684, 15792, 15816]
  Cell r1c5 -> Templates: [20838, 20868, 20982, 21012]
  Cell r1c6 -> Templates: [26017, 26041, 26065, 26070, 26089, 26100, 26166, 26196]
  Cell r2c1 -> Templates: [15654, 15684, 15792, 15816, 20838, 20868, 20982, 21012, 26017, 26041, 26065, 26070, 26089, 26100, 26166, 26196]
  Cell r2c5 -> Templates: [966, 996, 1110, 1140, 6061, 6066, 6079, 6090, 6150, 6294]
  Cell r2c6 -> Templates: [1825, 1849, 1873, 1878, 1897, 1908, 1974, 2004, 6925, 6930, 6943, 6954, 7009, 7057, 7062, 7158]
  Cell r4c1 -> Templates: [6061, 6066, 6079, 6090, 6925, 6930, 6943, 6954]
  Cell r4c4 -> Templates: [966, 996, 1825, 1849, 6150, 7009, 20838, 20868, 26017, 26041]
  Cell r4c5 -> Templates: [1873, 1878, 1897, 1908, 7057, 7062, 15654, 15684, 26065, 26070, 26089, 26100]
  Cell r4c9 -> Templates: [1110, 1140, 1974, 2004, 6294, 7158, 15792, 15816, 20982, 21012, 26166, 26196]
  Cell r5c1 -> Templates: [6150, 6294, 7009, 7057, 7062, 7158]
  Cell r5c2 -> Templates: [966, 1110, 1825, 1873, 1878, 1974, 15654, 15792, 20838, 20982, 26017, 26065, 26070, 26166]
  Cell r5c5 -> Templates: [2004, 6925, 6930, 15816, 26196]
  Cell r5c6 -> Templates: [1140, 6061, 6066, 21012]
  Cell r5c8 -> Templates: [1849, 1897, 6079, 6943, 26041, 26089]
  Cell r5c9 -> Templates: [996, 1908, 6090, 6954, 15684, 20868, 26100]
  Cell r6c2 -> Templates: [996, 1140, 1849, 1897, 1908, 2004, 15684, 15816, 20868, 21012, 26041, 26089, 26100, 26196]
  Cell r6c5 -> Templates: [1974, 6943, 6954, 7158, 15792, 26166]
  Cell r6c6 -> Templates: [1110, 6079, 6090, 6294, 20982]
  Cell r6c8 -> Templates: [1825, 1873, 6061, 6925, 7009, 7057, 26017, 26065]
  Cell r6c9 -> Templates: [966, 1878, 6066, 6150, 6930, 7062, 15654, 20838, 26070]
  Cell r8c4 -> Templates: [1110, 1140, 1878, 1908, 1974, 2004, 6066, 6090, 6294, 6930, 6954, 7062, 7158, 20982, 21012, 26070, 26100, 26166, 26196]
  Cell r8c6 -> Templates: [966, 996, 6150, 15654, 15684, 15792, 15816, 20838, 20868]
  Cell r8c9 -> Templates: [1825, 1849, 1873, 1897, 6061, 6079, 6925, 6943, 7009, 7057, 26017, 26041, 26065, 26089]
  Cell r9c4 -> Templates: [1873, 1897, 6061, 6079, 6925, 6943, 7057, 26065, 26089]
  Cell r9c5 -> Templates: [1825, 1849, 7009, 26017, 26041]
  Cell r9c8 -> Templates: [966, 996, 1110, 1140, 1878, 1908, 1974, 2004, 6066, 6090, 6150, 6294, 6930, 6954, 7062, 7158, 15654, 15684, 15792, 15816, 20838, 20868, 20982, 21012, 26070, 26100, 26166, 26196]

Digit 6: total templates = 28
  Cell r1c2 -> Templates: [8765, 9053, 9339, 9340, 9387, 9388, 9389]
  Cell r1c3 -> Templates: [13949, 14237, 14521, 14523, 14569, 14571, 14573]
  Cell r1c4 -> Templates: [19421, 19709]
  Cell r1c5 -> Templates: [24605, 24893]
  Cell r1c6 -> Templates: [29787, 29788, 29835, 29836, 29837, 30073, 30075, 30121, 30123, 30125]
  Cell r3c2 -> Templates: [19421, 24605, 29787, 29788, 29835, 29836, 29837]
  Cell r3c3 -> Templates: [19709, 24893, 30073, 30075, 30121, 30123, 30125]
  Cell r3c4 -> Templates: [8765, 13949]
  Cell r3c5 -> Templates: [9053, 14237]
  Cell r3c6 -> Templates: [9339, 9340, 9387, 9388, 9389, 14521, 14523, 14569, 14571, 14573]
  Cell r4c4 -> Templates: [9053, 9339, 9340, 14237, 14521, 14523, 24605, 24893, 29787, 29788, 30073, 30075]
  Cell r4c5 -> Templates: [8765, 9387, 9388, 9389, 13949, 14569, 14571, 14573, 19421, 19709, 29835, 29836, 29837, 30121, 30123, 30125]
  Cell r7c2 -> Templates: [14521, 14569, 30073, 30121]
  Cell r7c4 -> Templates: [9387, 14571, 29835, 30123]
  Cell r7c5 -> Templates: [9339, 14523, 29787, 30075]
  Cell r7c9 -> Templates: [8765, 9053, 9340, 9388, 9389, 13949, 14237, 14573, 19421, 19709, 24605, 24893, 29788, 29836, 29837, 30125]
  Cell r8c3 -> Templates: [9340, 9388, 29788, 29836]
  Cell r8c4 -> Templates: [9389, 14573, 29837, 30125]
  Cell r8c6 -> Templates: [8765, 9053, 13949, 14237, 19421, 19709, 24605, 24893]
  Cell r8c9 -> Templates: [9339, 9387, 14521, 14523, 14569, 14571, 29787, 29835, 30073, 30075, 30121, 30123]
  Cell r9c2 -> Templates: [13949, 14237, 14523, 14571, 14573, 19709, 24893, 30075, 30123, 30125]
  Cell r9c3 -> Templates: [8765, 9053, 9339, 9387, 9389, 19421, 24605, 29787, 29835, 29837]
  Cell r9c4 -> Templates: [9388, 14569, 29836, 30121]
  Cell r9c5 -> Templates: [9340, 14521, 29788, 30073]

Digit 7: total templates = 57
  Cell r2c3 -> Templates: [43313, 43319, 43343, 43409, 43427, 43601, 43607, 43631, 43703, 43727, 43893, 43917, 43937, 43941, 43943, 43965, 43967, 43991, 44015]
  Cell r2c5 -> Templates: [45281, 45285, 45287, 45309, 45311, 45329, 45335, 45359, 45431, 45455, 45617, 45623, 45647, 45719, 45743]
  Cell r2c6 -> Templates: [46145, 46149, 46151, 46173, 46175, 46197, 46221, 46241, 46245, 46247, 46269, 46271, 46295, 46319, 46485, 46509, 46529, 46533, 46535, 46557, 46559, 46583, 46607]
  Cell r3c2 -> Templates: [45281, 45285, 45287, 45309, 45311, 45329, 45335, 45359, 45431, 45455, 46145, 46149, 46151, 46173, 46175, 46197, 46221, 46241, 46245, 46247, 46269, 46271, 46295, 46319]
  Cell r3c3 -> Templates: [45617, 45623, 45647, 45719, 45743, 46485, 46509, 46529, 46533, 46535, 46557, 46559, 46583, 46607]
  Cell r3c4 -> Templates: [43313, 43319, 43343, 43409, 43427]
  Cell r3c5 -> Templates: [43601, 43607, 43631, 43703, 43727]
  Cell r3c6 -> Templates: [43893, 43917, 43937, 43941, 43943, 43965, 43967, 43991, 44015]
  Cell r4c3 -> Templates: [45281, 45285, 45287, 45309, 45311, 46145, 46149, 46151, 46173, 46175]
  Cell r4c4 -> Templates: [43601, 43607, 43631, 43893, 43917, 45329, 45335, 45359, 45617, 45623, 45647, 46197, 46221, 46485, 46509]
  Cell r4c5 -> Templates: [43313, 43319, 43343, 43937, 43941, 43943, 43965, 43967, 46241, 46245, 46247, 46269, 46271, 46529, 46533, 46535, 46557, 46559]
  Cell r4c7 -> Templates: [43409, 43427, 43703, 43727, 43991, 44015, 45431, 45455, 45719, 45743, 46295, 46319, 46583, 46607]
  Cell r5c2 -> Templates: [43313, 43319, 43409, 43601, 43607, 43703, 43893, 43937, 43941, 43943, 43991, 45617, 45623, 45719, 46485, 46529, 46533, 46535, 46583]
  Cell r5c3 -> Templates: [45329, 45335, 45431, 46197, 46241, 46245, 46247, 46295]
  Cell r5c5 -> Templates: [43427, 44015, 46145, 46149, 46151, 46319, 46607]
  Cell r5c6 -> Templates: [43727, 45281, 45285, 45287, 45455, 45743]
  Cell r5c8 -> Templates: [43343, 43631, 43917, 43965, 43967, 45309, 45311, 45359, 45647, 46173, 46175, 46221, 46269, 46271, 46509, 46557, 46559]
  Cell r6c2 -> Templates: [43343, 43427, 43631, 43727, 43917, 43965, 43967, 44015, 45647, 45743, 46509, 46557, 46559, 46607]
  Cell r6c3 -> Templates: [45359, 45455, 46221, 46269, 46271, 46319]
  Cell r6c5 -> Templates: [43409, 43991, 46173, 46175, 46295, 46583]
  Cell r6c6 -> Templates: [43703, 45309, 45311, 45431, 45719]
  Cell r6c7 -> Templates: [43313, 43601, 43937, 45281, 45329, 45617, 46145, 46241, 46529]
  Cell r6c8 -> Templates: [43319, 43607, 43893, 43941, 43943, 45285, 45287, 45335, 45623, 46149, 46151, 46197, 46245, 46247, 46485, 46533, 46535]
  Cell r7c4 -> Templates: [43941, 43965, 45285, 45309, 46149, 46173, 46245, 46269, 46533, 46557]
  Cell r7c5 -> Templates: [43893, 43917, 46197, 46221, 46485, 46509]
  Cell r7c7 -> Templates: [43319, 43343, 43607, 43631, 43943, 43967, 45287, 45311, 45335, 45359, 45623, 45647, 46151, 46175, 46247, 46271, 46535, 46559]
  Cell r7c8 -> Templates: [43313, 43409, 43427, 43601, 43703, 43727, 43937, 43991, 44015, 45281, 45329, 45431, 45455, 45617, 45719, 45743, 46145, 46241, 46295, 46319, 46529, 46583, 46607]
  Cell r8c4 -> Templates: [43703, 43727, 43937, 43943, 43967, 43991, 44015, 45281, 45287, 45311, 45431, 45455, 45719, 45743, 46145, 46151, 46175, 46241, 46247, 46271, 46295, 46319, 46529, 46535, 46559, 46583, 46607]
  Cell r8c6 -> Templates: [43313, 43319, 43343, 43409, 43427, 43601, 43607, 43631, 45329, 45335, 45359, 45617, 45623, 45647]
  Cell r8c7 -> Templates: [43893, 43917, 43941, 43965, 45285, 45309, 46149, 46173, 46197, 46221, 46245, 46269, 46485, 46509, 46533, 46557]

Digit 8: total templates = 144
  Cell r1c1 -> Templates: [2069, 2070, 2075, 2237, 2243, 2285, 2286, 2291, 2352, 2357, 2358, 2363, 2525, 2526, 2531, 3221, 3222, 3227, 3437, 3438, 3443, 4944, 4949, 4950, 4955, 5117, 5118, 5123]
  Cell r1c2 -> Templates: [7205, 7211, 7254, 7470, 7493, 7499, 7536, 7542, 7710, 8357, 8363, 8406, 8622, 10085, 10091, 10128, 10134, 10302]
  Cell r1c3 -> Templates: [12389, 12390, 12395, 12654, 12672, 12677, 12678, 12683, 12894, 13541, 13542, 13547, 13806, 15264, 15269, 15270, 15275, 15486]
  Cell r1c6 -> Templates: [26261, 26262, 26267, 26429, 26435, 26477, 26478, 26483, 26544, 26549, 26550, 26555, 26717, 26718, 26723, 27941, 27942, 27947, 28206, 28224, 28229, 28230, 28235, 28446, 28805, 28811, 28854, 29070, 29093, 29094, 29099, 29358, 30533, 30539, 30576, 30582, 30750, 30816, 30821, 30822, 30827, 31038]
  Cell r1c7 -> Templates: [31733, 31734, 31739, 31949, 31950, 31955, 33413, 33414, 33419, 33678, 35717, 35723, 35766, 35982, 36005, 36006, 36011, 36270]
  Cell r1c8 -> Templates: [36917, 36918, 36923, 37085, 37091, 37133, 37134, 37139, 38597, 38598, 38603, 38862, 40901, 40907, 40950, 41166, 41189, 41190, 41195, 41454]
  Cell r2c1 -> Templates: [26261, 26262, 26267, 26429, 26435, 26477, 26478, 26483, 26544, 26549, 26550, 26555, 26717, 26718, 26723, 31733, 31734, 31739, 31949, 31950, 31955, 36917, 36918, 36923, 37085, 37091, 37133, 37134, 37139]
  Cell r2c3 -> Templates: [27941, 27942, 27947, 28206, 28224, 28229, 28230, 28235, 28446, 33413, 33414, 33419, 33678, 38597, 38598, 38603, 38862]
  Cell r2c6 -> Templates: [2069, 2070, 2075, 2237, 2243, 2285, 2286, 2291, 2352, 2357, 2358, 2363, 2525, 2526, 2531, 7205, 7211, 7254, 7470, 7493, 7499, 7536, 7542, 7710, 12389, 12390, 12395, 12654, 12672, 12677, 12678, 12683, 12894, 35717, 35723, 35766, 35982, 36005, 36006, 36011, 36270, 40901, 40907, 40950, 41166, 41189, 41190, 41195, 41454]
  Cell r2c7 -> Templates: [3221, 3222, 3227, 3437, 3438, 3443, 8357, 8363, 8406, 8622, 13541, 13542, 13547, 13806, 28805, 28811, 28854, 29070, 29093, 29094, 29099, 29358]
  Cell r2c9 -> Templates: [4944, 4949, 4950, 4955, 5117, 5118, 5123, 10085, 10091, 10128, 10134, 10302, 15264, 15269, 15270, 15275, 15486, 30533, 30539, 30576, 30582, 30750, 30816, 30821, 30822, 30827, 31038]
  Cell r3c2 -> Templates: [28805, 28811, 28854, 29070, 30533, 30539, 30576, 30582, 30750, 35717, 35723, 35766, 35982, 40901, 40907, 40950, 41166]
  Cell r3c3 -> Templates: [29093, 29094, 29099, 29358, 30816, 30821, 30822, 30827, 31038, 36005, 36006, 36011, 36270, 41189, 41190, 41195, 41454]
  Cell r3c6 -> Templates: [3221, 3222, 3227, 3437, 3438, 3443, 4944, 4949, 4950, 4955, 5117, 5118, 5123, 8357, 8363, 8406, 8622, 10085, 10091, 10128, 10134, 10302, 13541, 13542, 13547, 13806, 15264, 15269, 15270, 15275, 15486, 31733, 31734, 31739, 31949, 31950, 31955, 33413, 33414, 33419, 33678, 36917, 36918, 36923, 37085, 37091, 37133, 37134, 37139, 38597, 38598, 38603, 38862]
  Cell r3c8 -> Templates: [2069, 2070, 2075, 2237, 2243, 2285, 2286, 2291, 7205, 7211, 7254, 7470, 12389, 12390, 12395, 12654, 26261, 26262, 26267, 26429, 26435, 26477, 26478, 26483, 27941, 27942, 27947, 28206]
  Cell r3c9 -> Templates: [2352, 2357, 2358, 2363, 2525, 2526, 2531, 7493, 7499, 7536, 7542, 7710, 12672, 12677, 12678, 12683, 12894, 26544, 26549, 26550, 26555, 26717, 26718, 26723, 28224, 28229, 28230, 28235, 28446]
  Cell r4c1 -> Templates: [7205, 7211, 7493, 7499, 8357, 8363, 10085, 10091, 12389, 12390, 12395, 12672, 12677, 12678, 12683, 13541, 13542, 13547, 15264, 15269, 15270, 15275, 27941, 27942, 27947, 28224, 28229, 28230, 28235, 28805, 28811, 29093, 29094, 29099, 30533, 30539, 30816, 30821, 30822, 30827, 33413, 33414, 33419, 35717, 35723, 36005, 36006, 36011, 38597, 38598, 38603, 40901, 40907, 41189, 41190, 41195]
  Cell r4c3 -> Templates: [2069, 2070, 2075, 2352, 2357, 2358, 2363, 3221, 3222, 3227, 4944, 4949, 4950, 4955, 7254, 7536, 7542, 8406, 10128, 10134, 26261, 26262, 26267, 26544, 26549, 26550, 26555, 28854, 30576, 30582, 31733, 31734, 31739, 35766, 36917, 36918, 36923, 40950]
  Cell r4c7 -> Templates: [2237, 2243, 2525, 2526, 2531, 5117, 5118, 5123, 7710, 10302, 12894, 15486, 26429, 26435, 26717, 26718, 26723, 28446, 30750, 31038, 37085, 37091]
  Cell r4c9 -> Templates: [2285, 2286, 2291, 3437, 3438, 3443, 7470, 8622, 12654, 13806, 26477, 26478, 26483, 28206, 29070, 29358, 31949, 31950, 31955, 33678, 35982, 36270, 37133, 37134, 37139, 38862, 41166, 41454]
  Cell r6c2 -> Templates: [2237, 2285, 2525, 3437, 5117, 12654, 12894, 13806, 15486, 26429, 26477, 26717, 28206, 28446, 29358, 31038, 31949, 33678, 36270, 37085, 37133, 38862, 41454]
  Cell r6c3 -> Templates: [2243, 2286, 2291, 2526, 2531, 3438, 3443, 5118, 5123, 7470, 7710, 8622, 10302, 26435, 26478, 26483, 26718, 26723, 29070, 30750, 31950, 31955, 35982, 37091, 37134, 37139, 41166]
  Cell r6c7 -> Templates: [2069, 2352, 2357, 4944, 4949, 7205, 7493, 7536, 10085, 10128, 12389, 12672, 12677, 15264, 15269, 26261, 26544, 26549, 27941, 28224, 28229, 30533, 30576, 30816, 30821, 36917, 38597, 40901, 41189]
  Cell r6c8 -> Templates: [2358, 2363, 3221, 4950, 4955, 7499, 7542, 8357, 10091, 10134, 12678, 12683, 13541, 15270, 15275, 26550, 26555, 28230, 28235, 28805, 29093, 30539, 30582, 30822, 30827, 31733, 33413, 35717, 36005]
  Cell r6c9 -> Templates: [2070, 2075, 3222, 3227, 7211, 7254, 8363, 8406, 12390, 12395, 13542, 13547, 26262, 26267, 27942, 27947, 28811, 28854, 29094, 29099, 31734, 31739, 33414, 33419, 35723, 35766, 36006, 36011, 36918, 36923, 38598, 38603, 40907, 40950, 41190, 41195]
  Cell r7c1 -> Templates: [7254, 7470, 7536, 7542, 7710, 8406, 8622, 10128, 10134, 10302, 12654, 12894, 13806, 15486, 28206, 28446, 28854, 29070, 29358, 30576, 30582, 30750, 31038, 33678, 35766, 35982, 36270, 38862, 40950, 41166, 41454]
  Cell r7c2 -> Templates: [2070, 2286, 2352, 2358, 2526, 3222, 3438, 4944, 4950, 5118, 12390, 12672, 12678, 13542, 15264, 15270, 26262, 26478, 26544, 26550, 26718, 27942, 28224, 28230, 29094, 30816, 30822, 31734, 31950, 33414, 36006, 36918, 37134, 38598, 41190]
  Cell r7c7 -> Templates: [2075, 2285, 2291, 2363, 4955, 7211, 7499, 10091, 12395, 12683, 15275, 26267, 26477, 26483, 26555, 27947, 28235, 30539, 30827, 36923, 37133, 37139, 38603, 40907, 41195]
  Cell r7c8 -> Templates: [2357, 2525, 2531, 3227, 3437, 3443, 4949, 5117, 5123, 7493, 8363, 10085, 12677, 13547, 15269, 26549, 26717, 26723, 28229, 28811, 29099, 30533, 30821, 31739, 31949, 31955, 33419, 35723, 36011]
  Cell r7c9 -> Templates: [2069, 2237, 2243, 3221, 7205, 8357, 12389, 13541, 26261, 26429, 26435, 27941, 28805, 29093, 31733, 33413, 35717, 36005, 36917, 37085, 37091, 38597, 40901, 41189]
  Cell r9c2 -> Templates: [2069, 2075, 2243, 2291, 2357, 2363, 2531, 3221, 3227, 3443, 4949, 4955, 5123, 12389, 12395, 12677, 12683, 13541, 13547, 15269, 15275, 26261, 26267, 26435, 26483, 26549, 26555, 26723, 27941, 27947, 28229, 28235, 29093, 29099, 30821, 30827, 31733, 31739, 31955, 33413, 33419, 36005, 36011, 36917, 36923, 37091, 37139, 38597, 38603, 41189, 41195]
  Cell r9c3 -> Templates: [2237, 2285, 2525, 3437, 5117, 7205, 7211, 7493, 7499, 8357, 8363, 10085, 10091, 26429, 26477, 26717, 28805, 28811, 30533, 30539, 31949, 35717, 35723, 37085, 37133, 40901, 40907]
  Cell r9c7 -> Templates: [2070, 2286, 2358, 4950, 7254, 7470, 7542, 10134, 12390, 12654, 12678, 15270, 26262, 26478, 26550, 27942, 28206, 28230, 30582, 30822, 36918, 37134, 38598, 38862, 40950, 41166, 41190, 41454]
  Cell r9c8 -> Templates: [2352, 2526, 3222, 3438, 4944, 5118, 7536, 7710, 8406, 8622, 10128, 10302, 12672, 12894, 13542, 13806, 15264, 15486, 26544, 26718, 28224, 28446, 28854, 29070, 29094, 29358, 30576, 30750, 30816, 31038, 31734, 31950, 33414, 33678, 35766, 35982, 36006, 36270]

Digit 9: total templates = 88
  Cell r1c1 -> Templates: [1193, 1481, 2054, 2055, 2056, 2342, 2343, 2344, 2909, 2921, 3195, 3196, 3206, 3208, 4649, 4934, 4935, 4936]
  Cell r1c3 -> Templates: [11604, 11892, 12469, 12470, 12472, 12757, 12758, 12760, 13332, 13609, 13612, 13622, 13624, 15060, 15349, 15350, 15352]
  Cell r1c5 -> Templates: [21065, 21353, 22836, 23124, 23988, 25716]
  Cell r1c6 -> Templates: [26246, 26247, 26248, 26534, 26535, 26536, 28021, 28022, 28024, 28309, 28310, 28312, 29161, 29164, 29174, 29176, 30901, 30902, 30904]
  Cell r1c7 -> Templates: [31421, 31433, 31707, 31708, 31718, 31720, 33204, 33481, 33484, 33494, 33496, 35220, 36073, 36076, 36086, 36088]
  Cell r1c8 -> Templates: [36617, 36902, 36903, 36904, 38388, 38677, 38678, 38680, 40404, 41269, 41270, 41272]
  Cell r2c1 -> Templates: [21065, 21353, 26246, 26247, 26248, 26534, 26535, 26536, 31421, 31433, 31707, 31708, 31718, 31720, 36617, 36902, 36903, 36904]
  Cell r2c3 -> Templates: [22836, 23124, 28021, 28022, 28024, 28309, 28310, 28312, 33204, 33481, 33484, 33494, 33496, 38388, 38677, 38678, 38680]
  Cell r2c5 -> Templates: [1193, 1481, 11604, 11892, 35220, 40404]
  Cell r2c6 -> Templates: [2054, 2055, 2056, 2342, 2343, 2344, 12469, 12470, 12472, 12757, 12758, 12760, 36073, 36076, 36086, 36088, 41269, 41270, 41272]
  Cell r2c7 -> Templates: [2909, 2921, 3195, 3196, 3206, 3208, 13332, 13609, 13612, 13622, 13624, 23988, 29161, 29164, 29174, 29176]
  Cell r2c9 -> Templates: [4649, 4934, 4935, 4936, 15060, 15349, 15350, 15352, 25716, 30901, 30902, 30904]
  Cell r3c3 -> Templates: [23988, 25716, 29161, 29164, 29174, 29176, 30901, 30902, 30904, 35220, 36073, 36076, 36086, 36088, 40404, 41269, 41270, 41272]
  Cell r3c5 -> Templates: [2909, 2921, 4649, 13332, 15060, 31421, 31433, 33204, 36617, 38388]
  Cell r3c6 -> Templates: [3195, 3196, 3206, 3208, 4934, 4935, 4936, 13609, 13612, 13622, 13624, 15349, 15350, 15352, 31707, 31708, 31718, 31720, 33481, 33484, 33494, 33496, 36902, 36903, 36904, 38677, 38678, 38680]
  Cell r3c8 -> Templates: [1193, 2054, 2055, 2056, 11604, 12469, 12470, 12472, 21065, 22836, 26246, 26247, 26248, 28021, 28022, 28024]
  Cell r3c9 -> Templates: [1481, 2342, 2343, 2344, 11892, 12757, 12758, 12760, 21353, 23124, 26534, 26535, 26536, 28309, 28310, 28312]
  Cell r5c8 -> Templates: [1481, 2342, 2343, 2344, 2909, 3195, 3196, 4649, 4934, 4935, 4936, 11892, 12757, 12758, 12760, 13609, 13612, 15060, 15349, 15350, 15352, 21353, 23124, 25716, 26534, 26535, 26536, 28309, 28310, 28312, 29161, 29164, 30901, 30902, 30904, 31421, 31707, 31708, 33481, 33484, 36073, 36076]
  Cell r5c9 -> Templates: [1193, 2054, 2055, 2056, 2921, 3206, 3208, 11604, 12469, 12470, 12472, 13332, 13622, 13624, 21065, 22836, 23988, 26246, 26247, 26248, 28021, 28022, 28024, 29174, 29176, 31433, 31718, 31720, 33204, 33494, 33496, 35220, 36086, 36088, 36617, 36902, 36903, 36904, 38388, 38677, 38678, 38680, 40404, 41269, 41270, 41272]
  Cell r7c1 -> Templates: [11604, 11892, 12469, 12757, 13332, 13609, 15060, 15349, 22836, 23124, 23988, 25716, 28021, 28309, 29161, 30901, 33204, 33481, 35220, 36073, 38388, 38677, 40404, 41269]
  Cell r7c5 -> Templates: [2054, 2055, 2342, 2343, 3195, 3206, 4934, 4935, 12470, 12758, 13622, 15350, 26246, 26247, 26534, 26535, 28022, 28310, 29174, 30902, 31707, 31718, 33494, 36086, 36902, 36903, 38678, 41270]
  Cell r7c7 -> Templates: [1193, 1481, 2056, 2344, 4649, 4936, 12472, 12760, 15352, 21065, 21353, 26248, 26536, 28024, 28312, 30904, 36617, 36904, 38680, 41272]
  Cell r7c8 -> Templates: [2921, 3208, 13624, 29176, 31433, 31720, 33496, 36088]
  Cell r7c9 -> Templates: [2909, 3196, 13612, 29164, 31421, 31708, 33484, 36076]
  Cell r8c1 -> Templates: [12470, 12472, 12758, 12760, 13612, 13622, 13624, 15350, 15352, 28022, 28024, 28310, 28312, 29164, 29174, 29176, 30902, 30904, 33484, 33494, 33496, 36076, 36086, 36088, 38678, 38680, 41270, 41272]
  Cell r8c3 -> Templates: [2054, 2056, 2342, 2344, 3196, 3206, 3208, 4934, 4936, 26246, 26248, 26534, 26536, 31708, 31718, 31720, 36902, 36904]
  Cell r8c6 -> Templates: [1193, 1481, 2909, 2921, 4649, 11604, 11892, 13332, 15060, 21065, 21353, 22836, 23124, 23988, 25716, 31421, 31433, 33204, 35220, 36617, 38388, 40404]
  Cell r8c7 -> Templates: [2055, 2343, 4935, 12469, 12757, 15349, 26247, 26535, 28021, 28309, 30901, 36903, 38677, 41269]
  Cell r8c9 -> Templates: [3195, 13609, 29161, 31707, 33481, 36073]
  Cell r9c3 -> Templates: [1193, 1481, 2055, 2343, 2909, 2921, 3195, 4649, 4935, 21065, 21353, 26247, 26535, 31421, 31433, 31707, 36617, 36903]
  Cell r9c5 -> Templates: [2056, 2344, 3196, 3208, 4936, 12469, 12472, 12757, 12760, 13609, 13612, 13624, 15349, 15352, 26248, 26536, 28021, 28024, 28309, 28312, 29161, 29164, 29176, 30901, 30904, 31708, 31720, 33481, 33484, 33496, 36073, 36076, 36088, 36904, 38677, 38680, 41269, 41272]
  Cell r9c7 -> Templates: [2054, 2342, 4934, 11604, 11892, 12470, 12758, 15060, 15350, 22836, 23124, 25716, 26246, 26534, 28022, 28310, 30902, 36902, 38388, 38678, 40404, 41270]
  Cell r9c8 -> Templates: [3206, 13332, 13622, 23988, 29174, 31718, 33204, 33494, 35220, 36086]

FOUND HIDDEN-SUBSET: digits=2,4 cells=b3p19 sector=20 size=2
  -> eliminate digit 1 templates={34620, 34638, 34668, 34686, 35484, 35502, 35522, 35546, 35570, 35580, 35594, 35598}
  -> eliminate digit 3 templates={1550, 1556, 1580, 11906, 11912, 16178, 16184, 16214, 16238, 16244, 16268, 16334, 16352, 17858, 17864, 17894, 17954, 17960, 18050, 21422, 21428, 21452, 23138, 23144, 31160, 31190, 31220, 31244, 31358, 31376, 31508, 31532, 32840, 32870, 32936, 33074, 33224, 35240}
  -> eliminate digit 8 templates={2352, 2357, 2358, 2363, 2525, 2526, 2531, 7493, 7499, 7536, 7542, 7710, 12672, 12677, 12678, 12683, 12894, 26544, 26549, 26550, 26555, 26717, 26718, 26723, 28224, 28229, 28230, 28235, 28446, 31733, 31734, 31739, 31949, 31950, 31955, 33413, 33414, 33419, 33678, 35717, 35723, 35766, 35982, 36005, 36006, 36011, 36270}
  -> eliminate digit 9 templates={1481, 2342, 2343, 2344, 11892, 12757, 12758, 12760, 21353, 23124, 26534, 26535, 26536, 28309, 28310, 28312, 31421, 31433, 31707, 31708, 31718, 31720, 33204, 33481, 33484, 33494, 33496, 35220, 36073, 36076, 36086, 36088}
  (applied) removed template 34620 for digit 1
  (applied) removed template 34638 for digit 1
  (applied) removed template 34668 for digit 1
  (applied) removed template 34686 for digit 1
  (applied) removed template 35484 for digit 1
  (applied) removed template 35502 for digit 1
  (applied) removed template 35522 for digit 1
  (applied) removed template 35546 for digit 1
  (applied) removed template 35570 for digit 1
  (applied) removed template 35580 for digit 1
  (applied) removed template 35594 for digit 1
  (applied) removed template 35598 for digit 1
  (applied) removed template 1550 for digit 3
  (applied) removed template 1556 for digit 3
  (applied) removed template 1580 for digit 3
  (applied) removed template 11906 for digit 3
  (applied) removed template 11912 for digit 3
  (applied) removed template 16178 for digit 3
  (applied) removed template 16184 for digit 3
  (applied) removed template 16214 for digit 3
  (applied) removed template 16238 for digit 3
  (applied) removed template 16244 for digit 3
  (applied) removed template 16268 for digit 3
  (applied) removed template 16334 for digit 3
  (applied) removed template 16352 for digit 3
  (applied) removed template 17858 for digit 3
  (applied) removed template 17864 for digit 3
  (applied) removed template 17894 for digit 3
  (applied) removed template 17954 for digit 3
  (applied) removed template 17960 for digit 3
  (applied) removed template 18050 for digit 3
  (applied) removed template 21422 for digit 3
  (applied) removed template 21428 for digit 3
  (applied) removed template 21452 for digit 3
  (applied) removed template 23138 for digit 3
  (applied) removed template 23144 for digit 3
  (applied) removed template 31160 for digit 3
  (applied) removed template 31190 for digit 3
  (applied) removed template 31220 for digit 3
  (applied) removed template 31244 for digit 3
  (applied) removed template 31358 for digit 3
  (applied) removed template 31376 for digit 3
  (applied) removed template 31508 for digit 3
  (applied) removed template 31532 for digit 3
  (applied) removed template 32840 for digit 3
  (applied) removed template 32870 for digit 3
  (applied) removed template 32936 for digit 3
  (applied) removed template 33074 for digit 3
  (applied) removed template 33224 for digit 3
  (applied) removed template 35240 for digit 3
  (applied) removed template 2352 for digit 8
  (applied) removed template 2357 for digit 8
  (applied) removed template 2358 for digit 8
  (applied) removed template 2363 for digit 8
  (applied) removed template 2525 for digit 8
  (applied) removed template 2526 for digit 8
  (applied) removed template 2531 for digit 8
  (applied) removed template 7493 for digit 8
  (applied) removed template 7499 for digit 8
  (applied) removed template 7536 for digit 8
  (applied) removed template 7542 for digit 8
  (applied) removed template 7710 for digit 8
  (applied) removed template 12672 for digit 8
  (applied) removed template 12677 for digit 8
  (applied) removed template 12678 for digit 8
  (applied) removed template 12683 for digit 8
  (applied) removed template 12894 for digit 8
  (applied) removed template 26544 for digit 8
  (applied) removed template 26549 for digit 8
  (applied) removed template 26550 for digit 8
  (applied) removed template 26555 for digit 8
  (applied) removed template 26717 for digit 8
  (applied) removed template 26718 for digit 8
  (applied) removed template 26723 for digit 8
  (applied) removed template 28224 for digit 8
  (applied) removed template 28229 for digit 8
  (applied) removed template 28230 for digit 8
  (applied) removed template 28235 for digit 8
  (applied) removed template 28446 for digit 8
  (applied) removed template 31733 for digit 8
  (applied) removed template 31734 for digit 8
  (applied) removed template 31739 for digit 8
  (applied) removed template 31949 for digit 8
  (applied) removed template 31950 for digit 8
  (applied) removed template 31955 for digit 8
  (applied) removed template 33413 for digit 8
  (applied) removed template 33414 for digit 8
  (applied) removed template 33419 for digit 8
  (applied) removed template 33678 for digit 8
  (applied) removed template 35717 for digit 8
  (applied) removed template 35723 for digit 8
  (applied) removed template 35766 for digit 8
  (applied) removed template 35982 for digit 8
  (applied) removed template 36005 for digit 8
  (applied) removed template 36006 for digit 8
  (applied) removed template 36011 for digit 8
  (applied) removed template 36270 for digit 8
  (applied) removed template 1481 for digit 9
  (applied) removed template 2342 for digit 9
  (applied) removed template 2343 for digit 9
  (applied) removed template 2344 for digit 9
  (applied) removed template 11892 for digit 9
  (applied) removed template 12757 for digit 9
  (applied) removed template 12758 for digit 9
  (applied) removed template 12760 for digit 9
  (applied) removed template 21353 for digit 9
  (applied) removed template 23124 for digit 9
  (applied) removed template 26534 for digit 9
  (applied) removed template 26535 for digit 9
  (applied) removed template 26536 for digit 9
  (applied) removed template 28309 for digit 9
  (applied) removed template 28310 for digit 9
  (applied) removed template 28312 for digit 9
  (applied) removed template 31421 for digit 9
  (applied) removed template 31433 for digit 9
  (applied) removed template 31707 for digit 9
  (applied) removed template 31708 for digit 9
  (applied) removed template 31718 for digit 9
  (applied) removed template 31720 for digit 9
  (applied) removed template 33204 for digit 9
  (applied) removed template 33481 for digit 9
  (applied) removed template 33484 for digit 9
  (applied) removed template 33494 for digit 9
  (applied) removed template 33496 for digit 9
  (applied) removed template 35220 for digit 9
  (applied) removed template 36073 for digit 9
  (applied) removed template 36076 for digit 9
  (applied) removed template 36086 for digit 9
  (applied) removed template 36088 for digit 9
T3-delete: digit 7 template 46535 cannot form Template[3] with digits {7,1,5}
T3-delete: digit 7 template 46559 cannot form Template[3] with digits {7,1,5}
  (applied) removed template 46535 for digit 7
  (applied) removed template 46559 for digit 7
T4-delete: digit 3 template 14786 cannot form Template[4] with digits {3,2,5,6}
T4-delete: digit 5 template 966 cannot form Template[4] with digits {5,1,6,7}
T4-delete: digit 5 template 996 cannot form Template[4] with digits {5,1,6,7}
T4-delete: digit 5 template 1878 cannot form Template[4] with digits {5,1,6,7}
T4-delete: digit 5 template 1908 cannot form Template[4] with digits {5,1,6,7}
T4-delete: digit 5 template 6150 cannot form Template[4] with digits {5,1,6,7}
T4-delete: digit 5 template 7062 cannot form Template[4] with digits {5,1,6,7}
T4-delete: digit 5 template 26070 cannot form Template[4] with digits {5,1,6,7}
T4-delete: digit 5 template 26100 cannot form Template[4] with digits {5,1,6,7}
T4-delete: digit 7 template 45617 cannot form Template[4] with digits {7,1,5,6}
T4-delete: digit 7 template 45623 cannot form Template[4] with digits {7,1,5,6}
T4-delete: digit 7 template 45647 cannot form Template[4] with digits {7,1,5,6}
T4-delete: digit 8 template 41190 cannot form Template[4] with digits {8,1,3,5}
  (applied) removed template 14786 for digit 3
  (applied) removed template 966 for digit 5
  (applied) removed template 996 for digit 5
  (applied) removed template 1878 for digit 5
  (applied) removed template 1908 for digit 5
  (applied) removed template 6150 for digit 5
  (applied) removed template 7062 for digit 5
  (applied) removed template 26070 for digit 5
  (applied) removed template 26100 for digit 5
  (applied) removed template 45617 for digit 7
  (applied) removed template 45623 for digit 7
  (applied) removed template 45647 for digit 7
  (applied) removed template 41190 for digit 8
T5-delete: digit 1 template 28572 cannot form Template[5] with digits {1,3,4,6,7}
T5-delete: digit 1 template 28590 cannot form Template[5] with digits {1,3,4,6,7}
T5-delete: digit 1 template 40668 cannot form Template[5] with digits {1,3,4,6,7}
T5-delete: digit 3 template 1268 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 1292 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 2708 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 2732 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 2996 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 3020 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 4718 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 11624 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 13064 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 13352 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 15074 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 17672 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 21140 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 21164 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 24008 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 25730 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 36428 cannot form Template[5] with digits {3,1,5,7,9}
T5-delete: digit 3 template 36692 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 36716 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 38408 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 3 template 40424 cannot form Template[5] with digits {3,1,5,6,7}
T5-delete: digit 5 template 7009 cannot form Template[5] with digits {5,1,2,6,7}
T5-delete: digit 5 template 7057 cannot form Template[5] with digits {5,1,2,6,7}
T5-delete: digit 7 template 43991 cannot form Template[5] with digits {7,1,3,4,6}
T5-delete: digit 7 template 44015 cannot form Template[5] with digits {7,1,3,4,6}
T5-delete: digit 7 template 46295 cannot form Template[5] with digits {7,1,3,4,6}
T5-delete: digit 7 template 46319 cannot form Template[5] with digits {7,1,3,4,6}
T5-delete: digit 7 template 46583 cannot form Template[5] with digits {7,1,3,4,6}
T5-delete: digit 7 template 46607 cannot form Template[5] with digits {7,1,3,4,6}
T5-delete: digit 8 template 7470 cannot form Template[5] with digits {8,1,5,6,7}
T5-delete: digit 8 template 8406 cannot form Template[5] with digits {8,1,5,6,7}
T5-delete: digit 8 template 10128 cannot form Template[5] with digits {8,1,5,6,7}
T5-delete: digit 8 template 10302 cannot form Template[5] with digits {8,1,5,6,7}
T5-delete: digit 8 template 12390 cannot form Template[5] with digits {8,1,3,5,7}
T5-delete: digit 8 template 27942 cannot form Template[5] with digits {8,1,3,5,7}
T5-delete: digit 8 template 28854 cannot form Template[5] with digits {8,2,4,5,6}
T5-delete: digit 8 template 29094 cannot form Template[5] with digits {8,1,5,6,7}
T5-delete: digit 8 template 30816 cannot form Template[5] with digits {8,1,5,6,7}
T5-delete: digit 8 template 30822 cannot form Template[5] with digits {8,1,3,5,7}
T5-delete: digit 8 template 36917 cannot form Template[5] with digits {8,1,5,6,7}
T5-delete: digit 8 template 38598 cannot form Template[5] with digits {8,1,3,5,6}
T5-delete: digit 9 template 2054 cannot form Template[5] with digits {9,1,5,6,7}
T5-delete: digit 9 template 4934 cannot form Template[5] with digits {9,1,5,6,7}
T5-delete: digit 9 template 11604 cannot form Template[5] with digits {9,1,5,6,7}
T5-delete: digit 9 template 30902 cannot form Template[5] with digits {9,1,3,5,8}
T5-delete: digit 9 template 36902 cannot form Template[5] with digits {9,1,5,6,7}
  (applied) removed template 28572 for digit 1
  (applied) removed template 28590 for digit 1
  (applied) removed template 40668 for digit 1
  (applied) removed template 1268 for digit 3
  (applied) removed template 1292 for digit 3
  (applied) removed template 2708 for digit 3
  (applied) removed template 2732 for digit 3
  (applied) removed template 2996 for digit 3
  (applied) removed template 3020 for digit 3
  (applied) removed template 4718 for digit 3
  (applied) removed template 11624 for digit 3
  (applied) removed template 13064 for digit 3
  (applied) removed template 13352 for digit 3
  (applied) removed template 15074 for digit 3
  (applied) removed template 17672 for digit 3
  (applied) removed template 21140 for digit 3
  (applied) removed template 21164 for digit 3
  (applied) removed template 24008 for digit 3
  (applied) removed template 25730 for digit 3
  (applied) removed template 36428 for digit 3
  (applied) removed template 36692 for digit 3
  (applied) removed template 36716 for digit 3
  (applied) removed template 38408 for digit 3
  (applied) removed template 40424 for digit 3
  (applied) removed template 7009 for digit 5
  (applied) removed template 7057 for digit 5
  (applied) removed template 43991 for digit 7
  (applied) removed template 44015 for digit 7
  (applied) removed template 46295 for digit 7
  (applied) removed template 46319 for digit 7
  (applied) removed template 46583 for digit 7
  (applied) removed template 46607 for digit 7
  (applied) removed template 7470 for digit 8
  (applied) removed template 8406 for digit 8
  (applied) removed template 10128 for digit 8
  (applied) removed template 10302 for digit 8
  (applied) removed template 12390 for digit 8
  (applied) removed template 27942 for digit 8
  (applied) removed template 28854 for digit 8
  (applied) removed template 29094 for digit 8
  (applied) removed template 30816 for digit 8
  (applied) removed template 30822 for digit 8
  (applied) removed template 36917 for digit 8
  (applied) removed template 38598 for digit 8
  (applied) removed template 2054 for digit 9
  (applied) removed template 4934 for digit 9
  (applied) removed template 11604 for digit 9
  (applied) removed template 30902 for digit 9
  (applied) removed template 36902 for digit 9
T5-delete: digit 7 template 43943 cannot form Template[5] with digits {7,1,3,4,5}
  (applied) removed template 43943 for digit 7
T6-delete: digit 1 template 23436 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 23454 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 28668 cannot form Template[6] with digits {1,2,4,6,8,9}
T6-delete: digit 1 template 28686 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 39804 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 39852 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 39954 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 39978 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 40764 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 40808 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 40818 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 40838 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 1 template 40842 cannot form Template[6] with digits {1,3,4,5,6,7}
T6-delete: digit 3 template 2678 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 2846 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 4436 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 4460 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 4526 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 4544 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 4724 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 4748 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 12968 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 12998 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 14690 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 14792 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 14882 cannot form Template[6] with digits {3,1,2,5,6,7}
T6-delete: digit 3 template 15080 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 15956 cannot form Template[6] with digits {3,1,2,5,6,7}
T6-delete: digit 3 template 17810 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 18728 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 18758 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 18824 cannot form Template[6] with digits {3,1,2,5,6,7}
T6-delete: digit 3 template 20450 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 20546 cannot form Template[6] with digits {3,1,2,5,6,7}
T6-delete: digit 3 template 20552 cannot form Template[6] with digits {3,1,2,5,6,7}
T6-delete: digit 3 template 22856 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 25736 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 3 template 36374 cannot form Template[6] with digits {3,1,2,5,7,9}
T6-delete: digit 3 template 38054 cannot form Template[6] with digits {3,1,5,6,7,9}
T6-delete: digit 3 template 38120 cannot form Template[6] with digits {3,1,2,5,6,7}
T6-delete: digit 3 template 38258 cannot form Template[6] with digits {3,1,4,5,6,7}
T6-delete: digit 4 template 6013 cannot form Template[6] with digits {4,1,3,5,6,7}
T6-delete: digit 4 template 6031 cannot form Template[6] with digits {4,1,3,5,6,7}
T6-delete: digit 4 template 34180 cannot form Template[6] with digits {4,1,3,5,6,7}
T6-delete: digit 4 template 34189 cannot form Template[6] with digits {4,1,3,5,6,7}
T6-delete: digit 4 template 34192 cannot form Template[6] with digits {4,1,3,5,6,7}
T6-delete: digit 4 template 34207 cannot form Template[6] with digits {4,1,3,5,6,7}
T6-delete: digit 4 template 34210 cannot form Template[6] with digits {4,1,3,5,6,7}
T6-delete: digit 5 template 1110 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 1140 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 1825 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 1849 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 1873 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 1897 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 1974 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 2004 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 6066 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 6090 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 6294 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 6925 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 6930 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 6943 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 6954 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 7158 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 15654 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 15684 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 15792 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 15816 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 20838 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 20868 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 26017 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 26041 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 26065 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 26089 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 26166 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 5 template 26196 cannot form Template[6] with digits {5,1,3,4,6,7}
T6-delete: digit 6 template 9053 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 9387 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 9388 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 9389 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 14237 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 14521 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 14523 cannot form Template[6] with digits {6,1,5,7,8,9}
T6-delete: digit 6 template 14571 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 14573 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 29787 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 29835 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 29836 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 29837 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 30073 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 30123 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 6 template 30125 cannot form Template[6] with digits {6,1,3,4,5,7}
T6-delete: digit 7 template 43319 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 43343 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 43601 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 43607 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 43631 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 43893 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 43917 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 43937 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 43941 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 43965 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 43967 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 45281 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 45287 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 45311 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 45329 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 45335 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 45359 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 45431 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 45455 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 45719 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 45743 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46145 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46149 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46151 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46173 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46175 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46241 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46245 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46247 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46269 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46271 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46485 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46509 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46529 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46533 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 7 template 46557 cannot form Template[6] with digits {7,1,3,4,5,6}
T6-delete: digit 8 template 2069 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 2070 cannot form Template[6] with digits {8,1,3,5,6,7}
T6-delete: digit 8 template 2237 cannot form Template[6] with digits {8,1,3,5,7,9}
T6-delete: digit 8 template 2285 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 2286 cannot form Template[6] with digits {8,1,3,5,6,7}
T6-delete: digit 8 template 3221 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 3222 cannot form Template[6] with digits {8,1,4,5,6,7}
T6-delete: digit 8 template 3437 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 3443 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 5118 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 7254 cannot form Template[6] with digits {8,1,3,5,6,7}
T6-delete: digit 8 template 8357 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 8622 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 10134 cannot form Template[6] with digits {8,1,3,5,6,7}
T6-delete: digit 8 template 12389 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 12395 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 13541 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 13542 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 13806 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 15264 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 15270 cannot form Template[6] with digits {8,1,3,5,7,9}
T6-delete: digit 8 template 26261 cannot form Template[6] with digits {8,1,4,5,6,7}
T6-delete: digit 8 template 26429 cannot form Template[6] with digits {8,1,3,5,7,9}
T6-delete: digit 8 template 26435 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 26477 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 28206 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 28805 cannot form Template[6] with digits {8,1,2,4,6,9}
T6-delete: digit 8 template 28811 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 29070 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 29093 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 29358 cannot form Template[6] with digits {8,1,4,5,6,7}
T6-delete: digit 8 template 30533 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 30539 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 30576 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 30582 cannot form Template[6] with digits {8,1,2,3,5,9}
T6-delete: digit 8 template 30750 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 31038 cannot form Template[6] with digits {8,1,4,5,6,7}
T6-delete: digit 8 template 36918 cannot form Template[6] with digits {8,1,3,5,6,7}
T6-delete: digit 8 template 37085 cannot form Template[6] with digits {8,1,3,5,6,7}
T6-delete: digit 8 template 37091 cannot form Template[6] with digits {8,1,3,5,6,7}
T6-delete: digit 8 template 38597 cannot form Template[6] with digits {8,1,3,5,6,7}
T6-delete: digit 8 template 38603 cannot form Template[6] with digits {8,1,3,5,6,7}
T6-delete: digit 8 template 38862 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 40901 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 40907 cannot form Template[6] with digits {8,1,2,3,5,9}
T6-delete: digit 8 template 40950 cannot form Template[6] with digits {8,1,2,3,5,7}
T6-delete: digit 8 template 41166 cannot form Template[6] with digits {8,1,5,6,7,9}
T6-delete: digit 8 template 41454 cannot form Template[6] with digits {8,1,4,5,6,7}
T6-delete: digit 9 template 1193 cannot form Template[6] with digits {9,1,4,5,6,7}
T6-delete: digit 9 template 3195 cannot form Template[6] with digits {9,1,3,5,6,7}
T6-delete: digit 9 template 3196 cannot form Template[6] with digits {9,1,3,5,6,7}
T6-delete: digit 9 template 3206 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 3208 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 4935 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 4936 cannot form Template[6] with digits {9,1,3,5,6,7}
T6-delete: digit 9 template 12469 cannot form Template[6] with digits {9,1,4,5,6,7}
T6-delete: digit 9 template 13332 cannot form Template[6] with digits {9,1,4,5,6,7}
T6-delete: digit 9 template 13612 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 15060 cannot form Template[6] with digits {9,1,2,5,6,7}
T6-delete: digit 9 template 15349 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 15350 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 21065 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 22836 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 23988 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 25716 cannot form Template[6] with digits {9,1,2,3,5,7}
T6-delete: digit 9 template 26246 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 26248 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 28021 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 29164 cannot form Template[6] with digits {9,1,3,4,6,8}
T6-delete: digit 9 template 30901 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 36617 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 36904 cannot form Template[6] with digits {9,1,3,5,6,7}
T6-delete: digit 9 template 38388 cannot form Template[6] with digits {9,1,2,5,6,7}
T6-delete: digit 9 template 38677 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 38678 cannot form Template[6] with digits {9,1,5,6,7,8}
T6-delete: digit 9 template 40404 cannot form Template[6] with digits {9,1,2,5,6,7}
  (applied) removed template 23436 for digit 1
  (applied) removed template 23454 for digit 1
  (applied) removed template 28668 for digit 1
  (applied) removed template 28686 for digit 1
  (applied) removed template 39804 for digit 1
  (applied) removed template 39852 for digit 1
  (applied) removed template 39954 for digit 1
  (applied) removed template 39978 for digit 1
  (applied) removed template 40764 for digit 1
  (applied) removed template 40808 for digit 1
  (applied) removed template 40818 for digit 1
  (applied) removed template 40838 for digit 1
  (applied) removed template 40842 for digit 1
  (applied) removed template 2678 for digit 3
  (applied) removed template 2846 for digit 3
  (applied) removed template 4436 for digit 3
  (applied) removed template 4460 for digit 3
  (applied) removed template 4526 for digit 3
  (applied) removed template 4544 for digit 3
  (applied) removed template 4724 for digit 3
  (applied) removed template 4748 for digit 3
  (applied) removed template 12968 for digit 3
  (applied) removed template 12998 for digit 3
  (applied) removed template 14690 for digit 3
  (applied) removed template 14792 for digit 3
  (applied) removed template 14882 for digit 3
  (applied) removed template 15080 for digit 3
  (applied) removed template 15956 for digit 3
  (applied) removed template 17810 for digit 3
  (applied) removed template 18728 for digit 3
  (applied) removed template 18758 for digit 3
  (applied) removed template 18824 for digit 3
  (applied) removed template 20450 for digit 3
  (applied) removed template 20546 for digit 3
  (applied) removed template 20552 for digit 3
  (applied) removed template 22856 for digit 3
  (applied) removed template 25736 for digit 3
  (applied) removed template 36374 for digit 3
  (applied) removed template 38054 for digit 3
  (applied) removed template 38120 for digit 3
  (applied) removed template 38258 for digit 3
  (applied) removed template 6013 for digit 4
  (applied) removed template 6031 for digit 4
  (applied) removed template 34180 for digit 4
  (applied) removed template 34189 for digit 4
  (applied) removed template 34192 for digit 4
  (applied) removed template 34207 for digit 4
  (applied) removed template 34210 for digit 4
  (applied) removed template 1110 for digit 5
  (applied) removed template 1140 for digit 5
  (applied) removed template 1825 for digit 5
  (applied) removed template 1849 for digit 5
  (applied) removed template 1873 for digit 5
  (applied) removed template 1897 for digit 5
  (applied) removed template 1974 for digit 5
  (applied) removed template 2004 for digit 5
  (applied) removed template 6066 for digit 5
  (applied) removed template 6090 for digit 5
  (applied) removed template 6294 for digit 5
  (applied) removed template 6925 for digit 5
  (applied) removed template 6930 for digit 5
  (applied) removed template 6943 for digit 5
  (applied) removed template 6954 for digit 5
  (applied) removed template 7158 for digit 5
  (applied) removed template 15654 for digit 5
  (applied) removed template 15684 for digit 5
  (applied) removed template 15792 for digit 5
  (applied) removed template 15816 for digit 5
  (applied) removed template 20838 for digit 5
  (applied) removed template 20868 for digit 5
  (applied) removed template 26017 for digit 5
  (applied) removed template 26041 for digit 5
  (applied) removed template 26065 for digit 5
  (applied) removed template 26089 for digit 5
  (applied) removed template 26166 for digit 5
  (applied) removed template 26196 for digit 5
  (applied) removed template 9053 for digit 6
  (applied) removed template 9387 for digit 6
  (applied) removed template 9388 for digit 6
  (applied) removed template 9389 for digit 6
  (applied) removed template 14237 for digit 6
  (applied) removed template 14521 for digit 6
  (applied) removed template 14523 for digit 6
  (applied) removed template 14571 for digit 6
  (applied) removed template 14573 for digit 6
  (applied) removed template 29787 for digit 6
  (applied) removed template 29835 for digit 6
  (applied) removed template 29836 for digit 6
  (applied) removed template 29837 for digit 6
  (applied) removed template 30073 for digit 6
  (applied) removed template 30123 for digit 6
  (applied) removed template 30125 for digit 6
  (applied) removed template 43319 for digit 7
  (applied) removed template 43343 for digit 7
  (applied) removed template 43601 for digit 7
  (applied) removed template 43607 for digit 7
  (applied) removed template 43631 for digit 7
  (applied) removed template 43893 for digit 7
  (applied) removed template 43917 for digit 7
  (applied) removed template 43937 for digit 7
  (applied) removed template 43941 for digit 7
  (applied) removed template 43965 for digit 7
  (applied) removed template 43967 for digit 7
  (applied) removed template 45281 for digit 7
  (applied) removed template 45287 for digit 7
  (applied) removed template 45311 for digit 7
  (applied) removed template 45329 for digit 7
  (applied) removed template 45335 for digit 7
  (applied) removed template 45359 for digit 7
  (applied) removed template 45431 for digit 7
  (applied) removed template 45455 for digit 7
  (applied) removed template 45719 for digit 7
  (applied) removed template 45743 for digit 7
  (applied) removed template 46145 for digit 7
  (applied) removed template 46149 for digit 7
  (applied) removed template 46151 for digit 7
  (applied) removed template 46173 for digit 7
  (applied) removed template 46175 for digit 7
  (applied) removed template 46241 for digit 7
  (applied) removed template 46245 for digit 7
  (applied) removed template 46247 for digit 7
  (applied) removed template 46269 for digit 7
  (applied) removed template 46271 for digit 7
  (applied) removed template 46485 for digit 7
  (applied) removed template 46509 for digit 7
  (applied) removed template 46529 for digit 7
  (applied) removed template 46533 for digit 7
  (applied) removed template 46557 for digit 7
  (applied) removed template 2069 for digit 8
  (applied) removed template 2070 for digit 8
  (applied) removed template 2237 for digit 8
  (applied) removed template 2285 for digit 8
  (applied) removed template 2286 for digit 8
  (applied) removed template 3221 for digit 8
  (applied) removed template 3222 for digit 8
  (applied) removed template 3437 for digit 8
  (applied) removed template 3443 for digit 8
  (applied) removed template 5118 for digit 8
  (applied) removed template 7254 for digit 8
  (applied) removed template 8357 for digit 8
  (applied) removed template 8622 for digit 8
  (applied) removed template 10134 for digit 8
  (applied) removed template 12389 for digit 8
  (applied) removed template 12395 for digit 8
  (applied) removed template 13541 for digit 8
  (applied) removed template 13542 for digit 8
  (applied) removed template 13806 for digit 8
  (applied) removed template 15264 for digit 8
  (applied) removed template 15270 for digit 8
  (applied) removed template 26261 for digit 8
  (applied) removed template 26429 for digit 8
  (applied) removed template 26435 for digit 8
  (applied) removed template 26477 for digit 8
  (applied) removed template 28206 for digit 8
  (applied) removed template 28805 for digit 8
  (applied) removed template 28811 for digit 8
  (applied) removed template 29070 for digit 8
  (applied) removed template 29093 for digit 8
  (applied) removed template 29358 for digit 8
  (applied) removed template 30533 for digit 8
  (applied) removed template 30539 for digit 8
  (applied) removed template 30576 for digit 8
  (applied) removed template 30582 for digit 8
  (applied) removed template 30750 for digit 8
  (applied) removed template 31038 for digit 8
  (applied) removed template 36918 for digit 8
  (applied) removed template 37085 for digit 8
  (applied) removed template 37091 for digit 8
  (applied) removed template 38597 for digit 8
  (applied) removed template 38603 for digit 8
  (applied) removed template 38862 for digit 8
  (applied) removed template 40901 for digit 8
  (applied) removed template 40907 for digit 8
  (applied) removed template 40950 for digit 8
  (applied) removed template 41166 for digit 8
  (applied) removed template 41454 for digit 8
  (applied) removed template 1193 for digit 9
  (applied) removed template 3195 for digit 9
  (applied) removed template 3196 for digit 9
  (applied) removed template 3206 for digit 9
  (applied) removed template 3208 for digit 9
  (applied) removed template 4935 for digit 9
  (applied) removed template 4936 for digit 9
  (applied) removed template 12469 for digit 9
  (applied) removed template 13332 for digit 9
  (applied) removed template 13612 for digit 9
  (applied) removed template 15060 for digit 9
  (applied) removed template 15349 for digit 9
  (applied) removed template 15350 for digit 9
  (applied) removed template 21065 for digit 9
  (applied) removed template 22836 for digit 9
  (applied) removed template 23988 for digit 9
  (applied) removed template 25716 for digit 9
  (applied) removed template 26246 for digit 9
  (applied) removed template 26248 for digit 9
  (applied) removed template 28021 for digit 9
  (applied) removed template 29164 for digit 9
  (applied) removed template 30901 for digit 9
  (applied) removed template 36617 for digit 9
  (applied) removed template 36904 for digit 9
  (applied) removed template 38388 for digit 9
  (applied) removed template 38677 for digit 9
  (applied) removed template 38678 for digit 9
  (applied) removed template 40404 for digit 9
MD-POM: Digit 5 subset r1c5,r9c4 covers ALL templates of digit 5 => deleting templates {22333} from digit 2
  (applied) removed template 22333 for digit 2
T3-delete: digit 8 template 10085 cannot form Template[3] with digits {8,3,5}
T3-delete: digit 8 template 10091 cannot form Template[3] with digits {8,3,5}
T3-delete: digit 8 template 15269 cannot form Template[3] with digits {8,3,5}
T3-delete: digit 8 template 15275 cannot form Template[3] with digits {8,3,5}
T3-delete: digit 8 template 30821 cannot form Template[3] with digits {8,3,5}
T3-delete: digit 8 template 30827 cannot form Template[3] with digits {8,3,5}
  (applied) removed template 10085 for digit 8
  (applied) removed template 10091 for digit 8
  (applied) removed template 15269 for digit 8
  (applied) removed template 15275 for digit 8
  (applied) removed template 30821 for digit 8
  (applied) removed template 30827 for digit 8
T4-delete: digit 2 template 22323 cannot form Template[4] with digits {2,4,5,6}
T4-delete: digit 3 template 2648 cannot form Template[4] with digits {3,1,2,5}
T4-delete: digit 3 template 13202 cannot form Template[4] with digits {3,1,2,5}
T4-delete: digit 4 template 34477 cannot form Template[4] with digits {4,1,2,5}
T4-delete: digit 4 template 34495 cannot form Template[4] with digits {4,1,2,5}
T4-delete: digit 6 template 19421 cannot form Template[4] with digits {6,2,3,7}
T4-delete: digit 8 template 7205 cannot form Template[4] with digits {8,3,5,7}
T4-delete: digit 8 template 7211 cannot form Template[4] with digits {8,2,5,9}
T4-delete: digit 8 template 41189 cannot form Template[4] with digits {8,3,5,7}
T4-delete: digit 8 template 41195 cannot form Template[4] with digits {8,3,5,7}
T4-delete: digit 9 template 28022 cannot form Template[4] with digits {9,1,3,7}
T4-delete: digit 9 template 29176 cannot form Template[4] with digits {9,1,4,7}
  (applied) removed template 22323 for digit 2
  (applied) removed template 2648 for digit 3
  (applied) removed template 13202 for digit 3
  (applied) removed template 34477 for digit 4
  (applied) removed template 34495 for digit 4
  (applied) removed template 19421 for digit 6
  (applied) removed template 7205 for digit 8
  (applied) removed template 7211 for digit 8
  (applied) removed template 41189 for digit 8
  (applied) removed template 41195 for digit 8
  (applied) removed template 28022 for digit 9
  (applied) removed template 29176 for digit 9
T4-delete: digit 3 template 15896 cannot form Template[4] with digits {3,2,8,9}
T4-delete: digit 3 template 17576 cannot form Template[4] with digits {3,2,8,9}
T4-delete: digit 8 template 12654 cannot form Template[4] with digits {8,2,3,7}
T4-delete: digit 9 template 12472 cannot form Template[4] with digits {9,2,4,8}
T4-delete: digit 9 template 28024 cannot form Template[4] with digits {9,2,4,7}
T4-delete: digit 9 template 38680 cannot form Template[4] with digits {9,2,4,7}
  (applied) removed template 15896 for digit 3
  (applied) removed template 17576 for digit 3
  (applied) removed template 12654 for digit 8
  (applied) removed template 12472 for digit 9
  (applied) removed template 28024 for digit 9
  (applied) removed template 38680 for digit 9
T4-delete: digit 8 template 3227 cannot form Template[4] with digits {8,4,7,9}
T4-delete: digit 8 template 29099 cannot form Template[4] with digits {8,3,5,9}
  (applied) removed template 3227 for digit 8
  (applied) removed template 29099 for digit 8
T4-delete: digit 3 template 14726 cannot form Template[4] with digits {3,5,8,9}
T4-delete: digit 9 template 15352 cannot form Template[4] with digits {9,4,6,8}
  (applied) removed template 14726 for digit 3
  (applied) removed template 15352 for digit 9
T4-delete: digit 3 template 2864 cannot form Template[4] with digits {3,1,8,9}
  (applied) removed template 2864 for digit 3
T4-delete: digit 9 template 41270 cannot form Template[4] with digits {9,2,3,7}
  (applied) removed template 41270 for digit 9
T4-delete: digit 6 template 9340 cannot form Template[4] with digits {6,1,8,9}
  (applied) removed template 9340 for digit 6
T5-delete: digit 1 template 18192 cannot form Template[5] with digits {1,2,3,5,7}
T5-delete: digit 1 template 18216 cannot form Template[5] with digits {1,2,3,4,7}
T5-delete: digit 1 template 18252 cannot form Template[5] with digits {1,2,3,7,9}
T5-delete: digit 1 template 18270 cannot form Template[5] with digits {1,2,3,5,7}
T5-delete: digit 2 template 17139 cannot form Template[5] with digits {2,1,3,4,7}
T5-delete: digit 2 template 32121 cannot form Template[5] with digits {2,3,6,8,9}
T5-delete: digit 2 template 32155 cannot form Template[5] with digits {2,3,5,7,9}
T5-delete: digit 2 template 32443 cannot form Template[5] with digits {2,1,3,4,9}
T5-delete: digit 3 template 4370 cannot form Template[5] with digits {3,1,2,5,7}
T5-delete: digit 3 template 4430 cannot form Template[5] with digits {3,1,2,5,7}
T5-delete: digit 3 template 14696 cannot form Template[5] with digits {3,1,5,7,8}
T5-delete: digit 3 template 15980 cannot form Template[5] with digits {3,1,5,6,9}
T5-delete: digit 3 template 18962 cannot form Template[5] with digits {3,1,5,6,9}
T5-delete: digit 3 template 20456 cannot form Template[5] with digits {3,1,5,7,8}
T5-delete: digit 3 template 20486 cannot form Template[5] with digits {3,1,4,5,8}
T5-delete: digit 3 template 20642 cannot form Template[5] with digits {3,1,2,5,7}
T5-delete: digit 3 template 36344 cannot form Template[5] with digits {3,1,2,8,9}
T5-delete: digit 3 template 36404 cannot form Template[5] with digits {3,1,2,5,7}
T5-delete: digit 3 template 36542 cannot form Template[5] with digits {3,1,2,7,9}
T5-delete: digit 3 template 38024 cannot form Template[5] with digits {3,1,2,7,9}
T5-delete: digit 4 template 820 cannot form Template[5] with digits {4,1,7,8,9}
T5-delete: digit 4 template 844 cannot form Template[5] with digits {4,1,3,5,8}
T5-delete: digit 4 template 847 cannot form Template[5] with digits {4,1,2,7,8}
T5-delete: digit 4 template 6004 cannot form Template[5] with digits {4,1,5,6,9}
T5-delete: digit 4 template 11197 cannot form Template[5] with digits {4,1,7,8,9}
T5-delete: digit 4 template 34465 cannot form Template[5] with digits {4,1,3,5,6}
T5-delete: digit 4 template 34480 cannot form Template[5] with digits {4,1,2,5,6}
T5-delete: digit 4 template 34498 cannot form Template[5] with digits {4,1,2,3,7}
T5-delete: digit 6 template 30075 cannot form Template[5] with digits {6,1,5,8,9}
T5-delete: digit 7 template 43409 cannot form Template[5] with digits {7,1,3,4,8}
T5-delete: digit 8 template 3438 cannot form Template[5] with digits {8,1,4,5,7}
T5-delete: digit 8 template 4944 cannot form Template[5] with digits {8,1,4,5,7}
T5-delete: digit 8 template 4949 cannot form Template[5] with digits {8,1,2,7,9}
T5-delete: digit 8 template 8363 cannot form Template[5] with digits {8,1,3,5,9}
T5-delete: digit 8 template 13547 cannot form Template[5] with digits {8,1,3,5,9}
T5-delete: digit 8 template 15486 cannot form Template[5] with digits {8,1,4,5,7}
T5-delete: digit 8 template 26262 cannot form Template[5] with digits {8,1,4,5,7}
T5-delete: digit 8 template 26267 cannot form Template[5] with digits {8,2,3,4,5}
T5-delete: digit 8 template 26478 cannot form Template[5] with digits {8,1,3,5,7}
T5-delete: digit 8 template 36923 cannot form Template[5] with digits {8,2,3,4,5}
T5-delete: digit 8 template 37133 cannot form Template[5] with digits {8,1,4,5,7}
T5-delete: digit 8 template 37134 cannot form Template[5] with digits {8,1,3,6,9}
T5-delete: digit 9 template 2056 cannot form Template[5] with digits {9,1,4,6,8}
T5-delete: digit 9 template 2909 cannot form Template[5] with digits {9,3,5,6,8}
T5-delete: digit 9 template 4649 cannot form Template[5] with digits {9,1,2,4,7}
T5-delete: digit 9 template 13609 cannot form Template[5] with digits {9,1,2,5,7}
T5-delete: digit 9 template 13622 cannot form Template[5] with digits {9,3,4,5,8}
T5-delete: digit 9 template 13624 cannot form Template[5] with digits {9,1,2,4,7}
T5-delete: digit 9 template 29161 cannot form Template[5] with digits {9,1,2,5,7}
T5-delete: digit 9 template 36903 cannot form Template[5] with digits {9,1,4,6,8}
T5-delete: digit 9 template 41272 cannot form Template[5] with digits {9,1,4,7,8}
  (applied) removed template 18192 for digit 1
  (applied) removed template 18216 for digit 1
  (applied) removed template 18252 for digit 1
  (applied) removed template 18270 for digit 1
  (applied) removed template 17139 for digit 2
  (applied) removed template 32121 for digit 2
  (applied) removed template 32155 for digit 2
  (applied) removed template 32443 for digit 2
  (applied) removed template 4370 for digit 3
  (applied) removed template 4430 for digit 3
  (applied) removed template 14696 for digit 3
  (applied) removed template 15980 for digit 3
  (applied) removed template 18962 for digit 3
  (applied) removed template 20456 for digit 3
  (applied) removed template 20486 for digit 3
  (applied) removed template 20642 for digit 3
  (applied) removed template 36344 for digit 3
  (applied) removed template 36404 for digit 3
  (applied) removed template 36542 for digit 3
  (applied) removed template 38024 for digit 3
  (applied) removed template 820 for digit 4
  (applied) removed template 844 for digit 4
  (applied) removed template 847 for digit 4
  (applied) removed template 6004 for digit 4
  (applied) removed template 11197 for digit 4
  (applied) removed template 34465 for digit 4
  (applied) removed template 34480 for digit 4
  (applied) removed template 34498 for digit 4
  (applied) removed template 30075 for digit 6
  (applied) removed template 43409 for digit 7
  (applied) removed template 3438 for digit 8
  (applied) removed template 4944 for digit 8
  (applied) removed template 4949 for digit 8
  (applied) removed template 8363 for digit 8
  (applied) removed template 13547 for digit 8
  (applied) removed template 15486 for digit 8
  (applied) removed template 26262 for digit 8
  (applied) removed template 26267 for digit 8
  (applied) removed template 26478 for digit 8
  (applied) removed template 36923 for digit 8
  (applied) removed template 37133 for digit 8
  (applied) removed template 37134 for digit 8
  (applied) removed template 2056 for digit 9
  (applied) removed template 2909 for digit 9
  (applied) removed template 4649 for digit 9
  (applied) removed template 13609 for digit 9
  (applied) removed template 13622 for digit 9
  (applied) removed template 13624 for digit 9
  (applied) removed template 29161 for digit 9
  (applied) removed template 36903 for digit 9
  (applied) removed template 41272 for digit 9
FOUND HIDDEN-SUBSET: digits=3 cells=r9c7 sector=26 size=1
  -> eliminate digit 8 templates={4950}
  -> eliminate digit 9 templates={12470}
  (applied) removed template 4950 for digit 8
  (applied) removed template 12470 for digit 9
FOUND HIDDEN-SUBSET: digits=4 cells=r3c9 sector=20 size=1
  -> eliminate digit 2 templates={17149}
  (applied) removed template 17149 for digit 2
FOUND HIDDEN-SUBSET: digits=2 cells=r6c9 sector=23 size=1
  -> eliminate digit 8 templates={2075, 27947}
  (applied) removed template 2075 for digit 8
  (applied) removed template 27947 for digit 8
FOUND HIDDEN-SUBSET: digits=3,4 cells=r56c5 sector=22 size=2
  -> eliminate digit 7 templates={43427}
  (applied) removed template 43427 for digit 7
FOUND HIDDEN-SUBSET: digits=3,5,8 cells=r124c1 sector=9 size=3
  -> eliminate digit 4 templates={829}
  -> eliminate digit 9 templates={2055, 2921, 26247}
  (applied) removed template 829 for digit 4
  (applied) removed template 2055 for digit 9
  (applied) removed template 2921 for digit 9
  (applied) removed template 26247 for digit 9
FOUND HIDDEN-SUBSET: digits=9 cells=r3c3 sector=18 size=1
  -> eliminate digit 6 templates={19709, 24893, 30121}
  (applied) removed template 19709 for digit 6
  (applied) removed template 24893 for digit 6
  (applied) removed template 30121 for digit 6
FOUND HIDDEN-SUBSET: digits=4,9 cells=r8c17 sector=7 size=2
  -> eliminate digit 7 templates={45285, 45309, 46197, 46221}
  (applied) removed template 45285 for digit 7
  (applied) removed template 45309 for digit 7
  (applied) removed template 46197 for digit 7
  (applied) removed template 46221 for digit 7
FOUND HIDDEN-SUBSET: digits=7,9 cells=r23c3 sector=18 size=2
  -> eliminate digit 3 templates={17606}
  -> eliminate digit 8 templates={27941}
  (applied) removed template 17606 for digit 3
  (applied) removed template 27941 for digit 8
FOUND HIDDEN-SUBSET: digits=7 cells=r7c8 sector=26 size=1
  -> eliminate digit 8 templates={5117, 5123}
  (applied) removed template 5117 for digit 8
  (applied) removed template 5123 for digit 8
FOUND HIDDEN-SUBSET: digits=8 cells=r9c2 sector=24 size=1
  -> eliminate digit 6 templates={13949}
  (applied) removed template 13949 for digit 6
FOUND HIDDEN-SUBSET: digits=2,7 cells=r3c45 sector=19 size=2
  -> eliminate digit 3 templates={4376, 4406, 36560}
  -> eliminate digit 6 templates={8765}
  (applied) removed template 4376 for digit 3
  (applied) removed template 4406 for digit 3
  (applied) removed template 36560 for digit 3
  (applied) removed template 8765 for digit 6
FOUND HIDDEN-SUBSET: digits=3,4 cells=r3c89 sector=20 size=2
  -> eliminate digit 8 templates={2243, 2291, 26483}
  (applied) removed template 2243 for digit 8
  (applied) removed template 2291 for digit 8
  (applied) removed template 26483 for digit 8
FOUND HIDDEN-SUBSET: digits=3,5 cells=r2c15 sector=1 size=2
  -> eliminate digit 1 templates={39944, 39974}
  -> eliminate digit 8 templates={37139}
  (applied) removed template 39944 for digit 1
  (applied) removed template 39974 for digit 1
  (applied) removed template 37139 for digit 8
FOUND HIDDEN-SUBSET: digits=3,5 cells=b1p24 sector=18 size=2
  -> eliminate digit 4 templates={6016, 6034}
  -> eliminate digit 6 templates={9339}
  (applied) removed template 6016 for digit 4
  (applied) removed template 6034 for digit 4
  (applied) removed template 9339 for digit 6
FOUND HIDDEN-SUBSET: digits=3,7 cells=r2c13 sector=18 size=2
  -> eliminate digit 5 templates={20982, 21012}
  (applied) removed template 20982 for digit 5
  (applied) removed template 21012 for digit 5
FOUND HIDDEN-SUBSET: digits=3,8 cells=r2c19 sector=1 size=2
  -> eliminate digit 9 templates={30904}
  (applied) removed template 30904 for digit 9
FOUND HIDDEN-SUBSET: digits=3,8 cells=r3c68 sector=2 size=2
  -> eliminate digit 6 templates={14569}
  (applied) removed template 14569 for digit 6
FOUND HIDDEN-SUBSET: digits=3,8 cells=r4c39 sector=3 size=2
  -> eliminate digit 1 templates={23388, 23406}
  (applied) removed template 23388 for digit 1
  (applied) removed template 23406 for digit 1
FOUND HIDDEN-SUBSET: digits=3,8 cells=r36c8 sector=16 size=2
  -> eliminate digit 1 templates={28610, 28658}
  -> eliminate digit 5 templates={6061}
  (applied) removed template 28610 for digit 1
  (applied) removed template 28658 for digit 1
  (applied) removed template 6061 for digit 5
FOUND HIDDEN-SUBSET: digits=3,8 cells=r79c7 sector=26 size=2
  -> eliminate digit 4 templates={11200, 11218}
  (applied) removed template 11200 for digit 4
  (applied) removed template 11218 for digit 4
FOUND HIDDEN-SUBSET: digits=4,5 cells=r8c79 sector=26 size=2
  -> eliminate digit 9 templates={41269}
  (applied) removed template 41269 for digit 9
FOUND HIDDEN-SUBSET: digits=4,8 cells=r14c3 sector=11 size=2
  -> eliminate digit 3 templates={15926}
  (applied) removed template 15926 for digit 3
FOUND HIDDEN-SUBSET: digits=4,9 cells=r1c36 sector=0 size=2
  -> eliminate digit 1 templates={28634, 28682}
  -> eliminate digit 6 templates={29788}
  (applied) removed template 28634 for digit 1
  (applied) removed template 28682 for digit 1
  (applied) removed template 29788 for digit 6
FOUND HIDDEN-SUBSET: digits=5,6 cells=r4c14 sector=3 size=2
  -> eliminate digit 1 templates={40706}
  (applied) removed template 40706 for digit 1
FOUND HIDDEN-SUBSET: digits=5,6 cells=r8c69 sector=7 size=2
  -> eliminate digit 7 templates={43313}
  (applied) removed template 43313 for digit 7
FOUND HIDDEN-SUBSET: digits=5,6 cells=r9c34 sector=8 size=2
  -> eliminate digit 2 templates={32409, 32419}
  (applied) removed template 32409 for digit 2
  (applied) removed template 32419 for digit 2
FOUND HIDDEN-SUBSET: digits=5,6 cells=r68c6 sector=14 size=2
  -> eliminate digit 7 templates={43703}
  (applied) removed template 43703 for digit 7
FOUND HIDDEN-SUBSET: digits=5,7 cells=r6c26 sector=5 size=2
  -> eliminate digit 4 templates={11215}
  (applied) removed template 11215 for digit 4
FOUND HIDDEN-SUBSET: digits=2 cells=r5c3 sector=21 size=1
  -> eliminate digit 3 templates={16094}
  (applied) removed template 16094 for digit 3



Code: Select all
 .---------.---------.---------.
| 8  5  4 | 3  6  9 | 2  1  7 |
| 3  2  7 | 4  5  1 | 9  6  8 |
| 1  6  9 | 2  7  8 | 5  3  4 |
:---------+---------+---------:
| 5  9  8 | 6  1  2 | 7  4  3 |
| 4  1  2 | 8  3  7 | 6  5  9 |
| 6  7  3 | 9  4  5 | 1  8  2 |
:---------+---------+---------:
| 2  4  5 | 1  9  3 | 8  7  6 |
| 9  3  1 | 7  8  6 | 4  2  5 |
| 7  8  6 | 5  2  4 | 3  9  1 |
'---------'---------'---------'
Last edited by StrmCkr on Thu Dec 25, 2025 2:57 pm, edited 2 times in total.
Some do, some teach, the rest look it up.
stormdoku
User avatar
StrmCkr
 
Posts: 1492
Joined: 05 September 2006

Re: Pattern Overlay Method

Postby P.O. » Wed Dec 24, 2025 10:34 am

hi StrmCkr,
My solution to Tungsten Rod is similar to yours; I have the same number of templates at puzzle initialization and I need combinations of size 6 to obtain the solution.
Hidden Text: Show
Code: Select all
POMethod TPlimit: 10 / checkVT: NIL / CheckCombsEarly: NIL

........7.2.4...6.1.....5...9...2.4....8..6..6..9.......5..3....3..8..2.7....4..1
#VT: (42 10 113 24 42 28 57 144 88)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL

34589   4568    34689   12356   123569  15689   123489  1389    7               
3589    2       3789    4       13579   15789   1389    6       389             
1       4678    346789  2367    23679   6789    5       389     23489           
358     9       1378    13567   13567   2       1378    4       358             
2345    1457    12347   8       13457   157     6       13579   2359             
6       14578   123478  9       13457   157     12378   13578   2358             
2489    1468    5       1267    12679   3       4789    789     4689             
49      3       1469    1567    8       15679   479     2       4569             
7       68      2689    256     2569    4       389     3589    1               
253 candidates. 21 values.

----- after TPinit -----
----- Combs2 -----
----- Combs3 -----

34589   4568    34689   12356   123569  15689   123489  1389    7               
3589    2       3789    4       13579   15789   1389    6       389             
1       4678    346789  2367    23679   6789    5       389     23489           
358     9       1378    13567   13567   2       1378    4       358             
2345    1457    12347   8       13457   157     6       13579   2359             
6       14578   123478  9       13457   157     12378   13578   2358             
2489    1468    5       1267    12679   3       4789    789     4689             
49      3       1469    1567    8       15679   479     2       4569             
7       68      2689    256     2569    4       389     3589    1               
253 candidates. 21 values.

----- SetVC -----
#VT: (30 10 75 24 42 28 55 97 56)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: (7) NIL (7 27) NIL NIL NIL NIL (7 27) (7 27)
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----

34589   4568    34689   12356   123569  15689   24      1389    7               
3589    2       3789    4       13579   15789   1389    6       389             
1       4678    346789  2367    23679   6789    5       389     24               
358     9       1378    13567   13567   2       1378    4       358             
2345    1457    12347   8       13457   157     6       13579   2359             
6       14578   123478  9       13457   157     12378   13578   2358             
2489    1468    5       1267    12679   3       4789    789     4689             
49      3       1469    1567    8       15679   479     2       4569             
7       68      2689    256     2569    4       389     3589    1               
246 candidates. 21 values.

----- SetVC -----
#VT: (30 10 74 24 34 28 52 96 56)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----
----- Combs5 -----

34589   4568    34689   12356   123569  15689   24      1389    7               
3589    2       3789    4       13579   15789   1389    6       389             
1       4678    346789  2367    23679   6789    5       389     24               
358     9       1378    13567   13567   2       1378    4       358             
2345    1457    12347   8       13457   157     6       13579   2359             
6       14578   123478  9       13457   157     12378   13578   2358             
2489    1468    5       1267    12679   3       4789    789     4689             
49      3       1469    1567    8       15679   479     2       4569             
7       68      2689    256     2569    4       389     3589    1               
246 candidates. 21 values.

----- SetVC -----
#VT: (27 10 53 24 32 28 46 84 51)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL (14) NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----
----- Combs5 -----

34589   4568    34689   12356   123569  15689   24      1389    7               
3589    2       3789    4       1579    15789   1389    6       389             
1       4678    346789  2367    23679   6789    5       389     24               
358     9       1378    13567   13567   2       1378    4       358             
2345    1457    12347   8       13457   157     6       13579   2359             
6       14578   123478  9       13457   157     12378   13578   2358             
2489    1468    5       1267    12679   3       4789    789     4689             
49      3       1469    1567    8       15679   479     2       4569             
7       68      2689    256     2569    4       389     3589    1               
245 candidates. 21 values.

----- SetVC -----
#VT: (27 10 53 24 32 28 45 84 51)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----
----- Combs5 -----
----- Combs6 -----

34589   4568    34689   12356   123569  15689   24      1389    7               
3589    2       3789    4       1579    15789   1389    6       389             
1       4678    346789  2367    23679   6789    5       389     24               
358     9       1378    13567   13567   2       1378    4       358             
2345    1457    12347   8       13457   157     6       13579   2359             
6       14578   123478  9       13457   157     12378   13578   2358             
2489    1468    5       1267    12679   3       4789    789     4689             
49      3       1469    1567    8       15679   479     2       4569             
7       68      2689    256     2569    4       389     3589    1               
245 candidates. 21 values.

----- SetVC -----
#VT: (14 10 25 17 4 12 9 36 23)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL (5 23 31) (20) (1 4 6 15 31 32 37 41 45 50 54 69 77) (23 58 67) (21 24 61) (20) (5 14)
----- EraseCC -----

----- Combs2 -----

3489    4568    34689   1236    1256    1689    24      1389    7               
3589    2       3789    4       157     1789    1389    6       389             
1       67      34689   2367    279     689     5       389     24               
358     9       1378    167     1367    2       1378    4       358             
234     1457    12347   8       1347    157     6       13579   239             
6       14578   123478  9       1347    157     12378   13578   238             
2489    1468    5       127     12679   3       489     789     4689             
49      3       1469    157     8       1679    479     2       4569             
7       68      2689    256     269     4       389     3589    1               
219 candidates. 21 values.

----- SetVC -----
#VT: (14 9 25 17 4 12 9 36 23)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----

3489    4568    34689   1236    1256    1689    24      1389    7               
3589    2       3789    4       157     1789    1389    6       389             
1       67      34689   2367    279     689     5       389     24               
358     9       1378    167     1367    2       1378    4       358             
234     1457    12347   8       1347    157     6       13579   239             
6       14578   123478  9       1347    157     12378   13578   238             
2489    1468    5       127     12679   3       489     789     4689             
49      3       1469    157     8       1679    479     2       4569             
7       68      2689    256     269     4       389     3589    1               
219 candidates. 21 values.

----- SetVC -----
#VT: (14 9 25 17 4 12 9 30 23)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----

3489    4568    34689   1236    1256    1689    24      1389    7               
3589    2       3789    4       157     1789    1389    6       389             
1       67      34689   2367    279     689     5       389     24               
358     9       1378    167     1367    2       1378    4       358             
234     1457    12347   8       1347    157     6       13579   239             
6       14578   123478  9       1347    157     12378   13578   238             
2489    1468    5       127     12679   3       489     789     4689             
49      3       1469    157     8       1679    479     2       4569             
7       68      2689    256     269     4       389     3589    1               
219 candidates. 21 values.

----- SetVC -----
#VT: (14 8 23 15 4 11 9 26 21)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL (5) NIL NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----

3489    4568    34689   1236    156     1689    24      1389    7               
3589    2       3789    4       157     1789    1389    6       389             
1       67      34689   2367    279     689     5       389     24               
358     9       1378    167     1367    2       1378    4       358             
234     1457    12347   8       1347    157     6       13579   239             
6       14578   123478  9       1347    157     12378   13578   238             
2489    1468    5       127     12679   3       489     789     4689             
49      3       1469    157     8       1679    479     2       4569             
7       68      2689    256     269     4       389     3589    1               
218 candidates. 21 values.

----- SetVC -----
#VT: (14 8 21 15 4 11 9 25 18)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL (12)
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----

3489    4568    34689   1236    156     1689    24      1389    7               
3589    2       378     4       157     1789    1389    6       389             
1       67      34689   2367    279     689     5       389     24               
358     9       1378    167     1367    2       1378    4       358             
234     1457    12347   8       1347    157     6       13579   239             
6       14578   123478  9       1347    157     12378   13578   238             
2489    1468    5       127     12679   3       489     789     4689             
49      3       1469    157     8       1679    479     2       4569             
7       68      2689    256     269     4       389     3589    1               
217 candidates. 21 values.

----- SetVC -----
#VT: (14 8 21 15 4 11 9 23 18)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL (21) NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----

3489    4568    34689   1236    156     1689    24      1389    7               
3589    2       378     4       157     1789    1389    6       389             
1       67      3469    2367    279     689     5       389     24               
358     9       1378    167     1367    2       1378    4       358             
234     1457    12347   8       1347    157     6       13579   239             
6       14578   123478  9       1347    157     12378   13578   238             
2489    1468    5       127     12679   3       489     789     4689             
49      3       1469    157     8       1679    479     2       4569             
7       68      2689    256     269     4       389     3589    1               
216 candidates. 21 values.

----- SetVC -----
#VT: (14 8 20 15 4 11 9 23 17)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----

3489    4568    34689   1236    156     1689    24      1389    7               
3589    2       378     4       157     1789    1389    6       389             
1       67      3469    2367    279     689     5       389     24               
358     9       1378    167     1367    2       1378    4       358             
234     1457    12347   8       1347    157     6       13579   239             
6       14578   123478  9       1347    157     12378   13578   238             
2489    1468    5       127     12679   3       489     789     4689             
49      3       1469    157     8       1679    479     2       4569             
7       68      2689    256     269     4       389     3589    1               
216 candidates. 21 values.

----- SetVC -----
#VT: (14 8 19 15 4 11 9 23 17)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----

3489    4568    34689   1236    156     1689    24      1389    7               
3589    2       378     4       157     1789    1389    6       389             
1       67      3469    2367    279     689     5       389     24               
358     9       1378    167     1367    2       1378    4       358             
234     1457    12347   8       1347    157     6       13579   239             
6       14578   123478  9       1347    157     12378   13578   238             
2489    1468    5       127     12679   3       489     789     4689             
49      3       1469    157     8       1679    479     2       4569             
7       68      2689    256     269     4       389     3589    1               
216 candidates. 21 values.

----- SetVC -----
#VT: (14 8 19 15 4 11 9 23 16)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----

3489    4568    34689   1236    156     1689    24      1389    7               
3589    2       378     4       157     1789    1389    6       389             
1       67      3469    2367    279     689     5       389     24               
358     9       1378    167     1367    2       1378    4       358             
234     1457    12347   8       1347    157     6       13579   239             
6       14578   123478  9       1347    157     12378   13578   238             
2489    1468    5       127     12679   3       489     789     4689             
49      3       1469    157     8       1679    479     2       4569             
7       68      2689    256     269     4       389     3589    1               
216 candidates. 21 values.

----- SetVC -----
#VT: (14 8 19 15 4 10 9 23 16)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----
----- Combs4 -----
----- Combs5 -----

3489    4568    34689   1236    156     1689    24      1389    7               
3589    2       378     4       157     1789    1389    6       389             
1       67      3469    2367    279     689     5       389     24               
358     9       1378    167     1367    2       1378    4       358             
234     1457    12347   8       1347    157     6       13579   239             
6       14578   123478  9       1347    157     12378   13578   238             
2489    1468    5       127     12679   3       489     789     4689             
49      3       1469    157     8       1679    479     2       4569             
7       68      2689    256     269     4       389     3589    1               
216 candidates. 21 values.

----- SetVC -----
#VT: (10 4 7 7 4 9 8 11 7)
Cells: NIL NIL (79) (27) NIL NIL NIL NIL NIL
SetVC: ( n4r3c9   n3r9c7   n2r1c7 )

Candidates: (4 39 41 48 50 69) (45 48 59) (3 21 32 37 54) (66) NIL NIL (50) (2 3 16 55 80) (24 63 66 72)
EraseCC: ( n2r6c9 )
----- EraseCC -----

----- SetVC -----
#VT: (10 4 7 7 4 9 8 11 7)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----

3489   456    469    36     156    1689   2      1389   7               
3589   2      378    4      157    1789   19     6      389             
1      67     69     2367   279    68     5      389    4               
358    9      1378   167    167    2      178    4      358             
24     1457   2347   8      347    157    6      13579  39             
6      14578  3478   9      34     157    178    13578  2               
249    1468   5      127    1679   3      489    789    68             
49     3      16     157    8      679    479    2      56             
7      68     2689   256    269    4      3      59     1               
173 candidates. 25 values.

----- SetVC -----
#VT: (10 3 7 7 4 9 8 8 6)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL (56) (3)
----- EraseCC -----

----- Combs2 -----

3489   456    46     36     156    1689   2      1389   7               
3589   2      378    4      157    1789   19     6      389             
1      67     69     2367   279    68     5      389    4               
358    9      1378   167    167    2      178    4      358             
24     1457   2347   8      347    157    6      13579  39             
6      14578  3478   9      34     157    178    13578  2               
249    146    5      127    1679   3      489    789    68             
49     3      16     157    8      679    479    2      56             
7      68     2689   256    269    4      3      59     1               
171 candidates. 25 values.

----- SetVC -----
#VT: (10 3 7 7 4 9 8 6 5)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL (45)
SetVC: ( n9r5c9 )

Candidates: NIL NIL NIL NIL NIL NIL NIL (15) (61)
----- EraseCC -----

----- Combs2 -----

3489   456    46     36     156    1689   2      1389   7               
3589   2      378    4      157    179    19     6      38             
1      67     69     2367   279    68     5      389    4               
358    9      1378   167    167    2      178    4      358             
24     1457   2347   8      347    157    6      1357   9               
6      14578  3478   9      34     157    178    13578  2               
249    146    5      127    1679   3      48     789    68             
49     3      16     157    8      679    479    2      56             
7      68     2689   256    269    4      3      59     1               
165 candidates. 26 values.

----- SetVC -----
#VT: (10 3 5 7 4 9 8 6 5)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL (12 28) NIL NIL NIL NIL NIL NIL
----- EraseCC -----

----- Combs2 -----
----- Combs3 -----

3489   456    46     36     156    1689   2      1389   7               
3589   2      78     4      157    179    19     6      38             
1      67     69     2367   279    68     5      389    4               
58     9      1378   167    167    2      178    4      358             
24     1457   2347   8      347    157    6      1357   9               
6      14578  3478   9      34     157    178    13578  2               
249    146    5      127    1679   3      48     789    68             
49     3      16     157    8      679    479    2      56             
7      68     2689   256    269    4      3      59     1               
163 candidates. 26 values.

----- SetVC -----
#VT: (10 3 5 7 4 5 4 6 3)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL (2 4 59) (14 30 39 41 53 58) NIL (10 26)
EraseCC: ( n3r1c4   n3r3c8   n3r2c1   n5r2c5   n5r1c2   n5r4c1   n8r3c6   n8r1c1   n9r3c3   n7r2c3
           n8r2c9   n6r3c2   n3r4c9   n6r7c9   n5r8c9   n8r9c2   n9r9c8   n4r1c3   n1r1c8   n9r2c7
           n6r1c5   n9r1c6   n1r2c6   n2r9c5   n7r3c5   n1r4c5   n1r7c4   n9r7c5   n7r8c4   n6r8c6
           n4r8c7   n6r9c3   n5r9c4   n2r3c4   n8r4c3   n6r4c4   n7r4c7   n5r5c8   n3r6c3   n4r6c5
           n8r6c8   n4r7c2   n8r7c7   n7r7c8   n9r8c1   n1r8c3   n2r5c3   n3r5c5   n7r5c6   n5r6c6
           n1r6c7   n2r7c1   n4r5c1   n1r5c2   n7r6c2 )
8 5 4   3 6 9   2 1 7
3 2 7   4 5 1   9 6 8
1 6 9   2 7 8   5 3 4
5 9 8   6 1 2   7 4 3
4 1 2   8 3 7   6 5 9
6 7 3   9 4 5   1 8 2
2 4 5   1 9 3   8 7 6
9 3 1   7 8 6   4 2 5
7 8 6   5 2 4   3 9 1

(3 4 5 5 6 2 3 4 4 4 4 4 4 4 5 2 2 2 3)
puzzle in 6(1)-Template
P.O.
 
Posts: 2112
Joined: 07 June 2021

Re: Pattern Overlay Method

Postby StrmCkr » Wed Dec 24, 2025 10:39 am

any idea what denis is doing different to get his "Tk score down to 4?" I cannot figure that out atm

how is my computation time of 18s :)
Some do, some teach, the rest look it up.
stormdoku
User avatar
StrmCkr
 
Posts: 1492
Joined: 05 September 2006

Re: Pattern Overlay Method

Postby P.O. » Wed Dec 24, 2025 10:53 am

Your time is excellent compared to mine.
Regarding Denis's implementation, here is the explanation I gave to Coloin.
P.O.
 
Posts: 2112
Joined: 07 June 2021

Re: Pattern Overlay Method

Postby StrmCkr » Fri Dec 26, 2025 8:34 am

i really don't get what he did there, i cannot replicate what i am missing/overlooked to replicate it....
Some do, some teach, the rest look it up.
stormdoku
User avatar
StrmCkr
 
Posts: 1492
Joined: 05 September 2006

Re: Pattern Overlay Method

Postby P.O. » Fri Dec 26, 2025 9:59 am

I haven't replicated what Denis did; Blue seems to have a similar implementation to Denis's, as it appears to have the same results.
The fact is that it's possible to test the validity of templates and combinations within the context of the current possible templates.
For example, once the templates are retrieved, a template for value 1 is valid if it's compatible with at least one template for each of the other values.
Similarly for combinations, for example a combination (1 2) is valid if it is compatible with at least one template for each of the other values
Performing these kinds of checks can lead to more template eliminations and therefore more candidate eliminations or placements.
This reduces the template depth of a puzzle, but it's not my preferred method.
What I prefer is the purely combinatorial method, eliminating templates that don't appear in any of the combinations.
P.O.
 
Posts: 2112
Joined: 07 June 2021

Re: Pattern Overlay Method

Postby rjamil » Sat Dec 27, 2025 1:27 am

P.O. wrote:Similarly for combinations, for example a combination (1 2) is valid if it is compatible with at least one template for each of the other values
Performing these kinds of checks can lead to more template eliminations and therefore more candidate eliminations or placements.
This reduces the template depth of a puzzle, but it's not my preferred method.

In my opinion, combination of (1 2) is not either equal to or same as the combination of (2 1).

In my limited knowledge, "combination of (1 2) is valid if it is compatible with at least one template for each of the other valies" is simply none other than that checking the combination of (1 2 3) (1 2 4) ... (1 2 9), without removing any intermediate templates.

Combination (1 2 3) means to check all valid templates of digit 1 against at least one of the digits 2 and 3 valid templates. similarly, (2 1 3) means to check all valid templates of digit 2 against at least one of the digits 1 and 3 valid templates, and so on.

Let for example, digit 1 valid templates are 10, digit 2 valid templates are 8 and digit 3 valid templates are 6. I check all templates of digit 1 templates compatible with digit 2 and 3 templates simultaneously/concurrently. I know that, if digit 1 template not compatible with all combinations of digits 2 and 3 templates then it is considered as invalid for all other combinations. But again, for simplicity, I check again in four digits combination, i.e., combination (1 2 3 4) (1 2 3 5) ... (1 2 3 9).

I admit that my way of doing is replicated work but simple one and without keep tracking individual digit valid templates. If I searched single digit valid templates with highly optimised 46,656 indexed templates efficiently then, it is easy to search multi digit valid templates too.

I have share what I understand the simpliest way to tackle the POM.

R. Jamil
rjamil
 
Posts: 911
Joined: 15 October 2014
Location: Karachi, Pakistan

Re: Pattern Overlay Method

Postby StrmCkr » Wed Jan 07, 2026 9:19 pm

i built a 2nd version of my Template code to try to figure out how Denise's stuff.
this time i build a full table as a Tree :
Ti parent node -> child -> grand child -> great grand child ...
children represent K depth level

generalized T k delete rule 1:
for Each Ti at child depth k, it must have a representation for each combo-set size K that include Ti's digit
meaning at k =1 : there must be at least 1 representation, k=2 : 8, k=3:28, k=4: 56 and so on.
nCr = (8, k-1) combinations.

if there is < nCr combinations represented at depth K, then the Ti is excluded.
Code: Select all
.----------.-------------.---------.
| 3  8  6  | 79   27  29 | 1  4  5 |
| 7  4  5  | 6    8   1  | 9  2  3 |
| 2  9  1  | 3    4   5  | 6  7  8 |
:----------+-------------+---------:
| 1  5  38 | 78   37  4  | 2  9  6 |
| 4  2  39 | 19   13  6  | 8  5  7 |
| 6  7  89 | 589  25  29 | 4  3  1 |
:----------+-------------+---------:
| 8  1  7  | 2    9   3  | 5  6  4 |
| 9  6  4  | 15   15  7  | 3  8  2 |
| 5  3  2  | 4    6   8  | 7  1  9 |
'----------'-------------'---------'


At k level 4 the following occurs:
ELIMINATE Ti { digit=3, templateId=4437 } — seen 55 / 56
ELIMINATE Ti { digit=5, templateId=43865 } — seen 55 / 56
ELIMINATE Ti { digit=7, templateId=21156 } — seen 55 / 56
ELIMINATE Ti { digit=9, templateId=18644 } — seen 55 / 56
ELIMINATE Ti { digit=9, templateId=29024 } — seen 55 / 56

cross matched to my first draft of Tk delete at depth 4.
the missing representation :
T4-delete: digit 3 template 4437 cannot form Template[4] with digits {3,2,7,9}
T4-delete: digit 5 template 43865 cannot form Template[4] with digits {5,7,8,9}
T4-delete: digit 7 template 21156 cannot form Template[4] with digits {7,2,5,8}
T4-delete: digit 9 template 18644 cannot form Template[4] with digits {9,3,7,8}
T4-delete: digit 9 template 29024 cannot form Template[4] with digits {9,1,5,8}

referencing the printed copies of the 4437 tree - 2,3,7,9 is not represented confirming the 1 missing combination.

this rule is solid...now to figure out the other one....
Some do, some teach, the rest look it up.
stormdoku
User avatar
StrmCkr
 
Posts: 1492
Joined: 05 September 2006

Re: Pattern Overlay Method

Postby P.O. » Thu Jan 08, 2026 11:59 am

Code: Select all
my analysis of the puzzle:

3    8    6    79   27   29   1    4    5             
7    4    5    6    8    1    9    2    3             
2    9    1    3    4    5    6    7    8             
1    5    38   78   37   4    2    9    6             
4    2    39   19   13   6    8    5    7             
6    7    89   589  25   29   4    3    1             
8    1    7    2    9    3    5    6    4             
9    6    4    15   15   7    3    8    2             
5    3    2    4    6    8    7    1    9             
31 candidates. 66 values.

386...14574568192329134567815...429642...685767....431817293564964..7382532468719

the possible templates after initialization:

#VT: (2 2 2 1 2 1 2 2 3)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL NIL
Candidates: NIL NIL NIL NIL NIL NIL NIL NIL NIL

#1: ((7 15 21 28 41 54 56 67 80) (7 15 21 28 40 54 56 68 80))
#2: ((6 17 19 34 38 50 58 72 75) (5 17 19 34 38 51 58 72 75))
#3: ((1 18 22 32 39 53 60 70 74) (1 18 22 30 41 53 60 70 74))
#4: ((8 11 23 33 37 52 63 66 76))
#5: ((9 12 24 29 44 50 61 67 73) (9 12 24 29 44 49 61 68 73))
#6: ((3 13 25 36 42 46 62 65 77))
#7: ((5 10 26 31 45 47 57 69 79) (4 10 26 32 45 47 57 69 79))
#8: ((2 14 27 31 43 48 55 71 78) (2 14 27 30 43 49 55 71 78))
#9: ((6 16 20 35 40 48 59 64 81) (6 16 20 35 39 49 59 64 81) (4 16 20 35 39 51 59 64 81))

without performing any validity checks, I need combinations of size 4 to solve it
Any of these combinations: (2 5 7 8) (5 7 8 9) (3 7 8 9) (2 3 7 9) (1 5 8 9)

for example (1 5 8 9)
Combining the templates for these values gives 4 instances, which eliminates one template for 9 and consequently places n9r5c3, thus solving the puzzle

(1 5 8 9): 4 instances
.8.9..1.5..5.819...91..5..815.8...9...9.1.85...85.9..181..9.5..9..15..8.5....8.19
.8...91.5..5.819...91..5..815.8...9...91..85...895...181..9.5..9..51..8.5....8.19
.8.9..1.5..5.819...91..5..815.8...9...91..85...8.59..181..9.5..9..51..8.5....8.19
.8.9..1.5..5.819...91..5..8158....9...91..85....859..181..9.5..9..51..8.5....8.19

......1.......1.....1......1............1............1.1..........1............1.
......1.......1.....1......1...........1.............1.1...........1...........1.

........5..5...........5....5..............5.....5..........5.....5.....5........
........5..5...........5....5..............5....5...........5......5....5........

.8...........8............8...8...........8....8......8...............8......8...
.8...........8............8..8............8.....8.....8...............8......8...

.....9.........9...9..............9...9.........9.........9....9................9
...9...........9...9..............9...9...........9.......9....9................9


#VT: (2 2 2 1 2 1 2 2 2)
Cells: NIL NIL NIL NIL NIL NIL NIL NIL (39)
SetVC: ( n9r5c3   n1r5c4   n3r5c5   n8r6c3   n5r8c4   n1r8c5   n3r4c3   n7r4c5   n9r6c4   n2r6c6
         n7r1c4   n2r1c5   n9r1c6   n8r4c4   n5r6c5 )
3 8 6   7 2 9   1 4 5
7 4 5   6 8 1   9 2 3
2 9 1   3 4 5   6 7 8
1 5 3   8 7 4   2 9 6
4 2 9   1 3 6   8 5 7
6 7 8   9 5 2   4 3 1
8 1 7   2 9 3   5 6 4
9 6 4   5 1 7   3 8 2
5 3 2   4 6 8   7 1 9


with validity checks it is solved with combinations of size 2
Any of these combinations: (5 7) (2 3) (8 9) (5 9)

for example (5 9)
Combining the templates for these values gives 5 instances

(5 9): 5 instances
.....9..5..5...9...9...5....5.....9....9...5...9.5........9.5..9..5.....5.......9
.....9..5..5...9...9...5....5.....9...9....5....95........9.5..9..5.....5.......9
...9....5..5...9...9...5....5.....9...9....5.....59.......9.5..9..5.....5.......9
.....9..5..5...9...9...5....5.....9....9...5...95.........9.5..9...5....5.......9
...9....5..5...9...9...5....5.....9...9....5....5.9.......9.5..9...5....5.......9

After checking these instances, only 2 remain
.....9..5..5...9...9...5....5.....9...9....5....95........9.5..9..5.....5.......9
...9....5..5...9...9...5....5.....9...9....5....5.9.......9.5..9...5....5.......9

which eliminates one template for 9

#VT(2 2 2 1 2 1 2 2 2)

Checking the remaining templates leaves only one for each value

#VT(1 1 1 1 1 1 1 1 1)


(5 9): 1 instance
.....9..5..5...9...9...5....5.....9...9....5....95........9.5..9..5.....5.......9

........5..5...........5....5..............5.....5..........5.....5.....5........

.....9.........9...9..............9...9.........9.........9....9................9


#VT: (1 1 1 1 1 1 1 1 1)
Cells: (40 68) (5 51) (30 41) NIL (50 67) NIL (4 32) (31 48) (6 39 49)
SetVC: ( n7r1c4   n2r1c5   n9r1c6   n3r4c3   n8r4c4   n7r4c5   n9r5c3   n1r5c4   n3r5c5   n8r6c3
         n9r6c4   n5r6c5   n2r6c6   n5r8c4   n1r8c5 )
3 8 6   7 2 9   1 4 5
7 4 5   6 8 1   9 2 3
2 9 1   3 4 5   6 7 8
1 5 3   8 7 4   2 9 6
4 2 9   1 3 6   8 5 7
6 7 8   9 5 2   4 3 1
8 1 7   2 9 3   5 6 4
9 6 4   5 1 7   3 8 2
5 3 2   4 6 8   7 1 9
P.O.
 
Posts: 2112
Joined: 07 June 2021

Previous

Return to Advanced solving techniques