跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 随机生成《数独》二维数组= =
未分類
9 11 月 2020

随机生成《数独》二维数组= =

随机生成《数独》二维数组= =

資深大佬 : vitozyf 0

function getSudokuItem(params) {     const sudokuItem = []     while (sudokuItem.length < 9) {         let num =parseInt(Math.random() * 9 + 1,10)         while (sudokuItem.includes(num)) {             num =parseInt(Math.random() * 9 + 1,10)         }         sudokuItem.push(num)     }     return sudokuItem } function getSudokuData(params) {     const sudokuData = [];     while (sudokuData.length < 9) {         let item = getSudokuItem()         function getExisted() {             item = getSudokuItem()             let existed = false             for (let i = 0; i < 9; i++) {                 if (sudokuData.map(a => a[i]).includes(item[i])) {                     existed = true;                     break                 }             }             const s = [1,4,7], t = [2,5,8], i = sudokuData.length             if (s.includes(i)) {                 const flag0 = sudokuData[i - 1].filter((d, j) => j < 3).find(a => a === item[0]  || a === item[1] || a === item[2])                 const flag1 = sudokuData[i - 1].filter((d, j) => j < 6 && j >= 3).find(a => a === item[3]  || a === item[4] || a === item[5])                 const flag2 = sudokuData[i - 1].filter((d, j) => j < 9 && j >= 6).find(a => a === item[6]  || a === item[7] || a === item[8])                 if (flag0 || flag1 || flag2) {                     existed = true;                 }             }             if (t.includes(i)) {                 const flag0 = sudokuData[i - 2].filter((d, j) => j < 3).concat(sudokuData[i - 1].filter((d, j) => j < 3)).find(a => a === item[0]  || a === item[1] || a === item[2])                 const flag1 = sudokuData[i - 2].filter((d, j) => j < 6 && j >= 3).concat(sudokuData[i - 1].filter((d, j) => j < 6 && j >= 3)).find(a => a === item[3]  || a === item[4] || a === item[5])                 const flag2 = sudokuData[i - 2].filter((d, j) => j < 9 && j >= 6).concat(sudokuData[i - 1].filter((d, j) => j < 9 && j >= 6)).find(a => a === item[6]  || a === item[7] || a === item[8])                 if (flag0 || flag1 || flag2) {                     existed = true;                 }             }             return existed         }         while(getExisted()) {}         sudokuData.push(item)     }     return sudokuData } console.table(getSudokuData())  

打开浏览器控制台,复制执行查看结果 = =

大佬有話說 (0)

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具