位运算解决简单逻辑推理问题

news2025/9/19 5:39:57

今天在学习Go语言中的位运算时,老师突然问我们位运算可以有哪些运用场景?这一点让我一下子想到了刷到的leetcode中的两道题目,例如丢失的数字和只出现一次的数字。有兴趣的小伙伴可以尝试做做看。
这两道题目都是用位运算解决的,并且十分简单,二者都是使用的异或的运算规律轻松解题,即 a ⊕ 0 = a , a ⊕ a = 0 a\oplus0=a,a\oplus a=0 a0=a,aa=0,因为异或就是相对应的两个bit相同则为0,不同则为1。
但是,位运算的应用场景还远不止这么简单,它还可以运用在位掩码、位压缩、快速计算、位图算法、加密和哈希算法、图形处理和图像处理等,今天我介绍一种位运算的简单应用场景,处理解决逻辑推理问题。

1.题目描述

某任务需要ABCDE五个人去完成,但有如下限制
1.A去则B也要去
2.D和E两个人至少要去一人
3.B,C两人必有人去,但只能去一人
4.C,D要么都去,要么都不去
5.如果E去,则A也去
在这里插入图片描述

2.题目分析

本题可以使用lingo解决线性规划问题,也可以使用机器学习,当然,这里我使用位运算解决,这一种解决方法是我没想到的,就相当于我不知道可以使用异或运算交换两个变量的值一样。
具体使用位运算分析过程如下所示:
本题一共有五个人,因此最多只有32种情况,所以用五位二进制即可以表示全部情况。
最高位为1,即1xxxx 则表示A去(注意,这里的x表示任意情况(0或1)都可
次高为为1,即x1xxx 则表示B去
第三位为1,即xx1xx 则表示C去
第四位为1,即xxx1x 则表示D去
最低位为1,即xxxx1 则表示E去
如此,可以分析得出
如果A对应的位数为1 而B对应的位数为0 此种情况不符合条件;
如果D和E对应的位数都为0 此种情况不符合条件;
如果B和C对应的位数相同 此种情况不符合条件;
如果C和D对应的位数不同 此种情况不符合条件;
如果E对应的位数为1 且A对应的位数为0 此种情况不符合条件;

3.代码实现

这里由于我学习的是Go语言,所以代码是用Go语言实现的,当然只要你搞懂了分析过程,使用Java语言的位运算也同样可以解决。

package main

import (
	"fmt"
)
// 模拟使用位运算解决逻辑问题
func main() {
	for i := 0; i < 32; i++ {
		// 这里的ABCDE分别表示i对应的位数 只能为0或1 1代表去 0代表不去
		A, B, C, D, E := (i&16)>>4, (i&8)>>3, (i&4)>>2, (i&2)>>1, (i & 1)
		if A == 1 && B == 0 {
			continue
		}
		if D == 0 && E == 0 {
			continue
		}
		if B == C {
			continue
		}
		if C != D {
			continue
		}
		if E == 1 && A == 0 {
			continue
		}

		fmt.Printf("A:%v\n", A == 1)
		fmt.Printf("B:%v\n", B == 1)
		fmt.Printf("C:%v\n", C == 1)
		fmt.Printf("E:%v\n", D == 1)
		fmt.Printf("F:%v\n", E == 1)

		fmt.Printf("=================\n")
	}
}

具体程序运行结果如下所示:
在这里插入图片描述

根据程序运行结果可知,只有CE一起去或者ABF一起去才能满足要求,此后,遇到这种类似的逻辑推理问题,均可以使用位运算解决,方便快捷还好理解。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软考实行机考后,考前需要带什么?

软考实行机考之后&#xff0c;很多宝子们都在问考场需要带什么&#xff1f;今天给大家分享一下需要准备的东西~大家自行查看 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 2023年11月软考考前必看—考试需携带的物品 1、从2023年下半年开始&#xff0c…

网页博弈测试报告

文章目录 项目介绍项目测试用例自动化测试注册自动化测试登录自动化测试匹配测试 性能测试编写脚本创建测试场景性能测试报告 项目介绍 该项目是一个网页对战的五子棋游戏&#xff0c;支持真人匹配对战和人机对战&#xff0c;支持多用户同时匹配进行五子棋对战&#xff0c;通过…

mysql数据库 windows迁移至linux

1.打开navicat&#xff0c;选择一个数据库进行操作&#xff1a; 之后文件会保存为一个xxx.sql文件&#xff0c;之后打开xftp&#xff0c;把生成的sql放进一个文件夹中(/home/dell/linuxmysql)&#xff1a; 之后登录mysql数据库&#xff0c;并创建一个新的数据库&#xff0c;然后…

Pytorch之ConvNeXt图像分类

文章目录 前言一、ConvNeXt设计决策1.设计方案2.Training Techniques3.Macro Design&#x1f947;Changing stage compute ratio&#x1f948;Change stem to "Patchify" 4.ResNeXt-ify5. Inverted Bottleneck6.Large Kernel Size7.Micro Design✨Replacing ReLU wit…

论文阅读:Fast-BEV: Towards Real-time On-vehicleBird’s-Eye View Perception

Abstract 现有的BEV解决方案要么需要大量的资源执行车载推理&#xff0c;要么效果一般。Fast-BEV包含五部分&#xff1a; 1&#xff09;一个轻量化部署友好的视角转换方式&#xff0c;可以快速将2D图像特征转到3D体素空间。 2&#xff09;一个多尺度图像编码器利用多尺度特征。…

Mac/Wins Matlab如何查看APPs源码

查看Apps方法一样&#xff0c;点击HOME-preferences-MATLAB-Apps查看你的Apps安装路径。 你的Apps文件就安装在该目录下&#xff0c;直接进入这个目录就可以看到你自己写的APPs文件&#xff0c;

Fastjson历史版本记录

1.2.24 TemplatesImpl&#xff0c;利用条件苛刻&#xff0c;需要开启Feature.SupportNonPublicField {"type": "com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl","_bytecodes": ["yv66vgAAADQA...CJAAk"],"_name…

光通路数据单元(ODU),ODUk,同步传送模块(STM),虚容器(VC)等级

文章目录 ODUk同步传送模块&#xff0c;STM虚容器&#xff0c;VC时隙 光通路 数据 单元(ODU&#xff0c;Optical channel data unit) 提供与信号无关的连通性&#xff0c;连接保护和监控等功能&#xff0c;这一层也叫数据通道层。 ODUk&#xff0c;k值越大&#xff0c;帧周期越…

SpringBootCms

SpringBootCMS&#xff0c;极速开发&#xff0c;动态添加字段&#xff0c;自定义标签&#xff0c;动态创建数据库表并crud数据&#xff0c;数据库备份、还原&#xff0c;动态添加站点(多站点功能)&#xff0c;一键生成模板代码&#xff0c;让您轻松打造自己的独立网站&#xff…

spark读取hive表字段,区分大小写问题

背景 spark任务读取hive表&#xff0c;查询字段为小写&#xff0c;但Hive表字段为大写&#xff0c;无法读取数据 问题错误: 如何解决呢&#xff1f; In version 2.3 and earlier, when reading from a Parquet data source table, Spark always returns null for any column …

高防CDN:网络安全的锁与钥匙

深度解析高防CDN原理 高防CDN&#xff0c;一门整合防护与分发功能的互联网安全技术&#xff0c;以卓越之姿应对DDoS攻击等网络威胁&#xff0c;巧妙地辨识和过滤访问源地址&#xff0c;以保障用户畅通访问和服务的稳定。其核心原理包括&#xff1a; 流量清洗&#xff1a; 高防C…

mysql数据库语法改造成dm数据库DATE_SUB

给了一个任务就是把一个项目用dm数据库正常跑起来&#xff0c;真的难呀&#xff0c;项目原本是使用的mysql、 问题寻找 dm数据库保存&#xff0c;我看mysql跑的挺好的&#xff0c;然后开始找原因。 其中还没有看懂这两个函数&#xff0c;特意搜了搜 LAST_DAY 取最后一天 DATE_…

社区投稿| 以安全视角,深度剖析 Sui Staking 与 LSD

本篇技术研报由 MoveBit 研究团队的 Jason 撰写 #1 Sui Staking 介绍 1.1 Sui 网络概述 Sui 网络由一组独立的验证者运行&#xff0c;每个验证者在自己的机器或集群上运行独立的 Sui 软件实例。 Sui 采用委托权益证明&#xff08;DPoS&#xff09;来确定哪些验证者参与网络…

Bootstrap的下拉菜单组件相关知识

Bootstrap的下拉菜单组件依赖于第三方popper.js插件实现&#xff0c;popper.js插件提供了动态定位和浏览器窗口大小监测&#xff0c;所以在使用下拉菜单时确保引入了popper.js文件&#xff0c;并且要放在引用Bootstrap.js文件之前前。 目录 01-下拉菜单基本结构02-分裂式下拉菜…

世和基因NGS大Panel IVD产品获批上市

近日&#xff0c;国家药品监督管理局&#xff08;NMPA&#xff09;通过创新医疗器械特别审批&#xff0c;批准世和基因旗下南京世和医疗器械有限公司的非小细胞肺癌组织TMB检测试剂盒&#xff08;可逆末端终止测序法&#xff09;&#xff08;国械注准20233401452&#xff09;上…

验收测试的关键步骤您知道吗

验收测试是软件开发生命周期中的重要环节&#xff0c;用于验证项目交付是否符合用户需求和质量标准。本文将介绍验收测试的定义及实施验收测试的关键步骤。 一、验收测试的定义和目标 确保项目交付质量&#xff1a;通过主动验证和评估软件系统的功能、性能和质量&#xff0c;确…

JS调试技巧

插桩导出全局变量 在代码段中导出运行 1.先找到需要的调试的函数 2.删除逗号给后面的变量加VAR 3.用个window.变量去接收需要的函数&#xff0c;让他变成全局变量 4.直接执行 window.wang.md5(123123213123) eval&#xff0c;AA&#xff0c;OO,JJ导出混淆参数 重写evel…

虚拟机独立 IP 配置

虚拟机独立 IP 配置 1. 点击虚拟网络编辑器 2. 点击更改设置 3. 查看本地电脑网卡型号并设置虚拟网络编辑器桥接网卡为同型号网卡 4. 设置有限网络信息 5. 点击网络编辑按钮并点击身份 6. 编辑名称并选择MAC地址 7. 配置 IPv4 地址后点击应用即可

2021上海市赛【10.10训练补题】

Dashboard - The 2021 Shanghai Collegiate Programming Contest - Codeforces 参考题解&#xff1a;2021CCPC上海省赛题解ABCDEGHIJK_2021ccpc上海题解_Hytidel的博客 A. 小 A 的点面论&#xff08;数学几何&#xff09; 题解&#xff1a;求平面的法向量&#xff08;外积法…

sshpass传输文件提示Host key verification failed.

1. sshpass功能简述 sshpass指令可用于A服务器向B服务器传输文件或执行某些指令。 2. 传输文件指令 基本传输命令&#xff1a;sshpass -p 远程服务器登录密码 scp 本地路径文件 远程服务器登录用户名远程服务器IP地址:远程服务器文件保存路径 示例&#xff1a; sshpass -p 1…