QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 4981|回复: 14
打印 上一主题 下一主题

发一本08年B题的参考书

[复制链接]
字体大小: 正常 放大
glenn1986        

2

主题

2

听众

30

积分

升级  26.32%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2009-1-22 11:19 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
培训时做08B题Sudoku 的时候找到的一本参考书。Programming Sudoku

Contents
■CHAPTER 1 What Is Sudoku? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Rules of Sudoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
Sudoku Terminology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
It’s Just Logic! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Variants of Sudoku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Let’s Play Sudoku! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
■CHAPTER 2 Creating the Sudoku Application . . . . . . . . . . . . . . . . . . . . . . . . . 11
Creating the Sudoku Project . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Creating the User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Declaring the Member Variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Representing Values in the Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Generating the Grid Dynamically. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Starting a New Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Selecting the Numbers to Insert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Handling Click Events on the Label Controls . . . . . . . . . . . . . . . . . . . 30
Undoing and Redoing a Move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Saving a Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Opening a Saved Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Ending the Game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Testing the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
■CHAPTER 3 Basic Sudoku Solving Technique . . . . . . . . . . . . . . . . . . . . . . . . . 47
Elimination Technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Column, Row, and Minigrid Elimination . . . . . . . . . . . . . . . . . . . . . . . 48
Usefulness of the CRME Technique . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Exception Scenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Implementing the CRME Technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Adding Member Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Modifying the SetCell() Subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Adding a ToolTip Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Calculating the Possible Values for a Cell . . . . . . . . . . . . . . . . . . . . . 61
Scanning the Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Wiring the Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Testing It Out . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
■CHAPTER 4 Intermediate Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Lone Rangers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Lone Rangers in a Minigrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Lone Rangers in a Row . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Lone Rangers in a Column. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Implementing the Technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Looking for Lone Rangers in Minigrids. . . . . . . . . . . . . . . . . . . . . . . . 77
Looking for Lone Rangers in Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Looking for Lone Rangers in Columns . . . . . . . . . . . . . . . . . . . . . . . . 81
Modifying the SolvePuzzle() Function. . . . . . . . . . . . . . . . . . . . . . . . . 83
Testing Out the Lone Ranger Technique . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Example 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Example 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
■CHAPTER 5 Advanced Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Looking for Twins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Looking for Triplets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Variants of Triplets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Brute-Force Elimination . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Implementing the Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Looking for Twins in Minigrids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Looking for Twins in Rows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Looking for Twins in Columns. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Looking for Triplets in Minigrids . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Looking for Triplets in Rows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Looking for Triplets in Columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Modifying the SolvePuzzle() Function. . . . . . . . . . . . . . . . . . . . . . . . 127
Using Brute-Force Elimination. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Modifying the Code Behind for the Solve Puzzle Button . . . . . . . . 133
Testing the Techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
■CHAPTER 6 Generating Sudoku Puzzles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Determining the Level of Difficulty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Steps to Generate a Sudoku Puzzle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Determining the Locations of Empty Cells . . . . . . . . . . . . . . . . . . . . 144
Single-Solution Puzzles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
Implementing the Puzzle-Generating Algorithm . . . . . . . . . . . . . . . . . . . 148
Creating the Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Randomizing the List of Possible Values . . . . . . . . . . . . . . . . . . . . . 150
Generating a New Puzzle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Creating Empty Cells in the Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Vacating Another Pair of Cells . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Exposing the GetPuzzle() Function . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Wiring Up the Logic with the User Interface . . . . . . . . . . . . . . . . . . . . . . 162
Testing the Implementation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Easy Puzzles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Medium Puzzles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Difficult Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Extremely Difficult Puzzles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
■CHAPTER 7 How to Play Kakuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
The Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Solving a Kakuro Puzzle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Tips for Solving Kakuro Puzzles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
■APPENDIX The SudokuPuzzle Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
■INDEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

ProgrammingSudoku.pdf

5.92 MB, 下载次数: 23, 下载积分: 体力 -2 点

zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信

2

主题

2

听众

88

积分

升级  87.37%

该用户从未签到

新人进步奖

回复

使用道具 举报

highshaw        

8

主题

3

听众

54

积分

升级  51.58%

该用户从未签到

新人进步奖

回复

使用道具 举报

highshaw        

8

主题

3

听众

54

积分

升级  51.58%

该用户从未签到

新人进步奖

回复

使用道具 举报

szj2008        

12

主题

5

听众

352

积分

升级  17.33%

该用户从未签到

新人进步奖

回复

使用道具 举报

kaloveka        

7

主题

3

听众

357

积分

升级  19%

该用户从未签到

新人进步奖

回复

使用道具 举报

28

主题

4

听众

235

积分

升级  67.5%

  • TA的每日心情
    开心
    2013-9-3 00:30
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    新人进步奖

    回复

    使用道具 举报

    jyh 实名认证       

    24

    主题

    3

    听众

    97

    积分

    升级  96.84%

    该用户从未签到

    回复

    使用道具 举报

    ishan33        

    19

    主题

    2

    听众

    360

    积分

    升级  20%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    lovecan 实名认证       

    1

    主题

    4

    听众

    638

    积分

    升级  9.5%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-12 20:19 , Processed in 0.810685 second(s), 107 queries .

    回顶部