三个值的异或

2024-02-03

进行三向异或的最简单方法是什么?

换句话说,我有三个值,并且我想要一个仅计算为 true IFF 的语句one三个值中的一个为真。

到目前为止,这就是我想出的:

((a ^ b) && (a ^ c) && !(b && c)) || ((b ^ a) && (b ^ c) && !(a && c)) || ((c ^ a) && (c ^ b) && !(a && b))

有没有更简单的方法可以做同样的事情?


这是上述完成任务的证明:

a = true; b = true; c = true
((a ^ b) && (a ^ c) && !(b && c)) || ((b ^ a) && (b ^ c) && !(a && c)) || ((c ^ a) && (c ^ b) && !(a && b))
=> false

a = true; b = true; c = false
((a ^ b) && (a ^ c) && !(b && c)) || ((b ^ a) && (b ^ c) && !(a && c)) || ((c ^ a) && (c ^ b) && !(a && b))
=> false

a = true; b = false; c = true
((a ^ b) && (a ^ c) && !(b && c)) || ((b ^ a) && (b ^ c) && !(a && c)) || ((c ^ a) && (c ^ b) && !(a && b))
=> false

a = true; b = false; c = false
((a ^ b) && (a ^ c) && !(b && c)) || ((b ^ a) && (b ^ c) && !(a && c)) || ((c ^ a) && (c ^ b) && !(a && b))
=> true

a = false; b = true; c = true
((a ^ b) && (a ^ c) && !(b && c)) || ((b ^ a) && (b ^ c) && !(a && c)) || ((c ^ a) && (c ^ b) && !(a && b))
=> false

a = false; b = true; c = false
((a ^ b) && (a ^ c) && !(b && c)) || ((b ^ a) && (b ^ c) && !(a && c)) || ((c ^ a) && (c ^ b) && !(a && b))
=> true

a = false; b = false; c = true
((a ^ b) && (a ^ c) && !(b && c)) || ((b ^ a) && (b ^ c) && !(a && c)) || ((c ^ a) && (c ^ b) && !(a && b))
=> true

a = false; b = false; c = false
((a ^ b) && (a ^ c) && !(b && c)) || ((b ^ a) && (b ^ c) && !(a && c)) || ((c ^ a) && (c ^ b) && !(a && b))
=> false

对于恰好三个术语,您可以使用以下表达式:

(a ^ b ^ c) && !(a && b && c)

第一部分是true当且仅当其中一项或三项是true。表达式的第二部分确保三个部分不是全部true.

请注意,上面的表达式确实NOT推广到更多术语。更通用的解决方案实际上是count有多少个术语true,所以像这样:

int trueCount =
   (a ? 1 : 0) +
   (b ? 1 : 0) +
   (c ? 1 : 0) +
   ... // more terms as necessary 

return (trueCount == 1); // or some range check expression etc
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

三个值的异或 的相关文章

  • 将均匀分布转换为正态分布

    如何将均匀分布 大多数随机数生成器产生的结果 例如在 0 0 和 1 0 之间 转换为正态分布 如果我想要我选择的平均值和标准差怎么办 方法有很多 Do not使用博克斯穆勒 特别是当你画很多高斯数时 Box Muller 产生的结果被限制
  • 如何检测(心电图)波的模式?

    我正在尝试读取心电图图像并检测其中的每个主波 P 波 QRS 波群和 T 波 我可以读取图像并获得向量 例如 4 2 4 4 4 9 4 7 我需要一种算法来遍历这个向量并检测每个波何时开始和结束 一个例子 如果它们总是具有相同的大小 或者
  • 将字符串“true”/“false”转换为布尔值[重复]

    这个问题在这里已经有答案了 我有一个 JavaScript 字符串 其中包含 true or false 我怎样才能将它转换为布尔值而不使用eval功能 var val string true 不区分大小写 const val string
  • 获取 pandas 布尔系列为 True 的索引列表

    我有一个带有布尔条目的熊猫系列 我想获得一个索引列表 其中的值是True 例如输入pd Series True False True True False False False True 应该产生输出 0 2 3 7 我可以通过列表理解来
  • 将数字缩放为 <= 255?

    我的单元格的数值可以是 0 到 0 之间的任何值Integer MAX VALUE 我想对这些单元格进行相应的颜色编码 如果该值 0 则 r 0 如果该值是Integer MAX VALUE 则 r 255 但是中间的值呢 我想我需要一个函
  • 通过列表搜索

    我一直在尝试定义一个函数 给定一个整数列表和一个整数 n 返回一个布尔值 指示 n 是否在列表中恰好出现一次 我有这个 但它不起作用 我无法弄清楚 once a gt a gt Bool gt Bool filter filter p x
  • 3 维装箱算法

    我面临着 3 维装箱问题 目前正在进行一些初步研究 了解哪些算法 启发式方法目前能产生最佳结果 由于问题是 NP 难问题 我不希望在每种情况下都能找到最佳解决方案 但我想知道 1 最好的精确求解器是什么 分支定界 我期望使用合理的计算资源可
  • 复杂的 SOLR 查询,包括 NOT 和 OR

    我对 SOLR 搜索有一些相当复杂的要求 我需要针对标记内容的数据库执行这些搜索 我需要首先过滤数据库以获取与我的过滤器标签匹配的结果 任何具有黑名单中的标签的结果都应被删除 除非它们也包含白名单中的标签 假设我想检索所有标记为 森林 或
  • 多维数组(如 C/C++ 中的数组)是不规则数组的特殊情况吗? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我和一个哥们讨论了C 和C多维数组是否是不规则数组的特例 一种观点是 多维数组不是参差不齐的数组 因为多维数组的每个元素具有相同的大小 在参差不齐的数
  • 什么是样板代码、热点代码和热点?

    我知道这些术语是在性能实现 优化的背景下使用的 最近一直在研究这个问题 并尝试过搜索 但没有得到任何例子 清楚地阐述 描述这些概念以及在现实世界开发场景中实现这些问题 概念 有人可以彻底解释这些术语 示例场景以及可能使用这些概念和术语的地方
  • 如何在 PHP、HTML 表单和 Javascript 之间传递布尔值

    我有一个 PHP 程序 它使用 HTML 表单并使用 JavaScript 进行验证 HTML 表单中有一个隐藏字段 其中包含一个布尔值 该值由 PHP 设置 由 JavaScript 在提交时进行验证 然后传递到另一个 PHP 页面 当我
  • 如何检查一个盒子是否适合另一个盒子(允许任何旋转)

    假设我有两个盒子 每个盒子都是一个长方体 http en wikipedia org wiki Rectangular cuboid aka长方体 我需要编写一个函数来决定盒子是否具有尺寸 一 二 三 可以装入具有尺寸的盒子中 甲 乙 丙
  • 如何计算分数?

    这个问题比任何编程语言都更与逻辑相关 如果问题不适合论坛 请告诉我 我将删除它 我必须编写一个逻辑来计算博客奖网站的博客分数 一个博客可能会获得多个奖项类别的提名 并由评审团以 1 到 5 的等级进行同行评审或评级 1 表示他们完全不喜欢博
  • 数据库、表和列命名约定? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 每当我设计数据库时 我总是想知道是否有命名数据库中项目的最佳方法 我经常问自己以下问题 表名应该是复数吗 列名应该是单数吗 我应该为表或列添加前
  • 错误:在 Java 中声明布尔值时不是一个语句

    下面的代码 boolean continue false 返回以下错误 error not a statement boolean continue false 为什么会发生这种情况 我对布尔值非常熟悉 试试这个 boolean cont
  • 如何通用地减少子集平均值的计算?

    Edit 由于似乎没有人阅读此链接的原始问题 因此让我在这里介绍一下它的概要 正如其他人所问的 最初的问题是 给定大量值 总和将超过数据类型的值Double那么如何计算这些值的平均值呢 有几个答案说要按集合计算 比如取50个和50个数字 计
  • If 语句中 Bool 计算错误

    只是为了好奇 我的代码有这个问题 e被评估为false 我知道通过查看数据库中的数据会得到错误 但 if 语句并不关心这一点 并假设这是真的 并试图抛出异常 有什么想法吗 edit 没有 在第 16 行末尾 价值false是正确的 我已经检
  • 以任意顺序匹配可选捕获组

    在解析用户输入的许多情况下 用户有机会向输入添加几个可选标志 这些标志应该以任何顺序接受 如何使用正则表达式对其进行解析 以便每个标志都位于它自己的捕获组中 如果存在 例如 有一个必需的令牌a 然后是 3 个可选标记 可以按任何顺序出现b
  • “此应用程序已请求运行时以异常方式终止它”的原因是什么?

    Visual C 运行时抛出一个常见错误 此应用程序已请求运行时以异常方式终止它 请联系应用程序的支持团队以获取更多信息 该错误消息实际上是什么意思mean 让我用一个比喻来准确地解释我的问题 如果我看到一条消息 异常 访问冲突 0xc00
  • 不明白为什么当变量为整数时条件评估为 True

    我正在使用表现出以下行为的代码 假设我有一个变量d我把它赋给一个整数9 d 9 为什么以下语句有效 In 95 if d print d else print Did not print d 9 In 96 当 d 本身不是布尔值且未通过以

随机推荐

  • ruby 有命令行框架吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 那么 有 Web 框架 有 GUI 框架 我只是想知道 ruby 是否有控制台 命令行框架 具体来说 我
  • OptionParser python 模块 - 同一变量的多个条目?

    我正在编写一个小 python 脚本来从多个服务器或单个服务器获取统计信息 并且使用 OptionParser 来解析命令行输入 usr bin python import sys from optparse import OptionPa
  • 即使签名的最后一个字符发生更改,JWT 令牌也能解码

    我只是使用这个 jwt 库在 Rails 应用程序上尝试 JWT 令牌 https github com jwt ruby jwt https github com jwt ruby jwt JWT encode sss 333 SECRE
  • 为什么Java NIO可以优于标准Java套接字?

    最近我正在使用 Java 套接字和 NIO 来编写服务器 尽管我仍然不太清楚为什么 Java NIO 优于标准套接字 当使用这些技术之一编写服务器时 在大多数情况下 它归结为具有一个接受连接并将其进一步传递给工作线程的调度程序线程 我读过
  • 如何在 JSP 中的 derby 数据库中插入和删除值?

    历史 history https stackoverflow com questions 44149892 how can i insert value to a database to derby in jsp 问题是我无法从数据库中删除
  • 将函数推入数组 - 循环和拼接?

    使用 Javascript 我需要能够 1 将一定数量的相同函数 每个函数具有不同的参数 推送到数组中 2 然后一一运行每个函数 在本例中只是参数 编号的警报 3 在每个函数之后 我需要能够将该函数从数组中拼接出来 4 每次之后检查数组长度
  • Mac Os X 上的 NDK 构建错误:“致命错误:stdint.h:没有这样的文件或目录”

    我使用以下构建命令来构建OpenH264 https github com cisco openh264项目 make OS android ARCH arm64 NDKROOT Library Android android ndk r1
  • SVG 和 HTML 中的缩放元素有区别吗?

    这个问题 https stackoverflow com questions 5882716 html5 canvas vs svg vs div看起来很相似但最终是不同的并且没有帮助 而且 接受的答案是2011年写的 似乎已经过时了 该问
  • 在 R Shiny 中跨多个模块使用reactiveValues

    我正在尝试在 R 闪亮应用程序中的多个模块中使用reactiveValues 我举了一个例子来说明我的问题 它由一个主应用程序组成 其中包含一个reactiveValue 它是一个3列的数据帧和3个旨在 读取 写入 和 读写 reactiv
  • 如何使用 Swift 将 JSON 数组数据加载到 UIActionSheet 按钮标题中

    I have JSON内的数据array 我需要加载这个数组数据UIActionSheet button title 在这里 我尝试使用单个创建一个通用的 UIActionSheetbutton 基于数组字符串 我需要加载数据作为按钮标题
  • Python 的多个构造函数

    我有一个 A 类 可以通过两种不同的方式生成 a A xml 文件路径 a A 列表 列表 第一个方法以文件路径作为输入 从 XML 文件解析以获取 listA 和 listB 第二种方法给出了两个列表 我可以想到两种方法来实现多个构造函数
  • 虚函数可以被非虚函数覆盖吗?

    在此代码中 class Base public virtual void method 0 class Derived1 public Base public virtual void method override class Deriv
  • 从顶部滑动抽屉

    我试图让一个滑动抽屉在我的应用程序中从顶部拉下 但我无法找到一种方法来做到这一点 有什么帮助吗 内置的滑动抽屉不是那么灵活 你最好的选择是扩展它并修改它的行为 或者看看这个http code google com p android mis
  • Git 软件(例如 Gitbox、Github、SourceTree)可以使用远程存储库而不是本地存储库吗?

    我喜欢使用 Git 软件来推送提交 但我使用的软件 Gitbox Github SourceTree 在向其添加新存储库时都要求本地存储库 问题是 我的存储库位于我的开发服务器上 而不是我的本地计算机上 那么 Git 软件是否可以使用远程
  • Nodejs Express 4 Multer | Nodejs Express 4 Multer如果用户未授权则停止文件上传

    我在用着multer作为 Express 4 的多部分中间件 Express 配置为使用护照作为身份验证中间件 但如果用户未经身份验证 我找不到阻止文件上传的方法 我想使用 onFileUploadStart 来拒绝该文件 但我找不到与 请
  • 禁用链接和 上的浏览​​器工具提示

    当用户将鼠标悬停在某些链接和元素上时 我想抑制网络浏览器的默认工具提示显示 我知道这是可能的 但我不知道如何实现 有人可以帮忙吗 这样做的原因是抑制微格式日期时间的工具提示 BBC 放弃了对 hCalendar 的支持 因为机器可读日期的外
  • 您可以隐藏 QGroupBox 框架但保留其内容可见吗?

    我有一个QGroupBox 根据上下文 它的标题可能是多余的 显示在 GUI 的另一个位置 所以我需要将QGroupBox不在这里 但我必须保留它的内容可见 所以我不想打电话QGroupBox hide 我需要在运行时动态执行此操作 并希望
  • 如何使 Groovy 方法真正受到保护

    尝试在groovy中创建一个方法protected package com foo class Foo protected def getSomething 这不起作用 因为默认情况下 groovy 几乎使所有内容都可见 所以我尝试使用 P
  • HTML 按钮 - 按住按钮时它将重复该操作

    我是 HTML 新手 我正在开发一个项目 该项目需要使用一个按钮 当您按住它时 它会重复相同的操作 这是我到目前为止得到的代码 但没有起作用 DOCTYPE html gt
  • 三个值的异或

    进行三向异或的最简单方法是什么 换句话说 我有三个值 并且我想要一个仅计算为 true IFF 的语句one三个值中的一个为真 到目前为止 这就是我想出的 a b a c b c b a b c a c c a c b a b 有没有更简单