Excel·VBA二维数组组合函数之穷举推理题

2024-04-02 07:04

本文主要是介绍Excel·VBA二维数组组合函数之穷举推理题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看到一个帖子《CSDN-求助一道推理题》,与之前《python穷举暴力破解《2018年刑侦推理题》用python穷举的推理题很类似
在这里插入图片描述

  • 那么是否可以使用《Excel·VBA二维数组组合函数、组合求和》combin_arr2d函数,生成结果进行穷举呢?
Sub 穷举推理题()Dim x&, y&, z&, a, arr, brr, b, i&, j&, c, crr, t&x = 2: y = 8: z = 3  '变量题号a = [{"A", "B", "C", "D"}]  '答案类型,答案二维数组ReDim arr(1 To 10, 1 To UBound(a)), c(1 To UBound(a))  '答案二维数组,共10题For i = 1 To UBound(arr)For j = 1 To UBound(arr, 2)arr(i, j) = a(j)NextNexttm = Timer: brr = combin_arr2d(arr)  '调用函数返回组合,一维嵌套数组For Each b In brrIf (b(2) = "A" And b(5) = "C") Or (b(2) = "B" And b(5) = "D") Or _(b(2) = "C" And b(5) = "A") Or (b(2) = "D" And b(5) = "B") Then  '第2题If (b(4) = "A" And b(1) = b(5)) Or (b(4) = "B" And b(x) = b(y)) Or _(b(4) = "C" And b(x) = b(z)) Or (b(4) = "D" And b(z) = b(y)) Then  '第4题If (b(5) = "A" And b(5) = b(8)) Or (b(5) = "B" And b(5) = b(4)) Or _(b(5) = "C" And b(5) = b(9)) Or (b(5) = "D" And b(5) = b(7)) Then  '第5题If (b(6) = "A" And b(2) = b(4) And b(2) = b(8)) Or _(b(6) = "B" And b(1) = b(6) And b(1) = b(8)) Or _(b(6) = "C" And b(3) = b(10) And b(3) = b(8)) Or _(b(6) = "D" And b(5) = b(9) And b(5) = b(8)) Then  '第6题i = Application.Match(b(1), a, 0)If (b(8) = "A" And Abs(Application.Match(b(7), a, 0) - i) <> 1) Or _(b(8) = "B" And Abs(Application.Match(b(5), a, 0) - i) <> 1) Or _(b(8) = "C" And Abs(Application.Match(b(2), a, 0) - i) <> 1) Or _(b(8) = "D" And Abs(Application.Match(b(10), a, 0) - i) <> 1) Then  '第8题If (b(9) = "A" And ((b(1) = b(6)) <> (b(6) = b(5)))) Or _(b(9) = "B" And ((b(1) = b(6)) <> (b(10) = b(5)))) Or _(b(9) = "C" And ((b(1) = b(6)) <> (b(2) = b(5)))) Or _(b(9) = "D" And ((b(1) = b(6)) <> (b(9) = b(5)))) Then  '第9题For j = 1 To UBound(a)  '字符串计数crr = Split(Join(b, ""), a(j)): c(j) = UBound(crr)Nextt = Application.Match(WorksheetFunction.Min(c), c, 0)If (b(7) = "A" And t = 3) Or (b(7) = "B" And t = 2) Or _(b(7) = "C" And t = 1) Or (b(7) = "D" And t = 4) Then   '第7题t = WorksheetFunction.Max(c) - WorksheetFunction.Min(c)If (b(10) = "A" And t = 3) Or (b(10) = "B" And t = 2) Or _(b(10) = "C" And t = 4) Or (b(10) = "D" And t = 1) Then  '第10题Debug.Print "答案", Join(b, "") ': Exit For  '得到1个答案退出End IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfEnd IfNextDebug.Print "累计用时" & Format(Timer - tm, "0.00")  '耗时
End Sub
  • 举例
x = 1: y = 3: z = 5

运行结果

答案          DACDCDBCCA
答案          DADBCDCCCC
答案          DDDBBDCBBA
答案          DDDBBDCBBC
累计用时6.04

x = 2: y = 8: z = 3

运行结果

答案          DAACCDBCCA
答案          DAACCDBCCC
答案          DACDCDBCCA
答案          DCCCADBAAA
累计用时6.01

这篇关于Excel·VBA二维数组组合函数之穷举推理题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/869295

相关文章

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

java读取excel文件为base64实现方式

《java读取excel文件为base64实现方式》文章介绍使用ApachePOI和EasyExcel处理Excel文件并转换为Base64的方法,强调EasyExcel适合大文件且内存占用低,需注意... 目录使用 Apache POI 读取 Excel 并转换为 Base64使用 EasyExcel 处

Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧

《Python函数的基本用法、返回值特性、全局变量修改及异常处理技巧》本文将通过实际代码示例,深入讲解Python函数的基本用法、返回值特性、全局变量修改以及异常处理技巧,感兴趣的朋友跟随小编一起看看... 目录一、python函数定义与调用1.1 基本函数定义1.2 函数调用二、函数返回值详解2.1 有返

Python Excel 通用筛选函数的实现

《PythonExcel通用筛选函数的实现》本文主要介绍了PythonExcel通用筛选函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录案例目的示例数据假定数据来源是字典优化:通用CSV数据处理函数使用说明使用示例注意事项案例目的第一