用C++实现的数独(Sudoku)计算器

 

Licensed under The GNU General Public License v3.0

cell.h

cell.cpp

grid.h

grid.cpp

 

TopRowGrid.h

TopRowGrid.cpp

sudoku.cpp

test.txt

result.txt

//

1. Solve a Sudoku problem:

sudoku.exe 0053000008000000200700105004000053000100700060032000800605000090040000300000097

---+---+---
..5 3.. ...
8.. ... .2.
.7. .1. 5..
   +   +
4.. ..5 3..
.1. .7. ..6
..3 2.. .8.
   +   +
.6. 5.. ..9
..4 ... .3.
... ..9 7..
0.059 seconds has elapsed for the first solution.
---+---+---
145 327 698
839 654 127
672 918 543
   +   +
496 185 372
218 473 956
753 296 481
   +   +
367 542 819
984 761 235
521 839 764
0.105 seconds has elapsed. Found total 1 solution.

 

//

2. Calculate the possibilities for all valid Sudoku grids:

sudoku.exe -e -j 2

0.155 seconds has elapsed.
Found total 36288 possibilities for the top row of blocks, with the fixed top le
ft block (B1) and lexicographical reduced B2 and B3.

12.957 seconds has elapsed.
Found total 36288 possibilities as 2051 equivalence classes, after refined colum
n permutation and relabeling.

13.144 seconds has elapsed.
Found total 36288 possibilities as 44 equivalence classes, after refined row per
mutation and relabeling.
The list of a representative and the size of each equivalence class:

Class 1: 123456789456789123789123456 4
Class 2: 123456789456789123789123465 108
Class 3: 123456789456789123789123564 72
Class 4: 123456789456789123789132465 216
Class 5: 123456789456789123789132546 432
Class 6: 123456789456789123789132564 2592
Class 7: 123456789456789123789231564 576
Class 8: 123456789456789123789231645 516
Class 9: 123456789456789132789123546 216
Class 10: 123456789456789132789213456 216
Class 11: 123456789456789132789213546 1296
Class 12: 123456789456789132789213645 1512
Class 13: 123456789456789132789213654 648
Class 14: 123456789456789132789231546 756
Class 15: 123456789456789132789231564 2484
Class 16: 123456789456789231789123645 24
Class 17: 123456789456789231789312456 12
Class 18: 123456789456798132789213546 2052
Class 19: 123456789456798132789213645 684
Class 20: 123456789456798132789231546 756
Class 21: 123456789456897312789312564 20
Class 22: 123457689456189237789263145 3240
Class 23: 123457689456189237789263154 1188
Class 24: 123457689456189237789263514 2592
Class 25: 123457689456189237789362145 2808
Class 26: 123457689456189237789362154 756
Class 27: 123457689456189273789263145 1512
Class 28: 123457689456189273789263154 324
Class 29: 123457689456189273789263514 864
Class 30: 123457689456189273789623154 864
Class 31: 123457689456189273789632154 648
Class 32: 123457689456189327789362145 1944
Class 33: 123457689456189723789623145 432
Class 34: 123457689456189723789623154 144
Class 35: 123457689456189723789623514 432
Class 36: 123457689456189723789632154 864
Class 37: 123457689456189732789623514 324
Class 38: 123457689456198723789632514 324
Class 39: 123457689456198732789632514 252
Class 40: 123457689456289137789361254 288
Class 41: 123457689456289137789631524 288
Class 42: 123457689456289173789613245 360
Class 43: 123457689456289731789613542 540
Class 44: 123457689456398721789612345 108

Count solutions for each equivalence class.

Class 1:..........309.567 seconds. 123456789456789123789123456 4 * 108374976
Class 2:..........302.718 seconds. 123456789456789123789123465 108 * 102543168
Class 3:..........303.655 seconds. 123456789456789123789123564 72 * 100231616
Class 4:..........299.754 seconds. 123456789456789123789132465 216 * 102047904
Class 5:..........299.287 seconds. 123456789456789123789132546 432 * 98875264
Class 6:..........299.443 seconds. 123456789456789123789132564 2592 * 98733568
Class 7:..........297.102 seconds. 123456789456789123789231564 576 * 97685328
Class 8:..........297.711 seconds. 123456789456789123789231645 516 * 98950072
Class 9:..........298.756 seconds. 123456789456789132789123546 216 * 99083712
Class 10:..........297.821 seconds. 123456789456789132789213456 216 * 99525184
Class 11:..........295.932 seconds. 123456789456789132789213546 1296 * 98369440
Class 12:..........294.107 seconds. 123456789456789132789213645 1512 * 97287008
Class 13:..........294.061 seconds. 123456789456789132789213654 648 * 98128064
Class 14:..........294.403 seconds. 123456789456789132789231546 756 * 98153104
Class 15:..........293.733 seconds. 123456789456789132789231564 2484 * 97961464
Class 16:..........294.576 seconds. 123456789456789231789123645 24 * 97282720
Class 17:..........294.715 seconds. 123456789456789231789312456 12 * 99258880
Class 18:..........292.236 seconds. 123456789456798132789213546 2052 * 97477096
Class 19:..........292.952 seconds. 123456789456798132789213645 684 * 97549160
Class 20:..........287.353 seconds. 123456789456798132789231546 756 * 96702240
Class 21:..........286.245 seconds. 123456789456897312789312564 20 * 94888576
Class 22:..........297.04 seconds. 123457689456189237789263145 3240 * 97116296
Class 23:..........298.928 seconds. 123457689456189237789263154 1188 * 98371664
Class 24:..........300.628 seconds. 123457689456189237789263514 2592 * 97539392
Class 25:..........292.391 seconds. 123457689456189237789362145 2808 * 96482296
Class 26:..........293.92 seconds. 123457689456189237789362154 756 * 97346960
Class 27:..........298.117 seconds. 123457689456189273789263145 1512 * 97910032
Class 28:..........299.162 seconds. 123457689456189273789263154 324 * 98493856
Class 29:..........300.659 seconds. 123457689456189273789263514 864 * 98119872
Class 30:..........300.753 seconds. 123457689456189273789623154 864 * 98733184
Class 31:..........296.104 seconds. 123457689456189273789632154 648 * 97455648
Class 32:..........293.109 seconds. 123457689456189327789362145 1944 * 97416016
Class 33:..........298.429 seconds. 123457689456189723789623145 432 * 98784768
Class 34:..........307.149 seconds. 123457689456189723789623154 144 * 101131392
Class 35:..........298.647 seconds. 123457689456189723789623514 432 * 97992064
Class 36:..........295.23 seconds. 123457689456189723789632154 864 * 97756224
Class 37:..........292.594 seconds. 123457689456189732789623514 324 * 96380896
Class 38:..........291.799 seconds. 123457689456198723789632514 324 * 97714592
Class 39:..........286.946 seconds. 123457689456198732789632514 252 * 96100688
Class 40:..........290.208 seconds. 123457689456289137789361254 288 * 96807424
Class 41:..........295.121 seconds. 123457689456289137789631524 288 * 96631520
Class 42:..........295.199 seconds. 123457689456289173789613245 360 * 97372400
Class 43:..........290.676 seconds. 123457689456289731789613542 540 * 95596592
Class 44:..........292.594 seconds. 123457689456398721789612345 108 * 98048704

The number of all valid Sudoku grids is the sum (3,546,146,300,288) multiply 9!
* 72 * 72.
The result is 6,670,903,752,021,072,936,960, or 6.671 * (10 ^ 21).

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值