Sudoko kaj sudokilo aŭ sudokprogramo 
Aŭtoro : Christian Bertin
Dato : 9-a de Novembro 2006
Elŝutebla programo, kiun mi faris, por generi kaj solvi sudokojn: sudokilo versio 1.2a.
"Sudokilo" estas senpaga por esperantistoj. Por pluludi post la provperiodo, sufiĉas peti licenconumeron de la aŭtoro per elektronika mesaĝo al "christian.bertin3[@]wanadoo.fr" (forigu la rektajn krampojn de la elektronika adreso).

1. Glosaro


Sudoko: tabelo el 9 linioj kaj 9 kolumnoj, dividita en 9 9-fakaj kvadratoj. En ĉiu linio, en ĉiu kolumno kaj en ĉiu 9-faka kvadrato, povas esti nur unu el la ciferoj 1 ĝis 9.
Sudoki: ludi per sudoko, solvi sudokenigmon.
Sudokisto: adepto de tiu sudokenigmo.
Sudokanto: iu kiu sudokas.
Subtabelo: ĉiu el la 9-fakaj kvadratoj, kiuj konsistigas sudokon.
Kompleta sudoko

2. Reguloj por solvi sudokon

Jen komenca sudoko.

Komence la sudoko enhavas nur proksimume unu trionon da fakoj kun ciferoj kaj la aliaj fakoj estas liberaj, kiel montras la apuda bildo.

Vera sudoko havas nur unu solvon.

La tabeloj, kiuj havas plurajn solvojn, ne intersas nin.

Solvi sudokon signifas meti ciferojn en ĉiujn liberajn fakojn tiel ke la iu ajn cifero estu nur unu-foja en ĉiu linio, en ĉiu kolumno kaj en ĉiu 9-faka subtabelo.

Komenca sudoko
Jen kelkaj reguloj, komencante per la plej simpla.

Regulo 1: cifero videbla sur du linioj aŭ du kolumnoj de 3 horizontalaj aŭ vertikalaj subtabeloj

Por ĉiu cifero, kiu aperas dufoje en tri sinsekvaj korizontalaj subtabeloj, kontrolu ĉu en la tria subtabelo, kie mankas tiu cifero, estas nur unu libera fako sur la tria linio. En tiu kazo metu tiun ciferon.

Same faru por la du alia sinsekvaj vicoj de 3 subtabeloj.

Same faru laŭ la kolumnoj por ĉiu kolumno de 3 sinsekvaj subtabeloj.

Sur la apuda supra sudoko, laŭ la unua regulo, vi povas meti la ciferon:
  • "4" sur la dua subtabelo de la unua vico de subtabeloj sur la fako L3K5 (linio 3 kolumno 5),
  • "8" sur la tria subtabelo de la dua vico de subtabeloj sur la fako L4K7,
  • "2" sur la dua subtabelo de la tria vico de subtabeloj sur la fako L7K5

Sur la apuda malsupra sudoko, laŭ la unua regulo, vi povas meti la ciferon:

  • "4" sur la unua subtabelo de la tria kolumno de subtabeloj sur la fako L1K9,

Ekzemplo de la unua regulo

Ekzemplo de la unua regulo


Regulo 2 : cifero videbla sur unu linio kaj sur unu kolumno sed neĉeesta en la subtabelo sur kiu ili kruciĝas.

Por ĉiu cifero, vi devas rigardi al la aliaj horizontalaj subtabeloj laŭ la linio, ĉu tiu cifero mankas kaj tiam ĉu tiu cifero estas ankaŭ en alia vertikala subtabelo, tiam ĉu restas nur unu fako en tiu horizontala subtabelo por meti tiun ciferon?

Poste por ĉiu cifero vi rigardu al la aliaj vertikalaj subtabeloj.

Sur la apuda supra sudoko, laŭ la dua regulo, vi povas meti la ciferon :

  • "3" sur la unua subtabelo de la unua horizontala vico de subtabeloj, sur la fako L1K3,
  • "6" sur la tria subtabelo de la unua horizontala vico de subtabeloj sur la fako L1K9.

Sur la apuda malsupra sudoko, laŭ la dua regulo, vi povas meti la ciferon :

  • "8" sur la unua subtabelo de la tria horizontala vico de subtabeloj sur la fako L8K3,
  • "6" sur la tria subtabelo de la unua horizontala vico de subtabeloj sur la fako L2K7.

Ekzemplo de dua regulo

Ekzemplo de dua regulo


Regulo 3: cifero kun nur unu metebleco sur linio aŭ kolumno

Por ĉiu linio, vi rigardas ĉu mankanta cifero estas metebla en nur unu pozicio.

Por ĉiu kolumno, vi rigardas ĉu mankanta cifero estas metebla en nur unu pozicio.

Rigardu la apudan supran sudokon.

Rigardu la 6-an vicon. Sur tiu linio la cifero "9" havas nur unu meteblecon, kruciĝe de la kolumno 4. Neniu el la aliaj liberaj fakoj de tiu linio rajtas akcepti tiu ciferon.

Rigardu la apudan malsupran sudokon.

Rigardu la trian kolumnon. Sur tiu kolumno la cifero "8" havas nur unu meteblecon, kruciĝe de la linio 1. Neniu el la aliaj liberaj fakoj de tiu kolumno rajtas akcepti tiu ciferon.

Ekzemplo de tria regulo

Ekzemplo de tria regulo


Regulo 4: malplena fako, kiu povas akcepti nur unu ciferon pro la jam ekzistantaj ciferoj sur la sama linio, la sama kolumno aŭ sur la sama subtabelo.

Por ĉiu libera fako, rigardu ĉu estas nur unu metebla cifero pro la jam metitaj ciferoj aŭ sur la sama linio aŭ sur la sama kolumno aŭ sur la sama subtabelo.

Rigardu la apudan supran sudokon.

Ĉe la kruciĝo de la linio 6 kaj de la kolumno 4, nur la cifero "1" estas metebla ĉar ĉiuj aliaj ciferoj estas jam aŭ sur la linio aŭ sur la kolumno aŭ sur la centra subtabelo.

Rigardu la apudan malsupran sudokon.

Ĉe la kruciĝo de la linio 9 kaj de la kolumno 3, nur la cifero "2" estas metebla ĉar ĉiuj aliaj ciferoj estas jam aŭ sur la linio aŭ sur la kolumno aŭ sur la centra subtabelo.

Ekzemplo de kvara regulo

Ekzemplo de kvara regulo

Jen kiel la programo aplikas tiujn logikajn regulojn, paŝon post paŝo.

Paŝo 1:  la programo aplikas la regulojn 1 ĝis 4 en kreska ordo per la jam metitaj ciferoj.

Ekde kiam la programo metas ciferon per unu el tiuj reguloj, ĝi rekomencas per apliko de la unua regulo, ktp.

Post sensukcesa provo de la 4 logikaj reguloj, la programo aliras la sekvantan paŝon.

Paŝo 2: la programo igas ciferon deviga ĉar jam 3 ciferoj estas devigaj sur linio de iu subtabelo kaj alia cifero estas deviga sur alia linio de alia samnivela horizontala subtabelo. Tiam tiu alia cifero estas deviga sur la tria linio de la unua subtabelo.

Ekzemplo sur 3 superaj horizontalaj subtabeloj:

   +===+====+====+===+===+===+=====+=====+=====+

L1 + - |  - | -  ^ - | - | 5 ^ <----(234)----->|

L2 +<----(7)---->^ - | - | - ^  -  |  -  |  -  |

L3 + - |  - | -  ^   | - | - ^  -  |  -  |  -  |

   +===+====+====+===+===+===+=====+=====+=====+

Klarigoj:

v    La ciferoj 2, 3 kaj 4 estas devigaj sur la unua linio de la tria subtabelo

v    La cifero "7" estas deviga sur la dua linio de la unua subtabelo

Konkludo: la cifero "7" fariĝas deviga sur la tria linio de la tria subtabelo kaj sur la unua linio de la dua subtabelo.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifero fariĝis deviga, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu cifero fariĝis deviga, tiam la programo aliras la sekvantan paŝon.

Paŝo 3: la programo igas ciferon deviga en subtabelo sur linio aŭ sur kolumno ĉar estas nur du eblaj pozicioj sur tiu linio aŭ kolumno kaj ambaŭ en la sama subtabelo.

Ekzemplo sur 3 horizontalaj subtabeloj:

   +===+===+===+===+===+===+===+===+===+

L1 + - |(3)|(3)^ - | 1 | 4 ^ - | 5 | 8 |

L2 +   |   |   ^   |   |   ^   |   |   |

L3 +   |   |   ^   |   |   ^   |   |   |

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    La cifero "3" estas metebla sur la unua linio nur je 2 pozicioj kaj ambaŭ  estas en la unua subtabelo

Konkludo: la cifero "3" estas deviga sur la unua linio de la unua horizontala subtabelo.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifero fariĝis deviga, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu cifero fariĝis deviga, tiam la programo aliras la sekvantan paŝon.

Paŝo 4: la programo igas ciferon deviga ĉar ĝi estas metebla nur sur la tri fakoj de iu linio aŭ kolumno interne de subtabelo.

Ekzemplo sur 3 horizontalaj subtabeloj:

   +===+===+===+===+===+===+===+===+===+

L1 +(3)|(3)|(3)^ - | 1 | 4 ^ - | 5 | 8 |

L2 +   |   |   ^   |   |   ^   |   |   |

L3 +   |   |   ^   |   |   ^   |   |   |

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    La cifero "3" estas metebla sur la unua linio nur je 3 pozicioj kaj ĉiuj  estas en la unua subtabelo

Konkludo: la cifero "3" estas deviga sur la unua linio de la unua horizontala subtabelo.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifero fariĝis deviga, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu cifero fariĝis deviga, tiam la programo aliras la sekvantan paŝon.

Paŝo 5: la programo igas ciferon deviga ĉar estas nur du eblaj pozicioj por tiu cifero sur subtabelo kaj tiuj pozicioj estas sur la sama linio aŭ kolumno.

Ekzemplo:

   +===+===+===+===+===+===+===+===+===+

L1 + 3 | - | - ^ - |(1)| 4 ^ - | 5 | 8 |

L2 +   |   |   ^   |(1)|   ^   |   |   |

L3 +   |   |   ^   | 9 |   ^   |   |   |

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    En la dua horizontala subtabelo, la cifero  "1" estas metebla nur sur 2 pozicioj, ambaŭ estas sur la dua kolumno de tiu subtabelo.

Konkludo: la cifero "1" estas deviga sur la dua kolumno de la dua horizontala subtabelo.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifero fariĝis deviga, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu cifero fariĝis deviga, tiam la programo aliras la sekvantan paŝon.

Paŝo 6: la programo igas ciferon deviga sur linio de subtabelo ĉar tiu cifero havas eblajn poziciojn nur sur la aliaj linioj sur la du aliaj horizontalaj subtabeloj (aŭ sur kolumno de subtabelo ĉar tiu cifero havas eblajn poziciojn nur sur la aliaj kolumnoj sur la aliaj vertikalaj subtabeloj)

Ekzemplo:

   +===+===+===+===+===+===+===+===+===+

L1 + 3 |(9)| - ^ - | - | - ^ 5 |(9)| 8 |

L2 +(9)|   |   ^   | - |   ^   |(9)|   |

L3 + 1 |   | 7 ^   | 4 |   ^ 3 | - | 6 |

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    Sur la unua kaj la tria horizontalaj subtabeloj, la cifero "9" estas metebla nur sur la du unual linioj.

Konkludo: la cifero "9" estas deviga sur la tria linio de la dua horizontala subtabelo.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifero fariĝis deviga, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu cifero fariĝis deviga, tiam la programo aliras la sekvantan paŝon.

Paŝo 7: la programo igas ciferon deviga sur linio de subtabelo ĉar tiu cifero estas metebla nur sur la du aliaj linioj sur la du aliaj horizontalaj subtabeloj (aŭ sur kolumno de subtabelo ĉar tiu cifero estas metebla nur sur la du aliaj kolumnoj sur la du aliaj vertikalaj subtabeloj)

Ekzemplo:

   +===+===+===+===+===+===+===+===+===+

L1 + 5 | 9 | - ^ - | - | - ^ - | - | 8 |

L2 +<--(123)-->^   | - | - ^<--(456)-->|

L3 + 6 |   | 7 ^   | 4 |   ^ 3 | - | 2 |

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    La ciferoj 1, 2 kaj 3 estas devigaj sur la dua linio de la unua horizontala subtabelo,

v    La ciferoj 4, 5 kaj 6 estas devigaj sur la dua linio de la tria horizontala subtabelo,

Konkludo: la ciferoj 7, 8 kaj 9 estas devigaj sur la dua linio de la dua horizontala subtabelo.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifero fariĝis deviga, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu cifero fariĝis deviga, tiam la programo aliras la sekvantan paŝon.

Paŝo 8: la programo igas 3 ciferojn devigaj sur linio de subtabelo ĉar ĉiuj aliaj ciferoj estas jam metitaj aŭ devigaj sur la aliaj linioj de la subtabelo aŭ jam metitaj aŭ devigaj  sur la sama linio en la aliaj horizontalaj subtabeloj (aŭ sur kolumno de subtabelo ĉar ĉiuj aliaj ciferoj estas jam metitaj aŭ devigaj sur la aliaj kolumnoj de la subtabelo aŭ jam metitaj aŭ devigaj  sur la sama kolumno en la aliaj vertikalaj subtabeloj)

Ekzemplo:

   +===+===+===+===+===+===+===+===+===+

L1 + - | - | - ^ - | - | - ^ - | 5 | 3 |

L2 + - | - | - ^ - | - | - ^ 6 | - | 1 |

L3 + 4 |   | 2 ^   | - |   ^ - | - | - |

   +===+===+===+===+===+===+===+===+===+

Konkludo: la ciferoj 7, 8 kaj 9 estas devigaj sur la tria linio de la tria horizontala subtabelo.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifero fariĝis deviga, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu cifero fariĝis deviga, tiam la programo aliras la sekvantan paŝon.

Paŝo 9: la programo igas ciferon deviga sur linio de subtabelo ĉar tiu  cifero estas jam metita aŭ deviga sur la du aliaj linioj de la du aliaj horizontalaj subtabeloj (aŭ sur kolumno de subtabelo ĉar tiu cifero estas jam metita aŭ deviga sur la du aliaj kolumnoj de la du aliaj vertikalaj subtabeloj).

Ekzemplo:

   +===+===+===+===+===+===+===+===+===+

L1 + 5 | 9 | - ^ - | 7 | - ^ - | - | 8 |

L2 +(7)|(7)|(7)^   | - |   ^   | 4 |   |

L3 + 6 |   | - ^   | 4 |   ^ 3 | - | - |

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    La cifero 7 estas deviga sur la dua linio de la unua horizontala subtabelo,

v    La cifero 7 estas jam metita sur la unua linio de la dua horizontala subtabelo,

Konkludo: la cifero 7 estas deviga sur la tria linio de la tria horizontal subtabelo.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifero fariĝis deviga, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu cifero fariĝis deviga, tiam la programo aliras la sekvantan paŝon.

Paŝo 10: la programo identigos la ciferparojn, kiuj havas nur du samajn poziciojn aŭ sur subtabelo aŭ sur linio aŭ sur kolumno.

Ekzemplo:

   +=====+=======+=====+===+===+===+===+===+===+

L1 +  5  |   9   |  -  ^ - | 7 | - ^ - | - | 8 |

L2 +(17) | (178) |     ^   | - |   ^   | 4 |   |

L3 +  6  |       |  -  ^   | 4 |   ^ 3 | - | - |

   +=====+=======+=====+===+===+===+===+===+===+

Klarigoj:

v    La ciferoj 1 kaj 7  estas meteblaj nur sur du pozicioj sur la dua linio de la unua horizontala subtabelo,

Konkludo: ĉiuj aliaj ciferoj estas forigendaj de tiuj du fakoj, kaj aparte la cifero 8 de la dua fako sur la dua linio.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ estas ciferparo por nur du fakoj, meti plian ciferon per la reguloj 1 ĝis 4.

Se estas neniu ciferparo por nur du fakoj, tiam la programo aliras la sekvantan paŝon.

Paŝo 11: la programo identigos la cifertriopojn, kiuj havas nur 3 samajn eblajn poziciojn sur iu linio.

Ekzemplo:

   +=====+====+===+===+=====+===+===+===+===+

L1 +  5  |  9 | - ^ - |  6  | - ^ - | - | 8 |

L2 +(127)|(17)|   ^   |(273)|   ^   | 4 |   |

L3 +  6  |  - | - ^   |  4  |   ^ 3 | - |   |

   +=====+====+===+===+=====+===+===+===+===+

Klarigoj:

v    La ciferoj 1, 2 kaj 7  estas meteblaj nur sur tri pozicioj sur la dua linio de la unua horizontala subtabelo,

Konkludo: ĉiuj aliaj ciferoj estas forigendaj de tiuj tri fakoj, kaj aparte la cifero 3 de la kvina fako sur la dua linio.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifertriopo por nur tri fakoj, meti plian ciferon per la reguloj 1 ĝis 4.

Se estas neniu cifertriopo por nur tri fakoj, tiam la programo aliras la sekvantan paŝon.

Paŝo 12: la programo identigos la cifertriopojn , kiuj havas nur 3 samajn eblajn poziciojn sur iu kolumno.

Tio estas la paŝo 11 aplikita al la kolumnoj.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifertriopo por nur tri fakoj, meti plian ciferon per la reguloj 1 ĝis 4.

Se estas neniu cifertriopo por nur tri fakoj, tiam la programo aliras la sekvantan paŝon.

Paŝo 13: la programo identigos la cifertriopojn , kiuj havas nur 3 samajn eblajn poziciojn sur iu subtabelo.

Tio estas la paŝo 11 aplikita al la subtabeloj.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu cifertriopo por nur tri fakoj, meti plian ciferon per la reguloj 1 ĝis 4.

Se estas neniu cifertriopo por nur tri fakoj, tiam la programo aliras la sekvantan paŝon.

Paŝo 14: la programo identigos la ciferojn, kiuj havas nur du samajn eblajn poziciojn sur du malsamaj linioj (4 pozicioj laŭ formo de ortogramo) por forigi la eblecojn de tiu cifero sur la aliaj linioj laŭ la kolumnoj.

Ekzemplo:

Kol. 1   2   3   4   5   6   7   8   9

   +===+===+===+===+===+===+===+===+===+

L1 + 5 | 9 | - ^ - | - | - ^ - |###| 8 |

L2 + 1 |(7)| - ^   | - |   ^   |(7)|   |

L3 + 6 |###| - ^   | 4 |   ^ 3 |###| - |

   +===+===+===+===+===+===+===+===+===+

L4 + - |###| - ^ - | - | - ^ - |###| 3 |

L5 + - |(7)| - ^   | - |   ^   |(7)|   |

L6 + 2 |###| - ^   | 5 |   ^ 4 |###| - |

   +===+===+===+===+===+===+===+===+===+

L7 + - | 4 | - ^ - | - | - ^ - |###| 2 |

L8 + - |###| - ^   | - |   ^   | 9 |   |

L9 + 8 |###| - ^   | 1 |   ^ 6 |###| - |

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    La ciferoj 7 estas metebla sur la dua linio nur sur la kolumnoj 2 kaj 8

v    La ciferoj 7 estas metebla sur la kvina linio nur sur la kolumnoj 2 kaj 8

Konkludo: la cifero 7 estas forigenda de ĉiuj aliaj fakoj de tiuj du kolumnoj (fakoj kun marko ###).

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu ciferebleco estis forigita, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu ciferebleco estis forigita, tiam la programo aliras la sekvantan paŝon.

Paŝo 15: la programo identigos la ciferojn, kiuj havas nur du samajn eblajn poziciojn sur du malsamaj kolumnoj (4 pozicioj laŭ formo de ortogramo) por forigi la eblecojn de tiu cifero sur la aliaj kolumnoj laŭ la linioj.

Tio estas la paŝo 14 aplikita al la kolumnoj.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu ciferebleco estis forigita, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu ciferebleco estis forigita, tiam la programo aliras la sekvantan paŝon.

Paŝo 16: la programo identigos la ciferojn, kiuj havas nur du eblajn poziciojn sur tri malsamaj linioj sed kun samaj laŭkolumnaj pozicioj (6 pozicioj laŭ formo de ŝtuparo) por forigi la eblecojn de tiu cifero sur la aliaj linioj sur tiuj tri kolumnoj.

Ekzemplo:

Kol. 1   2   3   4   5   6   7   8   9

   +===+===+===+===+===+===+===+===+===+

L1 + 5 | 9 | - ^ - | - | - ^ - |###| 8 |

L2 + 1 |(7)| - ^   |(7)|   ^   | - |   |

L3 + 6 |###| - ^   | 4 |   ^ 3 |###| - |

   +===+===+===+===+===+===+===+===+===+

L4 + - |###| - ^ - | - | - ^ - |###| 3 |

L5 + - | - | - ^   |(7)|   ^   |(7)|   |

L6 + 2 |###| - ^   | 5 |   ^ 4 |###| - |

   +===+===+===+===+===+===+===+===+===+

L7 + - | 4 | - ^ - | - | - ^ - |###| 2 |

L8 + - |###| - ^   | - |   ^   | 9 |   |

L9 + 8 |(7)| - ^   | 1 |   ^ 6 |(7)| - |

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    La ciferoj 7 estas metebla sur la dua linio nur sur la kolumnoj 2 kaj 5

v    La ciferoj 7 estas metebla sur la kvina linio nur sur la kolumnoj 5 kaj 8

v    La ciferoj 7 estas metebla sur la naŭa linio nur sur la kolumnoj 2 kaj 8

Konkludo: la cifero 7 estas forigenda de ĉiuj aliaj fakoj de tiuj tri kolumnoj (fakoj kun marko ###).

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu ciferebleco estis forigita, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu ciferebleco estis forigita, tiam la programo aliras la sekvantan paŝon.

Paŝo 17: la programo identigos la ciferojn, kiuj havas nur du eblajn poziciojn sur tri malsamaj kolumnoj sed kun samaj laŭliniaj pozicioj (6 pozicioj laŭ formo de ŝtuparo) por forigi la eblecojn de tiu cifero sur la aliaj kolumnoj sur tiuj tri linioj.

Tio estas la paŝo 16 aplikita al la kolumnoj.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu ciferebleco estis forigita, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu ciferebleco estis forigita, tiam la programo aliras la sekvantan paŝon.

Paŝo 18: la programo identigos ciferĉenon, kies finoj forke kruciĝas en fako, kie ciferebleco estas forigenda. La ciferĉeno komenciĝas per kolumno kun nur du eblecoj por iu cifero, la unua sur la linio de la celata fako, la alia estante unu el nur du eblecoj de tiu cifero sur ĝia subtabelo, ankaŭ la alia fako estante unu el nur du eblecoj de tiu cifero sur linio, la dua ebleco estante sur la kolumno de la celata fako.

Ekzemplo:

Kol. 1   2   3   4   5   6   7   8   9

   +===+===+===+===+===+===+===+===+===+

L1 + 5 | 9 | - ^ - | - | - ^ - | - | 8 |

L2 + 1 |(7)| - ^   | - |   ^   |###|   |

L3 + 6 | - | - ^   | 4 |   ^ 3 | - | - |

   +===+===+===+===+===+===+===+===+===+

L4 + - | - | - ^ - | - | - ^ - | - | 3 |

L5 +(7)| - | - ^   | - |   ^   |(7)|   |

L6 + 2 |(7)| - ^   | 5 |   ^ 4 | - | - |

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    La ciferoj 7 estas metebla sur la dua kolumno nur sur la linioj 2 kaj 6

v    La ciferoj 7 estas metebla sur la meza maldekstra subtabelo nur en L5K1 kaj en L6K2

v    La ciferoj 7 estas meteblaj sur la kvina linio nur sur la kolumnoj 1 kaj 8

Konkludo: la cifero 7 estas forigenda je la kruciĝo de la linio 2 kaj de la kolumno 8 (fako kun marko ###).

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu ciferebleco estis forigita, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu ciferebleco estis forigita, tiam la programo aliras la sekvantan paŝon.

Paŝo 19: (konfiguro XY-YZ kaj XZ sur du linioj de tri subtabeloj). La programo identigos sur iu linio en du malsamaj subtabeloj, fakon kun 2 eblaj ciferoj X kaj Y kaj alia fako kun nur du eblaj ciferoj Y kaj Z, kaj sur alia linio, en subtabelo laŭ kolumno kun la subtabelo kun la fako X-Y, fakon kun nur la du eblaj ciferoj X kaj Z, tiam la cifero Z estas forigenda de la eblaj ciferoj sur la linio de la fako X-Y nur en la subtabelo kaj sur la linio de la fako X-Z sed nur en la subtabelo kun la fako Y-Z (fakoj kun marko ###). Vidi ekzemplon 1.

Se la fako kun nur du eblaj ciferoj X kaj Z estas en la subtabelo laŭ kolumno kun la subtabelo enhavanta la fakon Y-Z, tiam la cifero X estas forigenda de la linio de la fako Y-Z sed nur en la subtabelo kaj sur la linio de la fako X-Z sed nur en la subtabelo de la fako X-Y (fakoj kun marko ###). Vidi ekzemplon 2.

Ekzemplo 1:

Kol.  1     2    3   4    5    6   7   8   9  

   +=====+=====+===+===+=====+===+===+===+===+

L1 + ### |(X-Y)|###^ - |(Y-Z)| - ^ - | - | 8 |

L2 +  1  |  -  | - ^   |  -  |   ^   | - |   |

L3 +  6  |  -  | - ^   |  4  |   ^ 3 | - | - |

   +=====+=====+===+===+=====+===+===+===+===+

L4 +  -  |  -  | - ^ - |  -  | - ^ - | - | 3 |

L5 +(X-Z)|  -  | - ^###| ### |###^   | - |   |

L6 +  2  |  7  | - ^   |  5  |   ^ 4 | - | - |

   +=====+=====+===+===+=====+===+===+===+===+

Klarigoj:

v    La fako L1K2 havas nur du eblajn ciferojn X kaj Y

v    La fako L1K5 havas nur du eblajn ciferojn Y kaj Z

v    La fako L5K1 havas nur du eblajn ciferojn X kaj Z

Konkludo: la cifero Z estas forigenda sur la linio 1 de la unua subtabelo (escepte de la kolumno 2) kaj sur la linio 5 de la centra subtabelo  (fakoj kun marko ###).

Ekzemplo 2:

Kol. 1    2    3    4     5    6   7   8   9  

   +===+=====+===+=====+=====+===+===+===+===+

L1 + - |(X-Y)| - ^ ### |(Y-Z)|###^ - | - | 8 |

L2 + 1 |  -  | - ^     |  -  |   ^   | - |   |

L3 + 6 |  -  | - ^     |  4  |   ^ 3 | - | - |

   +===+=====+===+=====+=====+===+===+===+===+

L4 + - |  -  | - ^  -  |  -  | - ^ - | - | 3 |

L5 +###| ### |###^(X-Z)|  -  | - ^   | - |   |

L6 + 2 |  7  | - ^     |  5  |   ^ 4 | - | - |

   +===+=====+===+=====+=====+===+===+===+===+

Klarigoj:

v    La fako L1K2 havas nur du eblajn ciferojn X kaj Y

v    La fako L1K5 havas nur du eblajn ciferojn Y kaj Z

v    La fako L5K4 havas nur du eblajn ciferojn X kaj Z

Konkludo: la cifero X estas forigenda sur la linio 1 de la dua subtabelo (escepte de la kolumno 5) kaj sur la linio 5 de la maldekstra subtabelo  (fakoj kun marko ###).

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu ciferebleco estis forigita, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu ciferebleco estis forigita, tiam la programo aliras la sekvantan paŝon.

Paŝo 20: (konfiguro XY-YZ kaj XZ sur du kolumnoj de tri subtabeloj). La programo identigos sur iu kolumno en du malsamaj subtabeloj, fakon kun 2 eblaj ciferoj X kaj Y kaj alia fako kun nur du eblaj ciferoj Y kaj Z, kaj sur alia kolumno, en subtabelo laŭ linio kun la subtabelo kun la fako X-Y, fakon kun nur la du eblaj ciferoj X kaj Z, tiam la cifero Z estas forigenda de la eblaj ciferoj sur la kolumno de la fako X-Y nur en la subtabelo kaj sur la kolumno de la fako X-Z sed nur en la subtabelo kun la fako Y-Z (fakoj kun marko ###).

Se la fako kun nur du eblaj ciferoj X kaj Z estas en la subtabelo laŭ linio kun la subtabelo enhavanta la fakon Y-Z, tiam la cifero X estas forigenda de la kolumno de la fako Y-Z sed nur en la subtabelo kaj sur la kolumno de la fako X-Z sed nur en la subtabelo de la fako X-Y (fakoj kun marko ###). 

Tio estas la paŝo 19 aplikita al la kolumnoj.

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu ciferebleco estis forigita, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu ciferebleco estis forigita, tiam la programo aliras la sekvantan paŝon.

Paŝo 21: (konfiguro de vertikala krampo). La programo identigos ciferon kun nur du eblaj pozicioj sur kolumno kaj kun nur 2 aŭ 3 eblaj pozicioj sur alia kolumno en alia subtabelo sed nur du pozicioj devas esti sur la sama linio, kaj la aliaj pozicioj devas esti sur la sama vico de subtabeloj sed ne sur la samaj linioj. Tiam la programo forigos la eblecojn de  tiu cifero sur la linio pasanta per la dua pozicio de la unua kolumno en la subtabelo de la aliaj pozicioj (fakoj kun markoj ###).

Ekzemplo:

Kol. 1   2   3   4   5   6   7   8   9

   +===+===+===+===+===+===+===+===+===+

L1 + 5 | 9 | - ^ - | - | - ^ - | - | 8 |

L2 + 1 |(7)| - ^   | - |   ^   |(7)|   |

L3 + 6 | - | - ^   | 4 |   ^ 3 | - | - |

   +===+===+===+===+===+===+===+===+===+

L4 + - | - | - ^ - | - | - ^ - |(7)| 3 |

L5 +   | - |   ^   | - |   ^   |(7)|   |

L6 + 2 |(7)| - ^   | 5 |   ^###| - |###|

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    La ciferoj 7 estas metebla sur la dua kolumno nur sur la linioj 2 kaj 6

v    La ciferoj 7 estas metebla sur la oka kolumno nur sur la linioj 2, 4 kaj/aŭ 5

Konkludo: la cifero 7 estas forigenda de la linio 6 en la dekstra subtabelo (fakoj kun marko ###).

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu ciferebleco estis forigita, meti plian ciferon per la reguloj 1 ĝis 4.

Se neniu ciferebleco estis forigita, tiam la programo aliras la sekvantan paŝon.

Paŝo 22: (konfiguro de malferma aŭ ferma krampo). La programo identigos ciferon kun nur du eblaj pozicioj sur linio kaj kun nur 2 aŭ 3 eblaj pozicioj sur alia linio en alia subtabelo sed nur du pozicioj devas esti sur la sama kolumno, kaj la aliaj pozicioj devas esti sur la sama kolumno de subtabeloj sed ne sur la samaj kolumnoj. Tiam la programo forigos la eblecojn de  tiu cifero sur la kolumno pasanta per la dua pozicio de la unua linio en la subtabelo de la aliaj pozicioj (fakoj kun markoj ###).

Ekzemplo:

Kol. 1   2   3   4   5   6   7   8   9

   +===+===+===+===+===+===+===+===+===+

L1 + 5 | 9 | - ^ - | - | - ^ - |   | 8 |

L2 + 1 |(7)| - ^   | - |   ^(7)| - |   |

L3 + 6 | - | - ^   | 4 |   ^ 3 |   | - |

   +===+===+===+===+===+===+===+===+===+

L4 + - | - | - ^ - | - | - ^###| - | 3 |

L5 + - | - | - ^   | - |   ^###| - |   |

L6 + 2 |(7)| - ^   | 5 |   ^   |(7)|(7)|

   +===+===+===+===+===+===+===+===+===+

Klarigoj:

v    La ciferoj 7 estas metebla sur la dua linio nur sur la kolumnoj 2 kaj 7

v    La ciferoj 7 estas metebla sur la sesa linio nur sur la kolumnoj 2, 8  kaj/aŭ 9

Konkludo: la cifero 7 estas forigenda de la kolumno 7 en la centra dekstra subtabelo (fakoj kun marko ###).

Post kompleta traserĉo de la sudoko por malkovri similajn konfigurojn laŭ la linioj kaj poste laŭ la kolumnoj, la programo provos, se almenaŭ unu ciferebleco estis forigita, meti plian ciferon per la reguloj 1 ĝis 4.