Advertisement
Guest User

sudoku aids

a guest
Oct 10th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 2.22 KB | None | 0 0
  1. :- use_module(library(clpfd)).
  2.  
  3. valid([]).
  4. valid([Head|Tail]) :- all_distinct(Head), valid(Tail).
  5.  
  6. valid_domain(List, Min, Max) :- List ins Min..Max.
  7.  
  8. sudoku(Puzzle, Solution) :-
  9.     Solution = Puzzle,
  10.  
  11.     Puzzle = [S11,S12,S13,S14,S15,S16,S17,S18,S19,
  12.               S21,S22,S23,S24,S25,S26,S27,S28,S29,
  13.               S31,S32,S33,S34,S35,S36,S37,S38,S39,
  14.               S41,S42,S43,S44,S45,S46,S47,S48,S49,
  15.               S51,S52,S53,S54,S55,S56,S57,S58,S59,
  16.               S61,S62,S63,S64,S65,S66,S67,S68,S69,
  17.               S71,S72,S73,S74,S75,S76,S77,S78,S79,
  18.               S81,S82,S83,S84,S85,S86,S87,S88,S89,
  19.               S91,S92,S93,S94,S95,S96,S97,S98,S99],
  20.  
  21.     Row1 = [S11,S12,S13,S14,S15,S16,S17,S18,S19],
  22.     Row2 = [S21,S22,S23,S24,S25,S26,S27,S28,S29],
  23.     Row3 = [S31,S32,S33,S34,S35,S36,S37,S38,S39],
  24.     Row4 = [S41,S42,S43,S44,S45,S46,S47,S48,S49],
  25.     Row5 = [S51,S52,S53,S54,S55,S56,S57,S58,S59],
  26.     Row6 = [S61,S62,S63,S64,S65,S66,S67,S68,S69],
  27.     Row7 = [S71,S72,S73,S74,S75,S76,S77,S78,S79],
  28.     Row8 = [S81,S82,S83,S84,S85,S86,S87,S88,S89],
  29.     Row9 = [S91,S92,S93,S94,S95,S96,S97,S98,S99],
  30.  
  31.     Col1 = [S11,S21,S31,S41,S51,S61,S71,S81,S91],
  32.     Col2 = [S12,S22,S32,S42,S52,S62,S72,S82,S92],
  33.     Col3 = [S13,S23,S33,S43,S53,S63,S73,S83,S93],
  34.     Col4 = [S14,S24,S34,S44,S54,S64,S74,S84,S94],
  35.     Col5 = [S15,S25,S35,S45,S55,S65,S75,S85,S95],
  36.     Col6 = [S16,S26,S36,S46,S56,S66,S76,S86,S96],
  37.     Col7 = [S17,S27,S37,S47,S57,S67,S77,S87,S97],
  38.     Col8 = [S18,S28,S38,S48,S58,S68,S78,S88,S98],
  39.     Col9 = [S19,S29,S39,S49,S59,S69,S79,S89,S99],
  40.  
  41.     Squ1 = [S11,S12,S13,S21,S22,S23,S31,S32,S33],
  42.     Squ2 = [S14,S15,S16,S24,S25,S26,S34,S35,S36],
  43.     Squ3 = [S17,S18,S19,S27,S28,S29,S37,S38,S39],
  44.     Squ4 = [S41,S42,S43,S51,S52,S53,S61,S62,S63],
  45.     Squ5 = [S44,S45,S46,S54,S55,S56,S64,S65,S66],
  46.     Squ6 = [S47,S48,S49,S57,S58,S59,S67,S68,S69],
  47.     Squ7 = [S71,S72,S73,S81,S82,S83,S91,S92,S93],
  48.     Squ8 = [S74,S75,S76,S84,S85,S86,S94,S95,S96],
  49.     Squ9 = [S77,S78,S79,S87,S88,S89,S97,S98,S99],
  50.  
  51.     valid([Row1,Row2,Row3,Row4,Row5,Row6,Row7,Row8,Row9,
  52.            Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,
  53.            Squ1,Squ2,Squ3,Squ4,Squ5,Squ6,Squ7,Squ8,Squ9]),
  54.  
  55.     valid_domain(Puzzle, 1, 9).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement