宗教,或是无节制的自由主义,是致人腐化的毒剂. 现在,一个人要经历 n 个事件,编号为 1 ∼ n. 经历 x 号事件,他的危险值就会增加 x. 一开始他的危险值是 0. 当一个人的危险值大于 0 且是 3 的倍数的时候,他会丧失生存的意义,而沉溺于享乐之中,不会再 去经历后面的事件. 那么,有多少种安排经历这 n 个事件的顺序,使得这个人能经历全部 n 个事件? 即有多少种 n 的全排列 A,满足以下条件: 请给出答案 %10000000000037 的结果. Input 第一行一个整数 T,…
不好意思呀!最近一直忙着学习python,竟然忘记更新I春秋里面的题目了(QAQ),我以后会时时刻刻提醒自己要更新 永远爱你们的! ----新宝宝 1:贝斯家族: 解题思路:我相信看见这一题都能够想到使用base解密,只是不知道使用哪个,试一下base64发现得不到结果,再使用base32试一下得到答案: 最后得到答案:flag{erhei_e8934_erUO} 2:方方格格,不断敲击: 解题思路:仔细阅读题目内容,就会发现这个是和电脑键盘有关的,想到我自己曾经在实验吧做过类似的题目,直接跟着…
渐入佳境. # coding: utf-8 import turtle ''' # =================turtle练手== def draw_spiral(my_turtle, line_len): if line_len > 0: my_turtle.forward(line_len) my_turtle.right(70) draw_spiral(my_turtle, line_len-10) my_tur = turtle.Turtle() my_win = turtle.…
谢尔宾斯基三角形(英语:Sierpinski triangle)是一种分形,由波兰数学家谢尔宾斯基在1915年提出,它是一种典型的自相似集.也有的资料将其称之为谢尔宾斯基坟垛. 其生成过程为: 取一个实心的三角形.(多数使用等边三角形) 沿三边中点的连线,将它分成四个小三角形. 去掉中间的那一个小三角形. 对其余三个小三角形重复1. 核心代码: static void SierpinskiTriangle(const Vector3& v1, const Vector3& v2, cons…
前面讲了谢尔宾斯基三角形,和这一节的将把三角形变为正方形,即谢尔宾斯基地毯,它是由瓦茨瓦夫·谢尔宾斯基于1916年提出的一种分形,是自相似集的一种. 谢尔宾斯基地毯的构造与谢尔宾斯基三角形相似,区别仅在于谢尔宾斯基地毯是以正方形而非等边三角形为基础的.将一个实心正方形划分为的9个小正方形,去掉中间的小正方形,再对余下的小正方形重复这一操作便能得到谢尔宾斯基地毯.如下图:       核心代码: static void SierpinskiCarpet(const Vector3& v, Vect…
前面讲了谢尔宾斯基三角形,这一节的将对二维三角形扩展到三维,变成四面体.即将一个正四面体不停地拆分,每个正四面体可以拆分成四个小号的正四面体.由二维转变到三维实现起来麻烦了许多.三维的谢尔宾斯基四面体看上去比谢尔宾斯基三角形更像坟冢. 核心代码: static void SierpinskiTetrahedron(const Vector3* pSrc, Vector3* pDest) { Vector3 v01 = (pSrc[] + pSrc[])*0.5f; Vector3 v02 = (…
本文以使用混沌方法生成若干种谢尔宾斯基相关的分形图形. (1)谢尔宾斯基三角形 给三角形的3个顶点,和一个当前点,然后以以下的方式进行迭代处理: a.随机选择三角形的某一个顶点,计算出它与当前点的中点位置: b.将计算出的中点做为当前点,再重新执行操作a 相关代码如下: class SierpinskiTriangle : public FractalEquation { public: SierpinskiTriangle() { m_StartX = 0.0f; m_StartY = 0.0…
文章首发于我的知乎专栏,原地址:https://zhuanlan.zhihu.com/p/26606208 以前看到过一个问题:谢尔宾斯基三角形能用编程写出来么?该怎么写? - 知乎,在回答里,各方大神用各种语言各种方法实现了一遍,非常精彩.我当时也回答了这个问题,是用H5的Canvas实现的.这在前端技术上没什么难度,主要是算法比较有可玩性,所以当时就手痒了. 谢尔宾斯基三角形是分形图形的一种,大概很多人第一次见到它都是在中学教科书上.它长这样: 我用了两种方法构造它:直接绘制三角形和间接用折…
企业普及版贝斯OA与工作流系统 基于J2EE+JBPM3.x/JBPM4.3+Flex流程设计器+Jquery+授权认证企业普及版贝斯OA与工作流系统 假设对这个课程有兴趣的.能够和我联系.QQ2059055336 课程讲师:伍老师 课程分类:Java 适合人群:高级 课时数量:80课时 用到技术:J2EE.JBPM3.x.JBPM4.3.Jquery.Flex 涉及项目:企业普及版贝斯OA与工作流系统 更新程度:完毕 一.讲师介绍:讲师伍老师拥有丰富的J2EE开发经验.曾担任北京用友软件资深架…
[LOJ#2327]「清华集训 2017」福若格斯 试题描述 小d是4xx9小游戏高手. 有一天,小d发现了一个很经典的小游戏:跳青蛙. 游戏在一个 \(5\) 个格子的棋盘上进行.在游戏的一开始,最左边的两个格子上各有一个向右的青蛙,最右边的两个格子上各有一个向左的青蛙. 每次移动可以选取一个青蛙,向这只青蛙的前方移动一格到空格子中或跳过前方的一个不同朝向的青蛙并移动到空格子中. 为了使你更好地理解这个游戏,我们下发了一个游戏demo作为参考(注意:这个demo中的棋盘大小和题目中并不相同).…
插图工具使用Python内置的turtle模块,为什么叫这个turtle乌龟这个名字呢,可以这样理解,创建一个乌龟,乌龟能前进.后退.左转.右转,乌龟的尾巴朝下,它移动时就会画一条线.并且为了增加乌龟画图的艺术价值,可以改变尾巴宽度和尾巴浸入墨水的颜色. 1.递归绘制螺旋 我们让乌龟以line_len长度前进,然后向右旋转90°,然后缩短line_len长度递归调用draw_spiral函数 import turtle my_turtle = turtle.Turtle() my_win = t…
贝斯家族 @iH<,{bdR2H;i6*Tm,Wx2izpx2!  …
在每一个乐队中都有一个神秘而低调的乐手,在现场演奏中你甚至感觉不到他的存在,但是他又异常重要.即是鼓手打拍的好伙伴,又是吉他手忘乎所以solo时的警报器.没错,这个人就是贝斯手.要是我们做了什么气跑了贝斯手,该怎么办呢,那当然就是拿起自己可怜的吉他来弹低音啦. 从上面的段子,大家可以看出来,低音在负责稳定节拍的同时,也能提示每个乐手正在演奏的音阶和律动.在旋律和节奏的中间,低音几乎在扮演一个灵魂的角色.而在指弹吉他这种独角戏的演奏之中,一首曲子就是由低音部(bass)和高音部两条旋律线组成的.…
混音的目标之一是平衡各个声音的音量.当两个声音占据相同的频率范围时,有时就比较难处理.这是贝司和底鼓之间经常会碰到的情况.很多时候我们会使用压缩(compression)来降低他们的音量.  然而,有些人可能会发现这种效果过于戏剧化.相反,你可能希望简单地降低贝斯和低音鼓共存的特定频率音量,以便在底鼓时你仍然可以听到贝斯演奏.这种情况下,你就需要使用EQ来实现.在FL Studio这个DAW中,你可以通过Fruity Peak Controller实现.  首先,你需要将Peak Control…
题目 [安洵杯 2019]吹着贝斯扫二维码 解压附件,有36个文件和一个压缩包,压缩包带密码和备注 分析 文件类型 随便打开一个不明文件,是jpg图片啊(FF D8 FF) 改一个试试,有一个小块二维码 后面的估计是是二维码碎片,脚本统一改一下 # coding=utf-8 import os #将无后缀的文件加上.jpg dir_list = os.listdir('./') #print(dir_list) for file in dir_list: if '.' not in file:…
定义 递归是一种解决问题的方法,它把一个问题分解为越来越小的子问题,直到问题的规模小到可以被很简单直接解决. 通常为了达到分解问题的效果,递归过程中要引入一个调用自身的函数. 举例 数列求和 def listsum(numlist): if len(numlist) == 1: return numlist[0] else: return numlist[0]+listsum(numlist[1:]) if __name__ == "__main__": print(listsum([…
谢尔宾斯基三角形使用了三路递归算法,从一个大三角形开始,通过连接每一个边的中点,将大三角型分为四个三角形,然后忽略中间的三角形,依次对其余三个三角形执行上述操作. 运行效果: 源代码: 1 import turtle 2 3 4 def draw_triangle(points, color, my_angle): 5 my_angle.fillcolor(color) 6 my_angle.up() 7 my_angle.goto(points[0][0], points[0][1]) 8 m…
对于相对编码器类型轴(包括虚拟轴),可以使用贝福提供的找原点功能块MC_Home.   HomingMode是指机器在往前跑的时候(30单位/s的默认速度),当碰到阻挡,则会有一个布尔值从FALSE改成TRUE,此时认为超过了零点.然后该轴反向运动,一定能捕捉到TRUE改成FALSE,然后就停下,认为当前位置是原点(不一定是0位置,你Position是多少就将当前位置设置为多少)   在虚拟的轴测试中,可以做一个按钮,按下为TRUE,松开为FALSE.当点击HOME之后,该轴的位置马上变成很小的…
首先确认驱动器没有报错(如果驱动器报错,请先解决绝对值编码器的清除多圈数据问题) 报错一般上使能就会报错,没法测试运转,而且不管是用贝福自带的NC功能还是自己写的都会一样的效果   请删除在贝福的EtherCAT目录下的松下的XML文件(可能就是这个XML文件的问题)   然后按照"松下伺服如何与TwinCAT3连接使用1"的说明(只是不放XML文件,重新扫描一遍出来),虽然扫出来的Drive1是问号,但是是能用的.   对于已有的项目,可以删除所有的Devices的东西和Mappin…
该参数是包含六个数字类似于IP地址的字符串形式,例如"1.1.1.2.7.1",如果为空字符串,则默认使用本机的AmsNetID 你可以右击贝福的图标,然后点击About查看当前本机的ID   TC3修改TwinCAT AMS NET地址: 右击任务栏中TwinCAT图标,Router,Change AMS NetId,然后重新输入   TC2修改TwinCAT AMS NET地址: 右键任务栏中TwinCAT图标,选择"Properties". 在控制器及电脑的&…
本节主要演示了使用自定义函数实现电机的运动(梯形曲线和S曲线都有实现),这里的JOG+和JOG-,针对单个关节实现了PTP的运动(跟贝福的MoveAbsolute功能块实现效果一致),在此没有介绍运动控制算法的具体原理,不理解的可以网上搜索梯形曲线和S曲线的文章,并不只是非标自动化需要用到控制电机的PTP运动,比如升降机,电梯,或者凡是需要匀滑启停的电机控制,都逃不过要用到这方面的知识,读者也可以自己测试5次或者7次等其他自定义加速曲线,每一种运动给出的位置,速度,加速度都会有不同的效果.  …
在前面一节,我们简单介绍了通过PLC+HMI实现完整控制松下伺服的上使能-运动,采集位置,速度等功能,这里我们会大量简化用到的贝福功能块(为了更加实用).首先依然是对单个轴的封装,我们之前的做法,例如伺服上使能,使用了MC_Power模块,这个模块的输入和输出引脚都是自己定义的变量,比如是否上电成功我们是靠AxisPowerReady的信号来判断的,如果有两个甚至多个伺服的时候,这样做就很不方便管理了,所有的同类型变量都应该用数组统一管理.   改变之后的上使能,就变成了调用一个模块(我们把Ax…
在前面我们已经学会了使用贝福自带的调试软件完成试运行,接下来是使用TWINCAT PLC实现这个功能,右击PLC添加一个PLC项目   在VISUs上右击添加一个HMI人机界面   目前PLC程序和人机界面都是空的,我们要通过这两个实现我们自定义的点动.首先右击Reference添加TC2_MC2的类库(这个类库是Motion Control的类库)   右击GLVs,添加两个全局变量,注意类型为AXIS_REF(比较特殊的类型,是跟NC轴交互的变量),在TWINCAT2中不太一样,一个AXIS…
首先是用松下伺服自带的软件可以测试运行(驱动器,电机都连接好,然后用USB线连接到松下伺服驱动器的X1口),打开调试软件会自动提示连接到伺服   一般需要对驱动器清除绝对值编码器数据(驱动器可能报错40错误),写入驱动器参数值等等,这里不再详细说明如何改参数之类的(可以参考我对松下伺服驱动器的文档),我把对应的参数文件放到了项目中,这里只演示了传入参数文件   然后就可以使用松下自带的软件测试运行,能够正常运行说明驱动器参数,接线都没有问题.相反如果用伺服自带的软件走不起来,就没有必要用TWIN…
常见的模拟量模块(还有更高端和更低端的,使用方法都一样) EL3054和EL4024(4路模拟量输入和输出模块)   常见的数字量模块(还有更高端和更低端的,使用方法都一样) EL1809和EL2809(16路数字输入和输出模块)   贝福模块的一个优点就是模块化结构(你可以选择要多少个数字输入输出,模拟量输入输出,也可以不要,所以扩展IO会非常方便,只需要多加一片就可以了,一片还可以分为2个,4个,8个,16个点的)   右击项目的IO-Devices,然后Scan(如果Scan不可用,请先把…
这一节我们介绍简单的NC运动(前面所讲的所有内容都是PLC编程和HMI的界面,算是基础知识),这里NC就是控制伺服电机的部分(当然还不是实际的NC轴,是虚拟轴,但是用到的函数都是一样,可以为后面的实际应用做准备),既然用到了贝福的NC功能,就要添加对应的库   首先添加一个让轴上使能的PRG(注意是FBD格式)   在第一个空行后面插入空运算块,然后在中间的???里面输入运算块的名称(NC的函数名,NC的函数就是控制轴运动的函数,无非是上使能,下使能,位置,速度等等运动,跟运动控制卡提供的函数类…
因为使用TwinCAT的人用途不同,重视点就不同.如果用来代替传统PLC+HMI做项目的,很少会需要用到跟高级语言通讯,但是如果是用来做运动控制平台如做机器人运动控制器的,就肯定会用到.不管是否用得上,读者都应该知道贝福能够实现跟大部分高级语言如C++,C#,JAVA等等的通讯,并且非常简单(具体介绍可以自己看PPT,本节演示TwinCAT与C#的几个典型范例)   本质上,ADS通讯就是一种TCP/IP通讯,是没有实时性的,不能作为运动控制的通讯方式从上位直接丢数据.   在官方范例程序的第三…
TwinCAT提供了一系列的执行Windows系统命令的方法 Name 描述 NT_Shutdown 关机操作系统 NT_AbortShutdown 取消关机操作系统命令 NT_Reboot 重启操作系统 NT_GetTime 获取本机系统时间 NT_SetLocalTime 设置本机系统时间 NT_StartProcess 启动一个Windows的应用程序 NT_SetTimeToRTCTime 同步本地系统时钟和PC实时时钟 FB_RegQueryValue 读系统注册表 FB_RegSet…
读写注册表和读写文件一样,里面涉及的输入类型比较复杂,需要参考官方范例 sSubKey是指注册表的路径 sValName是指注册表要写入的名值对的名称 eValType是一个枚举类型(而且不是什么常规的枚举类型,你可以输入eValType.XXX来查看所有的类型,但是实际上只要照抄就行了) cbData就是要写入的数据(LEN(XXX)其中XXX就是字符串类型,我们必须按照一样的格式用LEN方法返回长度,为什么要+1就要问贝福了) pData是要写入数据的指针地址(要跟他一样ADR(XXX),X…
本程序只是在官方范例程序上稍作修改,在官方原有的范例中,演示了多种模式的读写(可以认为CSV文件是比TXT文件需要更多数据量的时候使用,比如记录一个小型的数据库集合)   但是写的比较混乱,甚至没有HMI的界面,读者需要学会快速在程序中找到输入输出,例如TextModeWrite(以文本方式写CSV文件),至少需要定位到触发的BOOL变量,要写入的文件地址和文件夹,要写入的数据这几个变量(其中要写入的数据是字符串类型的数组,且用逗号隔开),你直接打开官方的程序,运行之后也可以在顶部的变量表里直接…