g-var.com | G-VAR's Blog

Recent Posts

Full Year Index

Posts in “2016”

CheckIO 3 | House Password

Wed, Aug 10, 2016
转载请注明出处! 原文链接:CheckIO 3 | House Password 任务: 斯蒂芬和索菲亚对于一切都使用简单的密码,忘记了安全性。请你帮助尼古拉开发一个密码安全检查模块。如果密码的长度大于或等于10个符号,至少有一个数字,一个大写字母和一个小写字母,该密码将被视为足够强大。密码只包含ASCII拉丁字母或数字。 输入: 密码 (str, unicode)。 输出: 密码的安全与否,作为布尔值(bool),或者任何可以转换和处理为布尔值的数据类型。你会在结果看到转换后的结果(True 或 False)。 Example: checkio(‘A1213pokl’) == False checkio(‘bAse730onE’) == True checkio(‘asasasasasasasaas’) == False checkio(‘QWERTYqwerty’) == False checkio(‘123456123456’) == False checkio(‘QwErTy911poqqqq’) == True 如何使用: 如果你担心你的应用或服务的安全性,您可以检查用户密码的复杂性。你可以使用这些技巧要求你的用户的密码符合多个条件(标点符号或unicode)。 前提:: re.match(”[a-zA-Z0-9]+“, password) 0 < len(password) ≤ 64 答案: def checkio(data): if len(data)>9: if any(i.isupper() for i in data) and any(i.islower() for i in data) and any(i.isdigit() for i in data): return True else: return False else: return False 其它答案:

CheckIO 2 | Median

Wed, Aug 10, 2016
转载请注明出处! 原文链接:CheckIO 2 | Median 任务: 中位数是一个可将数值集合划分为相等的上下两部分的一个数值。如果列表数据的个数是奇数,则列表中间那个数据就是列表数据的中位数;如果列表数据的个数是偶数,则列表中间那2个数据的算术平均值就是列表数据的中位数。在这个任务里,你将得到一个含有自然数的非空数组(X)。你必须把它分成上下两部分,找到中位数。 输入: 一个作为数组的整数(int)列表(list)的。 输出: 数组的中位数(int, float). 范例: checkio([1, 2, 3, 4, 5]) == 3 checkio([3, 1, 2, 5, 3]) == 3 checkio([1, 300, 2, 200, 1]) == 2 checkio([3, 6, 20, 99, 10, 15]) == 12.5 如何使用: 中位数在概率论和统计学中得到应用,它偏态分布中有显著的价值。例如:我们想从一组数据中知道人们的平均财富 – 100人一个月收入100美元,10人一个月收入1,000,000美元。如果我们算平均值,得到的是91000美元。这是一个完全没有向我们展示真实情况的奇怪的值。所以在这种情况下,中位数会给我们更有用的值和较好的描述。 维基百科的文章。 前提: 1 < len(data) ≤ 1000 all(0 ≤ x < 10 ** 6 for x in data) 答案:

CheckIO 1 | Non Unique Element

Tue, Aug 9, 2016
最近在学习Python,听说了一个叫CheckIO的网站(需要翻墙),是通过游戏的方式以Python来解答各种问题,正好可以通过该网站的任务来加深对Python的理解,希望以后能有时间每天做一两道题,在此记录的是不是我的答案,只记录一下比较经典的答案,基于Python 2.7。 转载请注明出处! 原文链接:CheckIO 1 | Non Unique Element 任务: 你将得到一个含有整数(X)的非空列表。在这个任务里,你应该返回在此列表中的非唯一元素的列表。要做到这一点,你需要删除所有独特的元素(这是包含在一个给定的列表只有一次的元素)。解决这个任务时,不能改变列表的顺序。例如:[1,2,3,1,3] 1和3是非唯一元素,结果将是 [1, 3, 1, 3]。 输入: 一个含有整数的列表。 输出: 一个含有不唯一元素的整数列表。 范例: checkio([1, 2, 3, 1, 3]) == [1, 3, 1, 3] checkio([1, 2, 3, 4, 5]) == [] checkio([5, 5, 5, 5, 5]) == [5, 5, 5, 5, 5] checkio([10, 9, 10, 10, 9, 8]) == [10, 9, 10, 10, 9] 如何使用: 这个任务将帮助您了解如何操作数组,这是解决更复杂的任务的基础。这个概念可以很容易地推广到真实世界的任务。例如你需要通过删除低频的元素(噪声)来使统计数据更清楚。 前提: 0 < |X| < 1000

[译]CMake与Visual Studio

Mon, Jul 25, 2016
最近在研究一个用CMake而生成的Visual Studio工程,修改项目属性比较艰难,有些时候还需要手动修改.vcxproj文件。遂想研究研究CMake,Google时碰到这么一篇CMake and Visual Studio的文章,想通过翻译的过程来加深学习。 转载请注明出处! 译文链接:CMake与Visual Studio 英文原文:CMake and Visual Studio CMake可以无缝地生成Visual Studio的解决方案。这篇文章会将CMake命令映射到Visual Studio IDE上,为了更容易学习会附上一个例子。此篇文章主要倾向于使用Visual Studio的C++开发者。这里的大多数引用都是基于Visual Studio 2010的,但应该也会同样适用于其他版本。大家可以从前言CMake for Visual Studio Developers开始阅读。注:这篇前言就不翻译了。 介绍 先简单的介绍一段关于CMake理念的背景。通常源文件应该被视为可以由开发者显式修改的任何文件。另外,可以从源文件持续生成的任何东西都应被视为构建过程的输出。每次构建总是会生成大量的临时或中间文件,为了避免生成的文件会弄乱实际的源文件,建议在源文件之外进行构建。 除了像.obj这样典型的中间文件,Visual Studio还会生成更多的临时文件,包括.sln、.sbr、.suo、.vcxproj.user、.vcxproj.filters。这些文件不需要(也不应该)被上传到源码库中,因为它们有的时候会非常大,并且这些文件还是用户特定的文件。 Visual Studio的开发者可能会将工程文件.vcproj视为”源”文件,因为它涉及到添加、删除文件以及修改文件的依赖等。然而,通过CMake你可以将工程文件也视为中间文件,因为CMake会自动生成它,并建议将其放置在源文件目录之外。 在CMake的构建系统中,构建的”规则”或者是”项目的设置”等都会被定义在称之为CMakeLists.txt的文本文件中。 Visual Studio到CMake的映射 Visual Studio项目的一些常见的操作和设置,以及它们与CMake的对应关系简要地罗列在下面的列表里。(注:表的内容就不翻译了) 例子 CMake Tutorial就是一个非常简单的例子。如果你对基本概念还不太清楚,请去该页面进行参考。这里的例子是个改进版本,用以展示常在Windows下使用的某些具体内容。 示例代码可以通过GitHub获得。而对于那些对Github不太熟悉的人,我将同样的代码打包成了7z文件。鼠标右键点击tutorial-7z.jpg,另存到硬盘上,然后将其重命名为Tutorial.7z,并将文件解压就可以获得源码了。 源码结构 CMake-VisualStudio-Example |---app | |---CMakeLists.txt | |---main.cxx |---math | |---advanced | | |---AdvancedFunctions.cxx | | |---AdvancedFunctions.h | |---simple | | |---SimpleFunctions.cxx | | |---SimpleFunctions.h | |----CMakeLists.txt | |---MathExports.h |---CMakeLists.txt |---TutorialConfig.h.in 执行CMake 如前所述,对于源外构建的建议,需要创建一个目录来存放由CMake生成的必须的Visual Studio项目文件和大量的CMake的特定文件。