algorithm - 有没有一个简单的公式可以计算这些代码?

标签 algorithm encoding

Switch 1 can be set to F or S.
Switch 2 can be set to M or A or C or N.
Switch 3 can be set to U or B.
Switch 4 can be set to Z or Y.

以下 3 位数字(认为是十进制) 代表所示开关设置的组合。 没有其他组合重要或不会遇到。

036 == F, M, U, Z
037 == S, M, U, Z
040 == F, M, B, Y
041 == F, M, U, Y
042 == S, M, B, Y
043 == S, M, U, Y
080 == F, A, B, Z
081 == F, A, U, Z
082 == F, C, B, Z
083 == F, C, U, Z
090 == S, A, B, Z
091 == S, A, U, Z
092 == S, C, B, Z
093 == S, C, U, Z
140 == F, A, B, Y
141 == F, A, U, Y
142 == S, A, B, Y
143 == S, A, U, Y
240 == F, C, B, Y
241 == F, C, U, Y
242 == S, C, B, Y
243 == S, C, U, Y
260 == F, N, U, Z
261 == S, N, U, Z
270 == F, N, U, Y
271 == S, N, U, Y
300 == F, N, B, Z
301 == S, N, B, Z
310 == F, N, B, Y
311 == S, N, B, Y
700 == F, M, B, Z
702 == S, M, B, Z

是否有一个简单的公式(不是查找表或树) 用于根据开关设置计算 3 位数字? 如果公式中包含未列出的组合也可以 上面,因为这些永远不会被输入。

最佳答案

似乎可以用 karnaugh maps 解决问题或其等效项之一(例如 Quine-McCluskey algorithm )

这样,3 位数字的二进制表示就是您的输出,并且您有 5 个输入,开关 1、3 和 4 各 1 位,开关 2 各 2 位。

如果您的输入是固定的(因此您不需要编写程序来给出表达式),则将卡诺方法与您知道的其他操作混合在一起可能会受益更多。卡诺图为您提供“与-或”表达式,但在您的应用程序中,您还可以使用加法和其他可用的操作。

关于algorithm - 有没有一个简单的公式可以计算这些代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10745961/

相关文章:

algorithm - 高度为h的红黑树的最小节点数计算公式是什么?

algorithm - 如何查询在线上的所有点

algorithm - 产业划分问题

algorithm - Floyd 的循环查找算法 - 需要两个指针?

java - 为什么我的porter stemmer算法的结果和词根不相符呢?

java - Java HTTP 请求的 header 转义/编码

encoding - 将 ffmpeg 与 vidstab 和编码 2 channel 一起使用的更好方法

编写德语字母时出现 Python UnicodeDecodeError

python - 带有 % 的 Flask URL 参数未正确处理

mysql - 从 MSSQL 迁移到 MySQL 的字符编码问题