本想在寒假期间写点什么的…无奈域名出了点问题…
导致这一个半月里面网站一直处于无法访问的状态…
想起以前积累的计算几何模板…想差不多可以整理下发出来…
不过充斥着define…以及define的奇怪用法…可以说完全是C语言风格的代码…
总之这是一个基于数组和define而不是类和template的模板…会有人看吗…
如果每段代码都注解出一步步怎么得到的话…工程浩大…
结果心血来潮…给几乎每段代码画了个图片…
蓝色是已知,红色是所求…
画了几个才发现…有些还真难用图片表达啊…
那么就开始吧…
tags: 图片, 心血来潮, 模板 author: ben1222 comments: 6 Comments
最近在看Objective-c
虽说是c语言扩展出来的…可是这里面的对象甚至类本身却是动态的…
查了下貌似这叫反射?
倒是和不少脚本型的语言很像…
了解下语法之类的可以看看这里(这篇东西同时有中文版),Wiki上还有些和C++的对比
一点点看下来,一开始还没什么,感觉只是语法变了下
嗯…#include变成#import
创建类用@interface,还可以继承,不过只能继承一个父类
objective-c的方法名很有特点…并不是完整名称后面跟参数列表…而是两者交织起来…
虽然这样打字可能要多些(没有带提示功能的编辑器的话,很吃力…),但是阅读起来更加明晰,不会出现忘记第几个参数是什么作用的情况了
实现类在@implementation块内写
这里就有些舒服了,方法名直接复制到对应的implementation块中就可以开始写方法的内容了
用C++的时候,要把成员函数的声明复制过来,然后在返回类型和函数名之间加上”类名::”的东西,感觉很麻烦呢…
this变成了self,要调用父类的方法而自身却重载过了这个方法时,可以对super调用方法
用-的是对象的method,用+的是类的method,后者相当于C++的静态成员函数
id类型是万能的对象,就像void*,对id对象可以调用任何方法,只要它的本体有这个方法就可以,没有的话…就会产生异常
看到后面感觉越来越玄乎…难道一个对象里存了一个方法列表,并且方法名和参数类型都有吗?…
事实上就是这样没错…一个对象指针所指的是个这样的结构体(摘自objc.h)
typedef struct objc_object {
struct objc_class* class_pointer;
} *id;
实际对象在这个基础上后面还会跟上它的成员变量…
而这个objc_class呢,则是这样的结构(摘自objc.h)
struct objc_class {
MetaClass class_pointer; /* Pointer to the class’s
[...]
tags: 图片, 心血来潮 author: ben1222 comments: 2 Comments
Project Euler 第292题
Pythagorean Polygons
毕达哥拉斯多边形定义为:
凸多边形,至少3个顶点,没有3个顶点在一条线上,每个顶点坐标都是整数,每条边长都是整数
P(n)表示周长是<=n的毕达哥拉斯多边形的个数
平移的算同一个,旋转镜像缩放什么的不算同一个
求P(120)
下面是我的解题过程:
tags: Project Euler, 图片 author: ben1222 comments: No Comments
现在Project Euler上的最近表现的排名发生了很大改变,不再是看最近25题做出的题数了…而是每题最先做出的20人累计积分排名…每人每10天减1分…
Project Euler 第289题
Eulerian Cycles
圆环阵列…要求一笔画并且不能自相交,只能相切
求6*10的圆环阵列有多少种画法,对10^10取余
下面是我的解题过程:
tags: Project Euler, 图片 author: ben1222 comments: No Comments
Project Euler 第285题
Pythagorean odds
选定一个正整数k,然后随机产生[0,1]上均匀分布的实数2个,a和b
那么当sqrt((k*a+1)^2+(k*b+1)^2)与k相差 0.5以内,则得k分,否则得0分
玩10^5次游戏,分别取k=1,2,…,10^5,那么最后总分的数学期望是多少
下面是我的解题过程:
tags: Project Euler, 图片 author: ben1222 comments: 1 Comment
人工智能选修课…某次讲了遗传算法…
然后就想到了以前看到的一篇文章…
似乎是去年这个时候的…
讲的是某人用遗传算法写了个程序…用50个半透明多边形去近似蒙娜丽莎这幅图…
当时觉得很神奇…
对遗传算法稍微了解了一点后又觉得这个一点点进化的图片很费解…
因为图上的多边形在慢慢增多…
而我本以为遗传算法是固定长度的DNA来进行运算的…
而多边形数量的变化以及顶点数的变化让我感觉有些费解…这是怎么表示又是怎么进行繁衍的呢…
一年过去了…借此机会重新回顾了一下…
仔细看了看原文中的文字…
The procedure of the program is quite simple:
0) Setup a random DNA string (application start)
1) Copy the current DNA sequence and mutate it slightly
2) Use the new DNA to render polygons onto a canvas
3) Compare the canvas to the source image
4) If the new painting looks more like the source image than the previous [...]
tags: vb, 图片 author: ben1222 comments: 5 Comments