正如所有开发人员所做的那样,我们不断处理某种标识符作为日常工作的一部分.大多数时候,它是关于错误或支持票.我们的软件在检测到错误后,会创建一个包含时间戳和版本号格式的包,这是一种创建合理唯一标识符的便宜方式,可避免混淆包.示例:" 错误报告20101214 174856 6.4b2 ".
我的大脑在记住数字方面并不擅长.我希望拥有的是一种生成易于记忆的字母数字标识符的简单方法.
在python中创建如下所示的算法大约需要5分钟,这会产生一半的可用结果:
import random
vowels = 'aeiuy' # 0 is confusing
consonants = 'bcdfghjklmnpqrstvwxz'
numbers = '0123456789'
random.seed()
for i in range(30):
chars = list()
chars.append(random.choice(consonants))
chars.append(random.choice(vowels))
chars.append(random.choice(consonants + numbers))
chars.append(random.choice(vowels))
chars.append(random.choice(vowels))
chars.append(random.choice(consonants))
print ''.join(chars)
Run Code Online (Sandbox Code Playgroud)
结果如下所示:
re1ean
meseux
le1ayl
kuteef
neluaq
tyliyd
ki5ias
Run Code Online (Sandbox Code Playgroud)
这已经相当不错了,但是我觉得它们仍然很容易忘记它们是如何精确拼写的,所以如果你走到一个同事办公桌并想要查看其中一个,那么仍然有可能遇到困难.
我知道对文本执行三元分析的算法(比如你用德语为它们提供整本书),并且可以生成外观和感觉像德语单词的字符串,因此通常更容易处理.但是,这需要大量数据,并且使其稍微不适合仅为此目的而嵌入应用程序中.
您知道任何已发布的解决此问题的算法吗?
谢谢!
卡尔
在(另有)优秀的书籍C++编码标准,第44项,标题为"首选写非成员非朋友函数"中,Sutter和Alexandrescu建议只有真正需要访问类成员的函数才能成为该类成员.所有其他只能使用成员函数编写的操作不应该是该类的一部分.他们应该是非成员和非成员.争论是:
虽然我看到了这些论点的价值,但我发现了一个很大的缺点:我的IDE无法帮助我找到这些功能!每当我有某种对象时,我想看看它上面有哪些操作,我不能只输入" pMysteriousObject->
"并获得成员函数列表.
保持干净的设计最终会让您的编程生活更轻松.但这实际上会让我更难.
所以我想知道它是否真的值得这么麻烦.你怎么处理那件事呢?
我想,我有一个非常简单的问题.我有这个问题,可以通过递归函数很容易地解决,但我无法迭代地解决.
假设您有任何布尔矩阵,例如:
L:
111011111110
110111111100
001111111101
100111111101
110011111001
111111110011
111111100111
111110001111
Run Code Online (Sandbox Code Playgroud)
我知道这不是一个普通的布尔矩阵,但它对我的例子很有用.你可以注意到那里有一些零路径......
我想创建一个接收这个矩阵的函数和一个存储零的点,并将同一区域中的每个零转换为2(假设矩阵可以存储任何整数,即使它最初是布尔值)
(就像在Paint或任何图像编辑器中绘制区域一样)
假设我用这个矩阵M调用函数并且右上角的坐标为零,结果将是:
111011111112
110111111122
001111111121
100111111121
110011111221
111111112211
111111122111
111112221111
Run Code Online (Sandbox Code Playgroud)
好吧,我的问题是如何迭代地执行此操作...希望我没有把它弄得太乱
提前致谢!
曼努埃尔
ps:如果你能用C,S,python或伪代码显示函数,我会很感激,请:D
无论出于何种原因,某些程序(甚至操作系统本身)是否会更改可执行文件__TEXT段的内容?
换句话说:我可以依赖可执行文件的__TEXT段中的字节来检测我的可执行文件是否已被损坏(例如通过计算该段上的校验和),或者是否有可能出现误报,因为此段可能被修改程序安装在用户的计算机上后?
谢谢!