Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >实现算法

实现算法
EN

Code Golf用户
提问于 2023-05-14 04:33:47
回答 2查看 244关注 0票数 0

奎因-麦克卢斯基算法将析取中的析取(如\lnot x_0 \land \lnot x_1 \land \lnot x_2 \land \lnot x_3 \lor\\ x_0 \land \lnot x_1 \land x_2 \land \lnot x_3 \lor\\ \lnot x_0 \land x_1 \land x_2 \land \lnot x_3 \lor\\ \lnot x_0 \land \lnot x_1 \land \lnot x_2 \land x_3 \lor\\ \lnot x_0 \land x_1 \land \lnot x_2 \land x_3 \lor\\ x_0 \land x_1 \land \lnot x_2 \land x_3 \lor\\ \lnot x_0 \land x_1 \land x_2 \land x_3 \lor\\ x_0 \land x_1 \land x_2 \land x_3 )合并为等效析取( x_1 \land x_3 \lor\\ \lnot x_0 \land \lnot x_1 \land \lnot x_2 \lor\\ \lnot x_0 \land x_1 \land x_2 \lor\\ x_0 \land \lnot x_1 \land \lnot x_2 \land x_3 )中的较少的析取(D2),方法是合并如下:x_0\land x_1\lor\lnot x_0\land x_1 \iff (x_0\lor\lnot x_0)\land x_1\iff x_1

https://www.mathematik.uni-marburg.de/~thormae/lectures/ti1/code/qmc/将生成用于体验的测试用例。

您的任务

您的任务是编写一个函数,将任何分离转换为最小析取计数的等效析取。

标题中的QMC算法是一个草率的总结,仅仅是一个推荐,没有硬性要求。

您可以以任何合适的方式对数据进行编码,即\lnot x_1 \land \lnot x_2 \land x_3可以成为

  • (14,8)

我是code-golf。最短代码获胜。

EN

回答 2

Code Golf用户

发布于 2023-05-18 09:18:46

卡米拉利什,139个字节

代码语言:javascript
运行
AI代码解释
复制
(defun s m \let-seq(def a \⍸ \= 1 \⌼ $(foldl1 +)@/= m m)( (= 0 \⍴ a) m)(def p m$[⍎ a])\^⍪ p \⍠ m \[tie@*$(foldl1 =)] p)

"Ungolfed":

代码语言:javascript
运行
AI代码解释
复制
(⍥← s m \○⊢¨
  (○← a \⍸ \= 1 \⌼ $(⌿⊙← +)∘≠ m m)   ; Find all possible rows we can join.
  ( (= 0 \⍴ a) m)                    ; If we can't join anything, yield.
  (○← p m$[⍎ a])                      ; Determine the contents of the rows in the matrix to be joined.
  \^⍪ p \⍠ m \[⌿⊙⍧∘*$(⌿⊙← =)] p) ; Adjoin the new row, remove the merged two.

本质上,该算法在矩阵中找到表示表达式的两行(每个单元格,要么是-1,1,要么是0,表示布尔值要么被否定,要么被当作给定,或者不使用),这些行最多有一个条目不同。然后,如果找不到这样的行,则算法返回原始矩阵。如果存在至少一个这样的对,则将其从矩阵中删除,将两者之间的差异计算为掩码(例如,对于-1 -1 1 1和-1 -1 1 -1,掩码为1 1 1 0),然后乘以该对的第一(或等效的第二)元素,形成表达式矩阵中的新条目。

一些测试用例等:

在网上试试!

票数 3
EN

Code Golf用户

发布于 2023-05-14 04:33:47

哈斯克尔,340个字节

代码语言:javascript
运行
AI代码解释
复制
import Data.Bits;import Data.List;import Data.List.Ordered
o d[]=d;o _ s=s
p(a:b:c)|a==b=a|0<1=p(b:c)
q(_,b)(c,d)=c.&.b==c.&.d
r t s=and[or[q f e|e<-s]|f<-t]
s(a,b)(c,d)=[(a.&.complement x,b.&.d)|a==c,let x=xor b d,1==popCount x]
t d=nubSort$concatMap(\c->o[c]$concatMap(s c)d)d
u d=head$sortOn length$filter(r d)$subsequences$p$iterate t d

在这里,一个分离器用(significantbitmask,setbits)表示,由qs摆弄。s组合两个分隔符,如果它们具有相同的significantbitmask,并且恰好在一个位内不同。如果与任何人结合,o[c]可以防止分离子消失。u计算一个最小的分离:td中合并反价物直到p不再合并,然后它过滤r足够的子集,因为合并可以产生多余的分离子。

在网上试试!

票数 -2
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/260907

复制
相关文章
为什么我选择使用原型工具来代替纸原型
从毕业到现在的三年设计生涯中,对于设计我有自己的理解。从一开始的伟大梦想——通过我的设计改变世界,到现在的现实需求——设计得让人觉得有用,易用,好用。在大学的时候,导师会叫我们只用纸笔来做原型图,这样能更直观地看出我们的想法和信息架构。刚工作的时候,我也习惯只用纸笔来画原型图,这样能快速地表达我的想法。 纸笔原型毕竟使用的工具很简单,人人都有,只需要纸笔即可。纸原型关注的是流程而不是具体的细节,构建原型很快速,也并不用画的很精美只需要表达出界面的流程和关健信息。纸原型的好处就在于与他人沟通的时候可以进行
奔跑的小鹿
2018/03/16
8030
为什么我选择使用原型工具来代替纸原型
为什么我选择使用原型工具来代替纸原型
从毕业到现在的三年设计生涯中,对于设计我有自己的理解。从一开始的伟大梦想——通过我的设计改变世界,到现在的现实需求——设计得让人觉得有用,易用,好用。在大学的时候,导师会叫我们只用纸笔来做原型图,这样能更直观地看出我们的想法和信息架构。刚工作的时候,我也习惯只用纸笔来画原型图,这样能快速地表达我的想法。
奔跑的小鹿
2019/01/31
7220
为什么我选择使用原型工具来代替纸原型
为什么SQL优化中建议用UNION来代替OR
在SQL优化相关资料中,通常可以看到一个建议:用UNION来代替OR 举例 采用 OR 语句: SELECT * FROM a, b WHERE a.p = b.q or a.x = b.y; 采用 UNION 语句,返回的结果同上面的一样,但是速度要快些: SELECT * FROM a, b WHERE a.p = b.q UNION SELECT * FROM a, b WHERE a.x = b.y UNION 语句中明明是会执行两次查询操作,而 OR语句只有一次查询,OR语句反而
dys
2018/04/02
6.2K0
为什么SQL优化中建议用UNION来代替OR
电脑的 ip 是怎么来的呢?我又没有配置过
显然,这里有两种配置方式,一种是自动获取 ip 地址,一种是我们手动来设置,我相信大部分人都是通过自动获取的方式来得到 ip 的,那么问题来了,它是如何自动获得到的呢?
帅地
2019/06/06
1.3K0
电脑的 ip 是怎么来的呢?我又没有配置过
html是什么?如何正确使用html呢?
html的格式相信大家都经常见到过,但是对html的用途和使用估计有部分的朋友会不了解,html常用于程序编程,静态网页,网页链接等作为标记符号使用,那么具体的html是什么?如何正确使用html呢?对此问题,接下来就为大家做出简单易懂的介绍,想要了解的朋友就过来了解一下吧。
用户8715145
2021/06/17
2.1K0
CPS推广:为什么我的佣金还没有到账呢
CPS推广奖励的佣金,目前无法直接后台提现,需要在次月月结之后,由财务系统统一打款到银行,即推广者后台所填写的银行账号,一般上月佣金,次月月末到账,具体时间以银行到账为准。
腾讯云-推广奖励
2019/11/28
10.8K0
CPS推广:为什么我的佣金还没有到账呢
copykat为什么没有infercnv直观呢
其实 copykat 仅仅是算法判别的时候不如人意,但是可视化的时候仍然是肉眼可以明显区分二倍体正常细胞和非整倍体的癌症细胞,所以我们想看看具体做什么改进,可以绕过这个bug,首选项我们把全部的上皮细胞按照病人进行了拆分,得到如下所示 的每个病人独立的文件夹以及每个文件夹下面的expFile.txt !
生信技能树jimmy
2021/12/04
2.2K0
copykat为什么没有infercnv直观呢
unicloud进阶uni-id入门(一)---uni-id能做什么?
这个专栏就带大家使用uni-id 由于要写毕设和论文 所以会更新很慢 如果你对云开发感兴趣 可以加入交流群 974178910 535620886
代码哈士奇
2021/10/25
7640
unicloud进阶uni-id入门(一)---uni-id能做什么?
为何cytoscape总是说我没有java呢
因为最近自己购置了一个全新的Windows电脑,所以就系统性的配置了全部的生物信息学相关软件,当然是也包括cytoscape啦。但是遇到了报错,如下:
生信技能树
2020/07/30
2.3K0
为何cytoscape总是说我没有java呢
为什么 MyBatis 源码中,没有我那种 if···else
在MyBatis的两万多行的框架源码中,使用了大量的设计模式对工程架构中的复杂场景进行解耦,这些设计模式的巧妙使用是整个框架的精华。
搜云库技术团队
2023/10/21
2210
为什么 MyBatis 源码中,没有我那种 if···else
为什么 MyBatis 源码中,没有我那种 if···else
在MyBatis的两万多行的框架源码中,使用了大量的设计模式对工程架构中的复杂场景进行解耦,这些设计模式的巧妙使用是整个框架的精华。
一行Java
2023/09/19
2500
为什么 MyBatis 源码中,没有我那种 if···else
HTML中id、name、class 区别
id的用途  1) id是HTML元素的Identity,主要是在客户端脚本里用。
阳光岛主
2019/02/19
2.6K0
hdp 不更新了,有没有办法将 Apache Hadoop 代替 hdp 并集成到 Ambari 中呢?
今天咱来聊一聊 Ambari 如何集成 Apache Hadoop 哈,自从 cloudera 公司将 hortonworks 公司收购后,hdp 就不迭代更新了,这对 Apache Ambari 也产生了很大影响,毕竟 Ambari 与 hdp 耦合性很强。
create17
2022/11/17
3.5K1
使用LocalDateTime来代替Date
在我们使用Date的时候,会发现很多无法理解的返回值,而且有很多方法是已经被弃用了的
挨踢小子部落阁
2020/01/02
1.6K0
Postgre中FDW能做什么?
什么是FDW? FDW是外部数据包装器,早在2003年SQL标准中添加一个访问远程数据的规范,这个称为SQL外部数据管理。PostgreSQL从9.1版本已经开发出了FDW.在PostgreSQL中配
用户4700054
2022/08/17
1.6K0
Postgre中FDW能做什么?
selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘
pycharm新建了一个项目,用于做web自动化测试,直接安装了selenium这个库,发现之前写的Selenium元素定位的代码运行之后会报错,发现是Selenium更新到新版本(4.x版本)后,以前的一些常用的代码的语法发生了改变,当然如果没有更新过或是下载最新版本的Selenium是不受到影响的,还可以使用以前的写法。接下来就是讨论有关于新版本后Selenium定位元素代码的新语法,大家后面别再踩这个坑了。
霍格沃兹测试开发Muller老师
2022/12/01
5.2K0
python中利用try..except来代替if..else
在有些情况下,利用try…except来捕捉异常可以起到代替if…else的作用。 比如在判断一个链表是否存在环的leetcode题目中,初始代码是这样的
用户7886150
2020/12/20
5630
为什么不用Preact或者Fast-React来代替React ?
戳蓝字“IMWeb前端社区”关注我们哦! 1写在前面 生命在于折腾,Coder的折腾就在于造各种轮子。 React在前端圈大火之后,轮子层出不穷。而其中的一些轮子,由于专注于解决很多人诟病的React过大、过慢的问题(然而不并不觉得),也相当出名。关注最多的莫过于Preact、Inferno等以「轻量化」为特色的库了,Github Star数也超过10000。另外由于React广泛应用于同构应用上,并且 rendertoString,renderToStaticMarkup 也存在同步执行、速度慢等问题,一
用户1097444
2022/06/29
3940
为什么不用Preact或者Fast-React来代替React ?
为什么AlertDialog要使用Builder来构建呢
首先说句废话,因为 AlertDialog 太过复杂,内部参数太多,然后不使用构建者模式那么 AlertDialog 的构造方法就可能是:
开发者
2019/12/26
5330
文章是原创的,为什么网站没有收录呢?
刚进入seo领域就知道原创文章对于网站的收录、展现量、权重等的影响,所以保证网站内容的原创度是seoer的基本功,但往往你的内容是原创的,但网站迟迟没有收录,让很多seoer感到迷茫,其实问题不一定只出现在文章上,你还应做以下分析:
蝙蝠侠IT
2021/05/19
6560
文章是原创的,为什么网站没有收录呢?

相似问题

在派生类C++中访问受保护成员

10

如何延迟C++基类中成员的初始化,直到执行派生类的ctor?

20

派生类中基类委托ctor的c++使用

10

访问派生类中类的受保护成员

24

C++:无法从派生类访问受保护成员

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档