soduku.go
复制代码 代码如下:
package main
import (
"fmt"
)
type node []int
var sudokuMay [9][9]node
var Sudoku = [9][9]int{
{0, 0, 0, 0, 0, 0, 8, 0, 0},
{0, 8, 2, 4, 0, 0, 0, 0, 0},
{1, 9, 0, 0, 6, 3, 0, 0, 0},
{0, 5, 0, 0, 8, 0, 7, 0, 0},
{6, 7, 8, 2, 0, 9, 1, 4, 3},
{0, 0, 3, 0, 4, 0, 0, 8, 0},
{0, 0, 0, 6, 2, 0, 0, 9, 4},
{0, 0, 0, 0, 0, 5, 6, 1, 0},
{0, 0, 0, 6, 0, 0, 0, 0, 0}}
func main() {
n := inited(Sudoku)
SudokuSure, _ := sure(sudokuMay)
for n > 0 {
n = Subinit(SudokuSure)
// Output(sudokuMay)
// fmt.Println(n)
SudokuSure, _ = sure(sudokuMay)
}
Output(sudokuMay)
fmt.Println(isEnable(sudokuMay))
// test()
}
func isEnable(tn [9][9]node) bool {
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
if len(tn[i][j]) == 0 {
return false
}
}
}
return true
}
func sure(may [9][9]node) (sure [9][9]int, n int) {
n = 0
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
if len(may[i][j]) == 1 {
sure[i][j] = may[i][j][0]
n++
} else {
sure[i][j] = 0
}
}
}
return
}
func test() {
i, j := 1, 3
fmt.Println(Sudoku[i][j])
for k := ((i / 3) * 3); k < ((i/3)*3)+3; k++ {
for l := ((j / 3) * 3); l < ((j/3)*3)+3; l++ {
fmt.Print(Sudoku[k][l])
}
fmt.Println(" ")
}
}
func inited(Sud [9][9]int) (changeCount int) {
tmp := 0
changeCount = 0
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
if Sud[i][j] != 0 {
sudokuMay[i][j] = append(sudokuMay[i][j], Sud[i][j])
} else {
for k := 0; k < 9; k++ {
sudokuMay[i][j] = append(sudokuMay[i][j], k+1)
}
sudokuMay[i][j], tmp = excludeMay(i, j, sudokuMay[i][j], Sud)
changeCount += tmp
}
}
}
return
}
func Subinit(Sud [9][9]int) (changeCount int) {
tmp := 0
changeCount = 0
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
if Sud[i][j] != 0 {
sudokuMay[i][j][0] = Sud[i][j]
} else {
sudokuMay[i][j], tmp = excludeMay(i, j, sudokuMay[i][j], Sud)
changeCount += tmp
}
}
}
return
}
func excludeMay(ti, tj int, t node, S [9][9]int) (rmay node, changeCount int) {
changeCount = 0
var tmpChangeCount int
for i := 0; i < 9; i++ {
if S[i][tj] != 0 {
t, tmpChangeCount = exclude(t, S[i][tj])
changeCount += tmpChangeCount
}
if S[ti][i] != 0 {
t, tmpChangeCount = exclude(t, S[ti][i])
changeCount += tmpChangeCount
}
}
for k := ((ti / 3) * 3); k < ((ti/3)*3)+3; k++ {
for l := ((tj / 3) * 3); l < ((tj/3)*3)+3; l++ {
if S[k][l] != 0 {
t, tmpChangeCount = exclude(t, S[k][l])
changeCount += tmpChangeCount
}
}
}
rmay = t
return
}
func excludeFirstOne(smay node, n int) (rmay node, changeCount int) {
changeCount = 0
rmay = smay
for i := 0; i < len(smay); i++ {
if smay[i] == n {
changeCount++
rmay = append(smay[:i], smay[i+1:]...)
return
}
if i == len(smay)-1 {
return
}
}
return
}
func exclude(smay node, n int) (tmp node, changeCount int) {
var nc int
changeCount = 0
tmp, nc = excludeFirstOne(smay, n)
for nc > 0 {
tmp, nc = excludeFirstOne(tmp, n)
changeCount++
}
return
}
func Output(sudoku [9][9]node) {
for i := 0; i < 9; i++ {
for j := 0; j < 9; j++ {
fmt.Print(sudokuMay[i][j])
}
fmt.Println("")
}
}
以上就是本文给大家分享的代码的全部内容了,希望大家能够喜欢。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]