91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 19KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2024-02-01
  • 語言: Python
  • 標簽: Python??數獨??

資源簡介

利用Python程序求解任意可解數獨,同時輸出整個求解過程,文件中包含幾個測試用例,其中有世界最難數獨的求解結果

資源截圖

代碼片段和文件信息

import?os
import?numpy?as?np


def?deep_copy(nparray):
????assert?np.ndim(nparray)?==?2?““
????shape?=?np.shape(nparray)
????ret?=?np.zeros(shape?dtype=np.object)
????for?i?in?range(shape[0]):
????????for?j?in?range(shape[1]):
????????????ret[i?j]?=?nparray[i?j].copy()
????return?ret


def?get_cell_index(row?col):
????ret_index?=?[0?0]
????if?3?<=?row?????????ret_index[0]?=?1
????elif?row?>=?6:
????????ret_index[0]?=?2
????if?3?<=?col?????????ret_index[1]?=?1
????elif?col?>=?6:
????????ret_index[1]?=?2
????return?ret_index


def?check_row(num?array?row):
????if?len(np.where(array[row?:]?==?num)[0])?==?0:
????????return?True
????return?False


def?check_col(num?array?col):
????if?len(np.where(array[:?col]?==?num)[0])?==?0:
????????return?True
????return?False


def?check_cell(num?array?row?col):
????cell_index?=?get_cell_index(row?col)
????if?len(np.where(array[cell_index[0]*3:(cell_index[0]+1)*3
????????????????????cell_index[1]*3:(cell_index[1]+1)*3]?==?num)[0])?==?0:
????????return?True
????return?False


def?start_init(array):
????lengths?=?np.zeros([9?9])??????????#?每個位置可能填寫的值的個數
????may_nums?=?np.zeros([9?9]?dtype=list)?????#?每個位置可能填寫的所有值組成的list
????for?i?in?range(9):
????????for?j?in?range(9):
????????????if?array[i?j]?>?0:
????????????????may_nums[i?j]?=?[]
????????????????continue
????????????may_nums[i?j]?=?[k?for?k?in?range(1?10)
??????????????????????????????if?check_row(k?array?i)
??????????????????????????????and?check_col(k?array?j)
??????????????????????????????and?check_cell(k?array?i?j)]
????????????lengths[i?j]?=?len(may_nums[i?j])
????return?lengths?may_nums


def?update_maynums(lengths?may_nums?row?col?val):
????for?i?in?range(9):
????????if?i?==?row:
????????????continue
????????if?val?in?may_nums[i?col]:
????????????may_nums[i?col].remove(val)
????????????lengths[i?col]?-=?1
????????????if?lengths[i?col]?==?0:
????????????????return?True
????for?i?in?range(9):
????????if?i?==?col:
????????????continue
????????if?val?in?may_nums[row?i]:
????????????may_nums[row?i].remove(val)
????????????lengths[row?i]?-=?1
????????????if?lengths[row?i]?==?0:
????????????????return?True
????cell_index?=?get_cell_index(row?col)
????for?i?in?range(cell_index[0]?*?3?(cell_index[0]?+?1)?*?3):
????????for?j?in?range(cell_index[1]?*?3?(cell_index[1]?+?1)?*?3):
????????????if?i?==?row?and?j?==?col:
????????????????continue
????????????if?val?in?may_nums[i?j]:
????????????????may_nums[i?j].remove(val)
????????????????lengths[i?j]?-=?1
????????????????if?lengths[i?j]?==?0:
????????????????????return?True
????return?False
????#?return?lengths?may_nums


def?check_only_chance_rows(array?lengths?may_nums?per_step?outf):
????updated?=?False
????wrong?=?False
????for?i?in?range(9):
????????may_nums_row?=?may_nums[i?0]
????????length?=?len(may_nums_row)
????????only_chance_index?=?list()
??

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????12862??2018-12-23?00:18??sudoku_v3.py

?????文件?????444805??2019-01-23?23:30??sudoku_inputs\hardest.res

?????文件????????169??2018-12-22?10:41??sudoku_inputs\hardest.txt

?????文件??????12208??2018-12-22?10:36??sudoku_inputs\大師10.res

?????文件????????169??2018-12-22?10:36??sudoku_inputs\大師10.txt

?????文件??????11118??2018-12-21?23:54??sudoku_inputs\大師3.res

?????文件????????169??2018-12-21?23:36??sudoku_inputs\大師3.txt

?????文件??????11554??2018-12-22?00:43??sudoku_inputs\大師4.res

?????文件????????169??2018-12-21?15:43??sudoku_inputs\大師4.txt

?????文件??????11554??2018-12-22?10:27??sudoku_inputs\大師5.res

?????文件????????169??2018-12-22?10:18??sudoku_inputs\大師5.txt

?????文件??????11772??2018-12-22?10:29??sudoku_inputs\大師9.res

?????文件????????169??2018-12-22?10:29??sudoku_inputs\大師9.txt

?????目錄??????????0??2019-01-23?23:30??sudoku_inputs

-----------?---------??----------?-----??----

???????????????516887????????????????????14


評論

共有 條評論