Android 锁密码组合
我刚刚从我的同事那里听到了这个有趣的问题。我现在正在尝试,但同时我想我可以在这里分享。
Android 主屏幕上显示的密码网格中,可能有多少个有效密码? 密码最小长度:4 最大:9(如果我错了请纠正我)
I just came across with this interesting question from my colleague. I'm trying now, but meanwhile I thought I could share it here.
With the password grid shown in the Android home screen, how many valid passwords are possible?
min password length: 4 max: 9 (correct me if I'm wrong)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
摘要
4 到 9 个独特数字的完整组合,减去包含无效“跳跃”的组合。
长版
Android 3x3 密码网格规则:
一次一点
不能“跳过”一个点
原帖作者使用 Mathematica 生成所有 985824 个组合。
因为没有“跳转”,所以几对连续的点都是无效的。
删除所有无效组合以达到结果。
4 到 9 点路径的组合分别为 1624、7152、26016、72912、140704、 140704.
中文原帖
参考来自guokr,一个类似 Stack Exchange Skeptics 的网站形式博客。
Summary
The full combinations of 4 to 9 distinctive numbers, minus the combinations which include invalid "jump"s.
The Long Version
The rule for Android 3x3 password grid:
one point for once
cannot "jump" over a point
The author of the original post used Mathematica to generate all 985824 combinations.
Because there is no "jump", several pairs of consecutive points are invalid.
Delete all invalid combinations to reach the result.
The combinations for 4-to-9-point paths are respectively 1624, 7152, 26016, 72912, 140704, 140704.
The Original Post In Chinese
The reference is from guokr, a site alike Stack Exchange Skeptics in the form of blogs.
我知道这个问题很旧,但我在另一个 问题(在找到这个问题之前)在python中使用暴力方法,所以为了后代将其添加到这里:
这样你就可以列出任何数字的所有模式步骤数:
这不是解决该问题的最有效方法,因为您可以使用反射并仅计算 4*corner + 4*mid-edge + 1*middle,例如:
I know this question is old, but I answered it in another question (before finding this question) with a brute force approach in python, so adding it here for posterity:
So you can list all the # of patterns for any number of steps:
This is not the most efficient way of solving it because you could use reflections and only calculate a 4*corner + 4*mid-edge + 1*middle, e.g.:
我通过递归搜索强行得到了答案,并找到了一个更大的答案,487272。算法很简单:尝试一切。我在这里引用了它。我没有在我的代码中发现任何错误(但我对c++不是很熟练)。抱歉有语法错误,我不是英语。
I brute forced the answer with a recursive search and i found a bigger answer, 487272. The algorithm is simple: trying it all. I quoted it down here. I didn't found any error in my code (but I'm not very skilled with c++). Sorry for the grammatical error I'm not English.
我只是运行 python 代码来获得可能的组合
我有 985824 种可能性
i just run a python code to get possible combinations
i got 985824 possibilities
(点数 - 有效模式)
(4 - 746)
(5 - 3268)
(6 - 11132)
(7 - 27176)
(8 - 42432)
(9 - 32256)
共有 117010 个可能的有效模式
(No of Points- Valid patterns)
(4 - 746)
(5 - 3268)
(6 - 11132)
(7 - 27176)
(8 - 42432)
(9 - 32256)
Total of 117010 valid Patterns are possible