I created a sudoku solver using candidate elimination together with back tracking. That in itself is quite nice, but I also exposed the solver to the world in the form of a web service. What does that mean?
If you go to this url:
http://82.93.220.122:8080/SudokuWS/ws?wsdl
You will be able to download the wsdl file describing the webservice. It describes the sudoku soap message you have to send and the soap message you will get back. Using many tools you can create a client to use this web service or use a general purpose web service viewer.
If you send this soap message:
1: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ws.sudoku.enigmatry.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
2: <soapenv:Body>
3: <q0:sudoku>
4: <row>
5: <cell>0</cell>
6: <cell>0</cell>
7: <cell>4</cell>
8: <cell>7</cell>
9:
10: <cell>9</cell>
11: <cell>0</cell>
12: <cell>6</cell>
13: <cell>0</cell>
14: <cell>0</cell>
15: </row>
16:
17: <row>
18: <cell>0</cell>
19: <cell>0</cell>
20: <cell>0</cell>
21: <cell>0</cell>
22: <cell>0</cell>
23:
24: <cell>0</cell>
25: <cell>0</cell>
26: <cell>0</cell>
27: <cell>4</cell>
28: </row>
29: <row>
30: <cell>0</cell>
31:
32: <cell>2</cell>
33: <cell>9</cell>
34: <cell>0</cell>
35: <cell>0</cell>
36: <cell>0</cell>
37: <cell>0</cell>
38:
39: <cell>8</cell>
40: <cell>0</cell>
41: </row>
42: <row>
43: <cell>0</cell>
44: <cell>1</cell>
45: <cell>0</cell>
46:
47: <cell>0</cell>
48: <cell>4</cell>
49: <cell>0</cell>
50: <cell>0</cell>
51: <cell>0</cell>
52: <cell>8</cell>
53:
54: </row>
55: <row>
56: <cell>0</cell>
57: <cell>3</cell>
58: <cell>0</cell>
59: <cell>0</cell>
60: <cell>0</cell>
61:
62: <cell>0</cell>
63: <cell>0</cell>
64: <cell>5</cell>
65: <cell>0</cell>
66: </row>
67: <row>
68: <cell>4</cell>
69:
70: <cell>0</cell>
71: <cell>0</cell>
72: <cell>0</cell>
73: <cell>2</cell>
74: <cell>0</cell>
75: <cell>0</cell>
76:
77: <cell>3</cell>
78: <cell>0</cell>
79: </row>
80: <row>
81: <cell>0</cell>
82: <cell>8</cell>
83: <cell>0</cell>
84:
85: <cell>0</cell>
86: <cell>0</cell>
87: <cell>0</cell>
88: <cell>5</cell>
89: <cell>7</cell>
90: <cell>0</cell>
91:
92: </row>
93: <row>
94: <cell>2</cell>
95: <cell>0</cell>
96: <cell>0</cell>
97: <cell>0</cell>
98: <cell>0</cell>
99:
100: <cell>0</cell>
101: <cell>0</cell>
102: <cell>0</cell>
103: <cell>0</cell>
104: </row>
105: <row>
106: <cell>0</cell>
107:
108: <cell>0</cell>
109: <cell>1</cell>
110: <cell>0</cell>
111: <cell>6</cell>
112: <cell>8</cell>
113: <cell>2</cell>
114:
115: <cell>0</cell>
116: <cell>0</cell>
117: </row>
118: </q0:sudoku>
119: </soapenv:Body>
120: </soapenv:Envelope>
121:
You will receive this message in return, with the solved sudoku:
1: <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
2: <env:Body>
3: <sudokuResult xmlns:ns1="http://ws.sudoku.enigmatry.com/">
4: <solved>true</solved>
5: <sudoku>
6: <row>
7: <cell>8</cell>
8: <cell>1</cell>
9:
10: <cell>3</cell>
11: <cell>6</cell>
12: <cell>7</cell>
13: <cell>4</cell>
14: <cell>9</cell>
15: <cell>2</cell>
16:
17: <cell>5</cell>
18: </row>
19: <row>
20: <cell>5</cell>
21: <cell>6</cell>
22: <cell>2</cell>
23: <cell>1</cell>
24:
25: <cell>3</cell>
26: <cell>9</cell>
27: <cell>8</cell>
28: <cell>4</cell>
29: <cell>7</cell>
30: </row>
31:
32: <row>
33: <cell>4</cell>
34: <cell>7</cell>
35: <cell>9</cell>
36: <cell>5</cell>
37: <cell>2</cell>
38:
39: <cell>8</cell>
40: <cell>6</cell>
41: <cell>3</cell>
42: <cell>1</cell>
43: </row>
44: <row>
45: <cell>7</cell>
46:
47: <cell>8</cell>
48: <cell>4</cell>
49: <cell>3</cell>
50: <cell>1</cell>
51: <cell>6</cell>
52: <cell>2</cell>
53:
54: <cell>5</cell>
55: <cell>9</cell>
56: </row>
57: <row>
58: <cell>9</cell>
59: <cell>5</cell>
60: <cell>1</cell>
61:
62: <cell>4</cell>
63: <cell>8</cell>
64: <cell>2</cell>
65: <cell>3</cell>
66: <cell>7</cell>
67: <cell>6</cell>
68:
69: </row>
70: <row>
71: <cell>3</cell>
72: <cell>2</cell>
73: <cell>6</cell>
74: <cell>7</cell>
75: <cell>9</cell>
76:
77: <cell>5</cell>
78: <cell>4</cell>
79: <cell>1</cell>
80: <cell>8</cell>
81: </row>
82: <row>
83: <cell>6</cell>
84:
85: <cell>3</cell>
86: <cell>7</cell>
87: <cell>9</cell>
88: <cell>4</cell>
89: <cell>1</cell>
90: <cell>5</cell>
91:
92: <cell>8</cell>
93: <cell>2</cell>
94: </row>
95: <row>
96: <cell>1</cell>
97: <cell>9</cell>
98: <cell>8</cell>
99:
100: <cell>2</cell>
101: <cell>5</cell>
102: <cell>3</cell>
103: <cell>7</cell>
104: <cell>6</cell>
105: <cell>4</cell>
106:
107: </row>
108: <row>
109: <cell>2</cell>
110: <cell>4</cell>
111: <cell>5</cell>
112: <cell>8</cell>
113: <cell>6</cell>
114:
115: <cell>7</cell>
116: <cell>1</cell>
117: <cell>9</cell>
118: <cell>3</cell>
119: </row>
120: </sudoku>
121: </sudokuResult>
122:
123: </env:Body>
124: </env:Envelope>
Pretty cool, isn't it? If you can write a nice looking frontend for this webservice, in the form of another website, or a desktop client app, please drop me an email. I would really love to see it!