使用 n-1 部分完成 x 部分
我在 python 中构建了一个小模块,它接受相同大小的字符串/缓冲区列表,并返回相同大小的 xor 字符串。然后,使用该字符串与 n-1
字符串一起,我可以完成缺失的字符串。 它工作得很好,所以我的问题是:
- 你知道已经为此制作了一个 python 模块吗?
- 有没有一种方法(实际上/理论上)我可以使用其他 n-2 个字符串来完成 2 个缺失的字符串:
可以说我有 4 个字符串:
a. “你好”
b. “视线”
c. “罗宾”
d. “关于”
有没有办法构建一个大小相同(或稍大一点)的新字符串,如果我有该字符串以及两个字符串,例如“a”和“b”,我可以完成“c”和“d '?
I've build a small module in python which takes a list of strings/buffers in the same size, and returns a xor
string in the same size. Then, using that string, together with n-1
strings, I can complete the missing one.
It works great, so my question is:
- do you know an already made python module for that?
- is there a way (practically/theory) where i can complete 2 missing strings using the other n-2 strings:
Lets say i have 4 strings:
a. "hello"
b. "sight"
c. "robin"
d. "about"
Is there a way to build a new string in the same size (or a little bigger) that if i have that string and also 2 strings for example 'a' and 'b' i could complete 'c' and 'd'?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
(1) 不太可能有一个已发布的模块。
(2) 我认为你的意思是
a ^ b ^ c ^ d == e
,并且你问如果ab的值是否可以恢复c和d的值(“完成”)和 e 是已知的。这个问题的答案是否定的——你有一个含有两个未知数的方程。更新以回答问题“所以如果我理解正确的话,没有比我所做的 XOR 更好的解决方案了吗?”
不,我指出使用 XOR 只能恢复一个丢失的字符串。您可能希望在网络上搜索“纠错代码”。
(1) There is unlikely to be a published module for that.
(2) I think that you mean that
a ^ b ^ c ^ d == e
, and you ask if the values of c and d can be recovered ("completed") if the values of a b and e are known. The answer to that question is no -- you have one equation with two unknowns.Update in response to question "so if i understand you correctly there is no better solution than the XOR thing i did?"
No, I was pointing out that using XOR allowed recovery of only one missing string. You may wish to do a web search for "error correcting codes".
查找此类对的算法很简单 - 对于每个可能的“c”,查找匹配的“d”。你会得到很多解决方案。显然你不能得到单对('c','d'),因为这样你可以切换两个字符串中的一位(两个字符串中的相同位)并得到不同的解决方案。
The algorithm to find such pairs is simple - for every possible 'c' find matching 'd'. You'll get many solutions. Obviously you can't get single pair ('c', 'd') because then you could switch one bit in both strings (the same bit in both) and get different solution.