【教学类-43-16】 20240106 推算5-9宫格数独可能出现的不重复题量(N宫格数独模板数量的推算)

作品展示:

通过对各种已有结果的人工推算,目前得到两个结论

一、阶乘==基本样式的数量【【123】【321】【231】【132】【312】【312】】6组

结论:阶乘等于出现的基本样式数量

以下N*N格会出现的最大排序数量(比如包含333222111这种不符合数独规律的元素)


'''
目的:测试N宫格可以生成多少组基本样式(乘阶)[1,2,3,4,5][5,4,3,2,1]}
作者:阿夏
时间:2024年1月6日19:00
'''

import random
import math
from itertools import permutations

# 宫格数


gg=[1,2,3,4,5,6,7,8,9]
# gg=[5]
ggg=[]
for hs in gg:
    n=[]
    for nu in range(1,hs+1):
        n.append(nu)
    # lst = ''.join(str(num) for num in n)
    # print(n)

    print('{} 宫格基本数字 "{} "'.format(hs,n))
    # 3宫格,基础数字是'123'

    # 123中间随机抽取3个,不同的3个数字排序方法
    permutations_list = list(permutations(n))
    numbers = [list(permutation) for permutation in permutations_list]
    # numbers = ''.join(str(num) for num in number)
    # print(numbers)
    print('{} 宫格可以组成基本样式(阶乘)" {} "组'.format(hs,len(numbers)))
    # [[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]# 6种组合


    # math生成可能的数量
    combinations = math.comb(len(numbers), hs)

    print("math法{} 宫格可以生成 {} 组不同的列表".format(hs ,combinations))
    
    # 在原有基础上乘上基本样式组的数量,如宫格基本样式是6组【123】【132】【213】【231】【312】【321】,通过互相交叉选取3个为一组,会有20种可能
    # 最后需要20*6=120,才是最大的生成数量。因此math计算后,还要乘以基本样式数量
    print("实际法{} 宫格可以生成{} 组不同的列表".format(hs ,combinations*len(numbers)))
    print('---------------')

# 1 宫格基本数字 "[1] "
# 1 宫格可以组成基本样式(阶乘)" 1 "组       
# math法1 宫格可以生成 1 组不同的列表
# 实际法1 宫格可以生成1 组不同的列表
# ---------------
# 2 宫格基本数字 "[1, 2] "
# 2 宫格可以组成基本样式(阶乘)" 2 "组       
# math法2 宫格可以生成 1 组不同的列表
# 实际法2 宫格可以生成2 组不同的列表
# ---------------
# 3 宫格基本数字 "[1, 2, 3] "
# 3 宫格可以组成基本样式(阶乘)" 6 "组       
# math法3 宫格可以生成 20 组不同的列表        
# 实际法3 宫格可以生成120 组不同的列表        
# ---------------
# 4 宫格基本数字 "[1, 2, 3, 4] "
# 4 宫格可以组成基本样式(阶乘)" 24 "组      
# math法4 宫格可以生成 10626 组不同的列表     
# 实际法4 宫格可以生成255024 组不同的列表     
# ---------------
# 5 宫格基本数字 "[1, 2, 3, 4, 5] "
# 5 宫格可以组成基本样式(阶乘)" 120 "组     
# math法5 宫格可以生成 190578024 组不同的列表 
# 实际法5 宫格可以生成22869362880 组不同的列表
# ---------------
# 6 宫格基本数字 "[1, 2, 3, 4, 5, 6] "        
# 6 宫格可以组成基本样式(阶乘)" 720 "组     
# math法6 宫格可以生成 189492294437160 组不同的列表
# 实际法6 宫格可以生成136434451994755200 组不同的列表
# ---------------
# 7 宫格基本数字 "[1, 2, 3, 4, 5, 6, 7] "
# 7 宫格可以组成基本样式(阶乘)" 5040 "组
# math法7 宫格可以生成 16321981448897949868560 组不同的列表
# 实际法7 宫格可以生成82262786502445667337542400 组不同的列表
# ---------------
# 8 宫格基本数字 "[1, 2, 3, 4, 5, 6, 7, 8] "
# 8 宫格可以组成基本样式(阶乘)" 40320 "组
# math法8 宫格可以生成 173117930575796585984663510371920 组不同的列表
# 实际法8 宫格可以生成6980114960816118346901632738195814400 组不同的列表
# ---------------
# 9 宫格基本数字 "[1, 2, 3, 4, 5, 6, 7, 8, 9] "
# 9 宫格可以组成基本样式(阶乘)" 362880 "组
# math法9 宫格可以生成 300649979042426162195454856425990347600496000 组不同的列表
# 实际法9 宫格可以生成109099864394915605737486658299863377337267988480000 组不同的列表
# ---------------

二、用“阶乘结果”倒推,预测5-9宫格数独的不重复最大样式数量

我发现4宫格限制条件后,实际出现576套不重复模板,比阶乘测试的不重复模板288,正好是2倍。288*2=576,而这个2倍恰好是“3宫格中,不重复模板12条和阶乘6的除法结果。(前一条的除差)

用这个思路推算了1-4宫格,发现1宫格无法找前面一条的除法结果,但2宫格、3宫格、4宫格,都是符合这个规律。

------------------------------------------------------------------------------------------------------------

手动推算了5宫格的不重复模板数量

5宫格的阶乘推算不重复模板数量*(4宫格的阶乘模板数/4宫格的阶乘数)=预估数量

                 34460                         *              (288   /    24)                       =414720

代码推算5-9宫格数独题符合标准的不重复题目数量


'''
目的:测试N宫格可以生成多少不重复的数独题,从576=288*12/2推测
作者:阿夏
时间:2024年1月6日19:00
'''

import random
import math
from itertools import permutations

# 宫格数



P=[]
Q=[]
R=[]

hsall=[]
for i in range(1,10):    # 1-9宫格
    hsall.append(i)

# 计算1-9各自的乘阶  

jc=[]

for hs in hsall:    
    j = math.factorial(hs)
    print('{}的阶乘是{}'.format(hs,j))
    jc.append(j)
print(jc)
# [1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
print(len(jc))
# jc 

bs=[]
ds=[]

result = []
product = 1
for num in range(len(jc)):
    product *= jc[num]
    c=int(product/jc[num])    # 除法结果,倍数
    # print(c)
    print('---{}  宫格  乘阶数{}  生成   {}  条不重复模板,除法结果是 {}-----'.format(hsall[num],jc[num],product,c))
    
    
    # 除法的结果(倍数)做成列表
    bs.append(c)
    # 阶乘推算的不重复模板数量
    ds.append(product)
print(bs)
# [1, 1, 2, 12, 288, 34560, 24883200, 125411328000, 5056584744960000]
print(ds)
# [1, 2, 12, 288, 34560, 24883200, 125411328000, 5056584744960000, 1834933472251084800000]

# 因为1宫格无法找到0宫格的生成数量,所以bs前面再加1
bs.insert(0,1)
print(bs)
# [1, 1, 1, 2, 12, 288, 34560, 24883200, 125411328000, 5056584744960000]

# 推算结果
for o in range(len(ds)):
    print('阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估){} 宫格数独不重复模板数量 {} '.format(o+1,int(ds[o])*int(bs[o])))

# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)1 宫格数独不重复模板数量 1
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)2 宫格数独不重复模板数量 2
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)3 宫格数独不重复模板数量 12
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)4 宫格数独不重复模板数量 576
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)5 宫格数独不重复模板数量 414720
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)6 宫格数独不重复模板数量 7166361600
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)7 宫格数独不重复模板数量 4334215495680000
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)8 宫格数独不重复模板数量 125824009525788672000000
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)9 宫格数独不重复模板数量 230121443546659694208614400000000
 



   




说明:

由于现在还无法用代码生成5宫格数独不重复题目,并排除重复(数据千亿次,电脑无法计算 MemoryError),获得正确的结果。

所以以上只是我根据已有的一些数字(3宫格数独12套、4宫格数独576套),按照一定规律推算出来的。不保证正确性。

最后把所有参数都写在一起print


'''
目的:测试N宫格可以生成多少不重复的数独题,从576=288*12/2推测
作者:阿夏
时间:2024年1月6日19:00
'''

import random
import math
from itertools import permutations

# 宫格数



P=[]
Q=[]
R=[]

hsall=[]
for i in range(1,10):    # 1-9宫格
    hsall.append(i)

# 计算1-9各自的乘阶  

jc=[]

for hs in hsall:    
    j = math.factorial(hs)
    print('{}的阶乘是{}'.format(hs,j))
    jc.append(j)
print(jc)
# [1, 2, 6, 24, 120, 720, 5040, 40320, 362880]
print(len(jc))
# jc 

bs=[]
ds=[]
jcs=[]
jcmb=[]

result = []
product = 1
for num in range(len(jc)):
    product *= jc[num]
    c=int(product/jc[num])    # 除法结果,倍数
    # print(c)
    print('---{}  宫格  乘阶数{}  生成   {}  条不重复模板,除法结果是 {}-----'.format(hsall[num],jc[num],product,c))
    
    jcs.append(jc[num])

    jcmb.append(product)
    # 除法的结果(倍数)做成列表
    bs.append(c)
    # 阶乘推算的不重复模板数量
    ds.append(product)
print(bs)
print(jcs)
# [1, 1, 2, 12, 288, 34560, 24883200, 125411328000, 5056584744960000]
print(ds)
# [1, 2, 12, 288, 34560, 24883200, 125411328000, 5056584744960000, 1834933472251084800000]

# 因为1宫格无法找到0宫格的生成数量,所以bs前面再加1
bs.insert(0,1)
print(bs)
# [1, 1, 1, 2, 12, 288, 34560, 24883200, 125411328000, 5056584744960000]

print('阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)')
print('-----------------------------------')
# 推算结果
for o in range(len(ds)):
    
    print('{} 宫格数独不重复模板数量 {} 阶乘 {} 组合模板 {}  '.format(o+1, int(ds[o])*int(bs[o]),jcs[o],jcmb[o]))
    print('-----------------------')

# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)1 宫格数独不重复模板数量 1
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)2 宫格数独不重复模板数量 2
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)3 宫格数独不重复模板数量 12
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)4 宫格数独不重复模板数量 576
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)5 宫格数独不重复模板数量 414720
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)6 宫格数独不重复模板数量 7166361600
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)7 宫格数独不重复模板数量 4334215495680000
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)8 宫格数独不重复模板数量 125824009525788672000000
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)9 宫格数独不重复模板数量 230121443546659694208614400000000
    
# 阶乘推算不重复数量乘以“前宫格除法结果” 最大不重复数量(预估)
# -----------------------------------
# 1 宫格数独不重复模板数量 1 阶乘 1 组合模板 1
# -----------------------
# 2 宫格数独不重复模板数量 2 阶乘 2 组合模板 2
# -----------------------
# 3 宫格数独不重复模板数量 12 阶乘 6 组合模板 12
# -----------------------
# 4 宫格数独不重复模板数量 576 阶乘 24 组合模板 288
# -----------------------
# 5 宫格数独不重复模板数量 414720 阶乘 120 组合模板 34560
# -----------------------
# 6 宫格数独不重复模板数量 7166361600 阶乘 720 组合模板 24883200
# -----------------------
# 7 宫格数独不重复模板数量 4334215495680000 阶乘 5040 组合模板 125411328000
# -----------------------
# 8 宫格数独不重复模板数量 125824009525788672000000 阶乘 40320 组合模板 5056584744960000
# -----------------------
# 9 宫格数独不重复模板数量 230121443546659694208614400000000 阶乘 362880 组合模板 1834933472251084800000
-----------------------
 



   




作为学美术专业的老师,我只有初中数学水平,o(╥﹏╥)o,

很希望有专业的编程员能提供经过验证的5宫格数独不重复模板题目数量 Thanks♪(・ω・)ノ

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/297600.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

玩转爱斯维尔 LaTeX 模板:定制技巧一网打尽!

简介 关于 LaTeX 小编写过一些推文: 适合撰写课程论文的 LaTeX 模板; LaTeX 常用数学符号汇总; 免费升级 overleaf 高级账户!; 如何下载使用期刊的 LaTeX 模板 本文基于常用的 Elsevier 期刊模板,小编分享个人常用的使用技巧&#xff0…

nvidia-smi 完整查看显卡型号

当我们在使用nvidia-smi查看显卡的型号的时候,会发现出现如下问题: 可以看到我们此时无法看到显卡的准确型号,只能看到NVIDIA GeForce ... 解决方法:使用如下命令即可完整显示显卡型号 nvidia-smi -L 如下所示:

APP自动化测试工具:八款推荐解析

如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。 uiautomator2 github地址:github.com/openatx/uia… UiAutomator 是 Google 提供的用来做安卓自动…

C语言中灵活多变的动态内存,malloc函数 free函数 calloc函数 realloc函数

文章目录 🚀前言🚀管理动态内存的函数✈️malloc函数✈️free函数✈️calloc函数✈️realloc函数 🚀在使用动态内存函数时的常见错误✈️对NULL指针的解引用✈️ 对动态开辟空间的越界访问✈️对非动态开辟内存使用free释放✈️使用free释放一…

新手养布偶猫如何选择猫主食冻干?K9、sc、希喂三个品牌推荐!

布偶猫是食肉动物,但由于肠胃脆弱敏感,所以在饮食上需要特别关注哦!为了给它们最好的呵护,现在有了主食冻干这种优质猫主食!它不仅符合猫咪的天然饮食习惯,还用了新鲜生肉做原料呢!营养满分不说…

我的隐私计算学习——联邦学习(2)

笔记内容来自多本书籍、学术资料、白皮书及ChatGPT等工具,经由自己阅读后整理而成 (三)联邦学习的算子 ------------------------ 算子是什么?--------------------------- ​ 从广义上讲,对任何函数进行某一项操作都可…

设计模式学习2

代理模式:Proxy 动机 “增加一层间接层”是软件系统中对许多复杂问题的一种常见解决方案。在面向对象系统中,直接食用某些对象会带来很多问题,作为间接层的proxy对象便是解决这一问题的常见手段。 2.伪代码: class ISubject{ pu…

SPI知识大全

目录 SPI介绍SPI分为硬件SPI与软件SPISPI工作模式和时序图硬件SPI编写软件SPI编写拓展: SPI介绍 SPI(Serial Peripheral Interface)是一种常用的通信接口,用于在两个设备之间进行数据传输。它通常用于板级通信,具有高…

SolidUI Gitee GVP

感谢Gitee,我是一个典型“吃软不吃硬”的人。奖励可以促使我进步,而批评往往不会得到我的重视。 我对开源有自己独特的视角,我只参与那些在我看来高于自身认知水平的项目。 这么多年来,我就像走台阶一样,一步一步参与…

Redis——centos7环境安装Redis6.2.14版本,make命令编译时报错:jemalloc/jemalloc.h:没有那个文件或目录

一、报错原因 在redis-6.2.14文件夹下有一个README.md文件,有如下一段话: 在构建 Redis 时,通过设置 MALLOC 环境变量来选择非默认的内存分配器。Redis 默认编译并链接到 libc malloc,但在 Linux 系统上,jemalloc 是…

AntV-G6 -- 将G6图表应用到项目中

1. 效果图 2. 安装依赖 npm install --save antv/g6 3. 代码 import { useEffect } from alipay/bigfish/react; import G6 from antv/g6;const data {id: root,label: 利息收入,subLabel: 3,283.456,ratio: 3,children: [{id: child-a,label: 平均利息,subLabel: 9%,ratio:…

【airsim】python控制airsim

使用airsim 1.8.1编译完成,进过block项目在cpp测试后,开始踩坑使用python。 使用AirSim\PythonClient\setup.py或者pip安装airsim。 python setup.py install或者 pip install airsim此时,windows电脑的环境信息 (air_py38) D:\code\Gith…

JDBC数据库访问——数据库操作

与指定的数据库建立连接后,就可以使用JDBC提供的API对数据库进行操作,包括查询、新增、更新、删除等。 1.查询操作 和数据库建立连接后,对数据库表进行查询操作的步骤如下: ①创建statement对象 由已创建的Connection对象con调…

PID各种算法的基本优缺点

PID时间系数对PID本身的影响 积分时间过小积分作用增强。 微分时间过大,微分控制作用过强,容易产生振荡。 在这里的时间系统,一般指的是采样的时间,也就是PID控制的周期。在无人机当中一般采用10ms控制一次。 一般来说采样周期越小…

【Docker】容器的相关命令

上一篇:创建,查看,进入容器 https://blog.csdn.net/m0_67930426/article/details/135430093?spm1001.2014.3001.5502 目录 1. 关闭容器 2.启动容器 3.删除容器 4.查看容器的信息 查看容器 1. 关闭容器 从图上来看,容器 aa…

如何在 Xftp 中使用自定义编辑器编辑远程服务器文件

1、简介 很多时候我们使用 Xshell 远程登录linux服务器进行文本编辑,通过命令行窗口难以进行快速编辑,因此,借助 Xftp 工具,指定文本编辑器,能够快速帮助我们实现文本编辑。 2、Xftp 使用 在上文中(https:…

软件工程概论------文件管理

目录 1.文件的相关概念 2.文件目录 3.位示图 4.索引文件 5.例题 1.文件的相关概念 文件:具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。 逻辑结构:有结构的记录式文件、无结构的流式文件。 物理结构: 连续结构、链接结构、索引结构、多个物理块的索引表。 …

乔布斯在斯坦福大学经典演讲

今天,很荣幸来到各位从世界上最好的学校之一毕业的毕业典礼上。我从来没从大学毕业过,说实话,这是我离大学毕业最近的一刻。 今天,我只说三个故事,不谈大道理,三个故事就好。 第一个故事,是关于…

【ChatGPT】提示设计的艺术:使用清晰的语法

探索清晰的语法如何使您能够将意图传达给语言模型,并帮助确保输出易于解析 All images were generated by Scott and Marco. 这是与Marco Tulio Ribeiro共同撰写的关于如何使用指导来控制大型语言模型(LLM)的系列文章的第一部分。我们将从基…

Spring中的工厂类ApplicationContext和BeanFactory

1.ApplicationContext ApplicationContext的实现类,如下图 ClassPathXmlApplicationContext:加载类路径下 Spring 的配置文件 FileSystemXmlApplicationContext:加载本地磁盘下 Spring 的配置文件 ApplicationContext由BeanFactory派生而…